Một cách chính xác, thuật ngữ “Linux” được sử dụng để chỉ Nhân Linux, nhưngtên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unixđược tạo ra bởi việc đóng
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Hà Nội 2013
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
1 Lâm Văn Thư
2 Nguyễn Văn Quân
3 Nguyễn Tiến Trung
4 Hà Trọng Tấn
5 Trần Văn Thịnh
Hà Nội, Ngày … Tháng … Năm ……
Trang 3M C L C ỤC LỤC ỤC LỤC
LỜI MỞ ĐẦU 1
I Khái niệm cơ bản 2
II Phân vùng đĩa cứng 3
1) Giới thiệu chung 3
2) Tên phần chia hệ thống 3
3) Hệ thống tập tin Ext2 4
a) Giới thiệu 4
b) Cấu trúc trên đĩa 5
d) Cấu trúc thư mục 7
e) Quản trị hệ thống file ext2 7
f) Sự phân mảnh của hệ thống file 8
4) Hệ thống tập tin Ext3 8
5) Hệ thống tập tin Ext4 11
a) Giới thiệu 11
b) Khả năng nâng cấp mở rộng 12
III Sự cấp phát bộ nhớ 17
1) Cấp phát lưu động 17
2) Cấp phát liên kết link 19
KẾT LUẬN 20
Trang 4Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều
Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux
Một cách chính xác, thuật ngữ “Linux” được sử dụng để chỉ Nhân Linux, nhưngtên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unixđược tạo ra bởi việc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũngnhư là các bản phân phối Linux Thực tế thì đó là tập hợp một số lượng lớn các phần mềmnhư máy chủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trườnglàm việc desktop như GNOME và KDE, và các ứng dụng thích hợp cho công việc vănphòng như OpenOffice hay LibreOffice
Khởi đầu, Linux được phát triển cho dòng vi xử lý 386, hiện tại hệ điều hành này
hỗ trợ một số lượng lớn các kiến trúc vi xử lý, và được sử dụng trong nhiều ứng dụng khácnhau từ máy tính cá nhân cho tới các siêu máy tính và các thiết bị nhúng như là các máyđiện thoại di động
Ban đầu, Linux được phát triển và sử dụng bởi những người say mê Tuy nhiên,hiện nay Linux đã có được sự hỗ trợ bởi các công ty lớn như IBM và HewlettPackard,đồng thời nó cũng bắt kịp được các phiên bản Unix độc quyền và thậm chí là một tháchthức đối với sự thống trị của Microsoft Windows trong một số lĩnh vực Sở dĩ Linux đạtđược những thành công một cách nhanh chóng là nhờ vào các đặc tính nổi bật so với các
hệ thống khác: chi phí phần cứng thấp, tốc độ cao (khi so sánh với các phiên bản Unix độcquyền) và khả năng bảo mật tốt, độ tin cậy cao (khi so sánh với Windows) cũng như là cácđặc điểm về giá thành rẻ, không bị phụ thuộc vào nhà cung cấp Một đặc tính nổi trội của
nó là được phát triển bởi một mô hình phát triển phần mềm nguồn mở hiệu quả
Tuy nhiên, hiện tại số lượng phần cứng được hỗ trợ bởi Linux vẫn còn rất khiêmtốn so với Windows Vì các trình điều khiển thiết bị tương thích với Windows nhiều hơn làLinux Mong rằng trong tương lai linux sẽ phát triển mạnh hơn
Trang 5I Khái niệm cơ bản.
- Tiến trình là một chương trình đang chạy!
Bộ nhớ là một tài nguyên quan trọng của hệ thống Các chương trình và dữ liệu làmviệc đều nằm trên bộ nhớ
Các hệ điều hành đa nhiệm ngày nay, tại một thời điểm tồn tại nhiều chương trìnhcùng hoạt được lưu trữ trong bộ nhớ Mỗi bộ nhớ vật lý thường có kích thước hạn chế nênhiện tượng đầy bộ nhớ xảy ra Khi có một chương trình hay dữ liệu nào đó có yêu cầu nạpvào bộ nhớ để làm việc thì đòi hỏi hệ thống phải cấp phát một vùng nhớ để làm việc Yêucầu đó đòi hỏi hệ thống phải có cơ chế quản lý bộ nhớ sao cho các chương trình (dữ liệu)không sử dụng nữa thì bị đưa ra ngoài, còn các chương trình (dữ liệu ) cần làm việc sẽđược đưa vào bộ nhớ để làm việc Ngoài ra bộ nhớ còn có tác động khá lớn lên độ phứctập của các giải thuật trong các chương trình (ảnh hưởng đến thời gian thực hiện giảithuật, độ lớn của giải thuật, kích thước của chương trình) Tất cả các điều đó đòi hỏi hệthống phải có cơ chế quản lý bộ nhớ hiệu quả Vấn đề đó được hệ điều hành đảm nhiệm.Vấn đề quản lý bộ nhớ trở nên phức tập với các yêu cầu đỏi hỏi đối với hệ thống là:
- Do bộ nhớ là tài nguyên chung của hệ thống do đó đòi hỏi phải tiết kiệm bộ nhớ
- Phải tận dụng tối đa bộ nhớ cho phép Vì các chương trình thường có kích thướclớn hơn kích thước của bộ nhớ
- Phải đảm bảo được tính đúng đắn trong các phép xử lý
- Phải đảm bảo được tính phân quyền và tính bảo mật của các chương trình
- Phải đảm bảo hệ thống hoạt động hợp lý
Trang 6II Phân vùng đĩa cứng.
1) Giới thiệu chung
Với sự hình thành và phát triển của hệ điều hành Linux, giờ đây chúng ta có rấtnhiều cách trong việc chọn lựa các hệ thống file (file system) cho từng loại ứng dụng
Hệ thống tập tin Linux được tổ chức theo dạng cây Có một vị trí khởi điểm, gọi làroot (gốc) Bất kỳ một hệ thống Unix/Linux nào cũng có một thư mục đặc biệt gọi là thưmục gốc (root directory) kí hiệu là dấu slash (“/”) Đây là điểm bắt đầu để gắn (mountpoint) tất cả các phần tử còn lại như hệ thống disks, partitions, CD ROM… vào hệ thốngLinux/Unix Tất cả các thư mục và tập tin khác, kể cả các tập tin hệ thống và các thư mục
hệ thống cũng chỉ là cấp con của root Khi hệ thống Linux/Unix khởi động, thông qua tiếntrình init – nó sẽ tự động mount (gắn) các tập tin hệ thống và thư mục hệ thống vào root(/) Trong phần này chúng tôi muốn giới thiệu các hệ thống file tiên tiến được sử dụngtrong Linux như Ext2, Ext3, Ext4 có độ tin cậy cao và có khả năng ghi nhớ quá trình thaotác trên dữ liệu (journaling)
2) Tên phần chia hệ thống
Linux tham chiếu đến các phần chia trên đĩa cứng sử dụng một sự kết hợp của cácchữ cái và các con số; các phần chia được đặt tên một cách khá linh hoạt và mang thêmnhiều thông tin hơn so với các phương pháp sử dụng bởi các hệ điều hành khác Mọi phầnchia trong Red Hat Linux đều tham chiếu qua các tập tin, với tên tập tin được đặt theođịnh dạng sau: /dev/xxyN
Trong đó: /dev/ là tên của thư mục chứa tất cả các tập tin thiết bị Do các phần chianằm trên đĩa cứng, và đĩa cứng là một loại thiết bị, Vì vậy, tất cả các tập tin đại diện chocác phần chia sẽ nằm trong thư mục /dev/
XX Hai chữ cái đầu tiên của tên phần chia chỉ ra kiểu của thiết bị mà phần chianằm trên đó Tên của một số thiết bị thông thường bao gồm: HD ổ đĩa cứng IDE; SD ổ đĩacứng SCSI; SR ổ đĩa CDROM SCSI; FD ổ đĩa mềm; CDROM liên kết tới tập tin thiết bịCDROM; Floppy liên kết tới tập tin thiết bị ổ đĩa mềm
Y: Chữ cái này xác định thiết bị mà phần chia nằm trên đó Trong đó:
A – là ổ đĩa cứng thứ nhất, master
Trang 7B – là ổ đĩa cứng thứ nhất, slave
C – là ổ đĩa cứng thứ hai, master
D – là ổ đĩa cứng thứ hai, slave
Thí dụ: /dev/hda là ổ đĩa IDE thứ nhất; /dev/sdb là ổ đĩa SCSI thứ hai
N: Số cuối cùng biểu thị cho phần chia Các số từ 1 đến 4 xác định bốn phần chiađầu tiên (primary hay extended) Các phần chia logic được đánh số bắt đầu từ 5
Hệ thống file Ext2 được giới thiệu vào đầu năm 1993 và được thiết kế riêng cho Linux
Nó có nhiều tính năng tăng cường để khắc phục các hạn chế của các hệ thống file khác
Tính năng Minix EXT EXT 2
Kích thước hệ thống file lớn
nhất
64 MB 2 GB 4 TB
Kích thước file lớn nhất 64 MB 2 GB 2 GB
Chiều dài tối đa tên file 30 ký tự 255 ký tự 255 ký tự
Kích thước block tuỳ biến Không Không Có
Những đặc trưng của hệ thống tập tin Ext2 chuẩn:
1) Hệ thống tập tin Ext2 hỗ trợ các kiểu tập tin Unix chuẩn: các tập tin thôngthường, các tập tin thiết bị đặc biệt và các tập tin liên kết
Trang 8Hệ thống tập tin Ext2 có khả năng quản lý các hệ thống tập tin trên những phânvùng kích cỡ rất lớn Trong khi mã nhân (kernel) gốc giới hạn kích cỡ hệ thống tập tin lớnnhất là 2GB, nghiên cứu gần đây trong lớp VFS đã tăng lên đến giới hạn là 4TB Vì vậyngày nay nó có thể sử dụng các đĩa dung lượng lớn mà không cần tạo nhiều phân vùng.
2) Hệ thống tập tin Ext2 cung cấp tên tập tin dài Đây là khả năng của Linux màtrên các hệ thống UNIX chuẩn không hề cung cấp Tối đa một tên tập tin là 255 kí tự và
có thể có khoảng trắng Nghiên cứu gần đây trên lớp VFS, giới hạn này đã tăng lên 4TB
Vì thế, nó có thể sử dụng các đĩa kích thước rất lớn mà không cần tạo nhiều phân vùng
3) Hệ thống tập tin Ext2 dự trữ một vài block cho super user (root) Thông thường,5% các block này được dự trữ Điều này cho phép người quản lí phục hồi dễ dàng từ quátrình người dùng làm đầy các hệ thống tập tin
4) Hệ thống tập tin Ext2 cho phép truy xuất đến các hệ thống khác như FAT,FAT32, MSDOS trên Windows 9.x và DOS một cách dễ dàng Ngược lại, chúng ta có thểcũng có thể từ các hệ thống FAT, NTFS, BeOS, OS/2, MacOS truy xuất đến Ext2 thôngqua các trình tiện ích như LTOOLS Và còn nhiều khả năng khác như có thể dễ dàng thêmvào các khả năng cho Ext2
b) Cấu trúc trên đĩa
Tất cả các cấu trúc dữ liệu được đặt kích cỡ dựa trên kích thước một khối(block) Kích thước của khối phụ thuộc vào kích thước của hệ thống tập tin Thí dụ, đốivới đĩa mềm, kích thước khối là 1KB (2 sectors), kích thước khối trên phần chia 10GB là4KB hay 8KB
Hệ thống tập tin được chia thành những nhóm khối (block group), số lượng cácnhóm khối cũng phụ thuộc vào kích thước của hệ thống tập tin Thí dụ, đĩa mềm chỉ chứamột nhóm khối; còn một phần chia 10GB có thể được chia thành 30 nhóm khối
Tại đầu của mỗi nhóm khối có chứa các thông tin xác định vị trí, số khối và củacác thông tin mô tả trạng thái hệ thống tập tin hiện hành, bao gồm các thông tin sau:
- Superblock: Chứa các thông tin cơ bản nhất và các thuộc tính của hệ thống tập
tin, thí dụ như tổng số inode, tổng số khối, trạng thái hệ thống tập tin …
- Group descriptors: Là một mảng cấu trúc, mỗi cấu trúc mô tả một nhóm khối, vị
trí bảng inode của nó, bản đồ khối và inode …
- Block bitmap: Block Bitmap được thường đặt tại khối đầu tiên của nhóm khối.
Mỗi bit đại diện cho trạng thái hiện hành của khối trong nhóm khối đó; trong đó, giá trị 1
Trang 9có nghĩa là khối đang được sử dụng và 0 là chưa được sử dụng Khối đầu tiên của nhómkhối này được đại diện bởi bit 0 của byte 0, khối thứ 2 được đại diện bởi bit 1 của byte 0,khối thứ 8 được đại diện bởi bit 7 (bit cao nhất) của byte 0, trong khi khối thứ 9 được đạidiện bởi bit 0 (bit thấp nhất) của byte 1.
- Inode bitmap: Inode Bitmap có chức năng tương tự như block bitmap, mỗi bit
đại diện cho một inode trong bảng inode (inode table) Mỗi một nhóm khối có một inodebitmap
- Inode table: Bảng inode được sử dụng để lưu vết tất cả các tập tin; vị trí, kích
thước, kiểu và các quyền truy nhâp của tập tin đều được lưu trữ trong các inode Tên tậptin không được lưu trữ trong inode do trong bảng inode tất cả các tập tin đều được thamchiếu bởi số inode (inode number :Số inode là một chỉ số trong bảng inode chỉ tới một cấutrúc inode) Mỗi một nhóm khối có chứa một bảng inode
Mỗi inode có chứa thông tin về một tập tin vật lý riêng rẽ trên hệ thống Một tậptin có thể là một thư mục, một socket, một buffer, block device, character device,symbolic link , tập tin thường Vì vậy inode có thể được xem như là một khối thông tin cóliên quan đến một mục từ, mô tả vị trí của nó trên đĩa, kích thước và chủ nhân của nó
- Data block: Được sử dụng để lưu trữ nội dung của các tập tin, bao gồm danh
sách các thư mục, các thuộc tính mở rộng, các symbolic link …
c ) Cấu trúc của hệ thống tập tin Ext2
- Inode
Mỗi tập tin được đại diện bởi một cấu trúc được gọi là một inode Inode là mộtbảng có kích thước cố định được sử dụng để lưu trữ tất cả các thông tin về một tập tin, vàmỗi tập tin chỉ có một inode duy nhất Những thông tin này bao gồm: chủ nhân của tập tin,
Trang 10thời điểm thay đổi nội dung tập tin, thời gian tập tin được truy nhập sau cùng, kích thước,các quyền trên tập tin, số lượng tập tin liên kết v.v…
Địa chỉ của các khối dữ liệu đã cấp phát cho một tập tin được lưu giữ trong inodecủa nó Inode có chứa một tập hợp các con trỏ Những con trỏ này trỏ tới các khối dữ liệucủa tập tin 10 con trỏ đầu tiên, được tìm nạp từ đĩa tới bộ nhớ chính khi tập tin được mở.Đối với tập tin lớn hơn, con trỏ tiếp theo trong inode sẽ chỉ đến một khối trên đĩa, đượcgọi là single indirect block Khối này có chứa các địa chỉ dữ liệu (khối) bổ sung Nếu vẫnchưa đủ, con trỏ thứ 12 trong trong inode trỏ tới double indirect block, khối này có chứađịa chỉ của khối có chứa danh sách các single indirect block Mỗi một single indirect blocktrỏ tới hàng trăm khối dữ liệu Nếu vẫn không đủ, một triple indirect block cũng có thểđược sử dụng
e) Quản trị hệ thống file ext2
Filesystem caching: Nhằm tăng hiệu suất của toàn hệ thống file ext2, cache được
dùng để lưu giữ các dữ liệu được dùng thường xuyên Thông tin của filesystem đượccache trong bộ nhớ, đôi khi được tham khảo thới như là một bộ đệm đĩa, bởi bì việc truycập vào bộ nhớ thì nhanh hơn nhiều so với các đĩa vật lý Cả hai quá trình đọc và ghi điềuđược cache dữ liệu trên RAM Hệ thống buffers đĩa càng lớn thì filesystem đáp ứng càngnhanh cho các thao tác đọc ghi Do RAM là bộ nhớ tạm thời, buffer sẽ được ghi vào đĩakhi máy hoạt động, hay khi filesystem được unmount
Lệnh sync có thể dùng để ép kernel ghi tất cả các buffers vào các file trên đĩa Lệnhnày có thể sử dụng không cần tham số
Trang 11Vd: Với lý do này có thể giải thích vì sao khi chép file vào đĩa mềm ta thấy hệthống chạy rất nhanh tuy nhiên lúc này thực sự file chưa được ghi vào đĩa mềm nếu để ýthì bạn sẽ thấy khoảng 5 giây sau đèn ổ mềm mới bắt đầu sáng Nếu trước đó ta tưởng là
đã chép xong file mà rút đĩa mềm ra thì sẽ không có file nào được ghi vào đĩa cả
f) Sự phân mảnh của hệ thống file
Hệ thống ext2 được thiết kế nhằm hạn chế tối thiểu sự phân mảnh nên ta khôngcần phải defragment hệ thống file ext2
Nguyên nhân gây ra sự phân mảnh của file system là việc ghi file nhiều lần trên ổđĩa Trong đó các file làm bộ nhớ mở rộng của hệ thống trên đĩa là có nguy cơ bị phânmảnh nhiều nhất
Đối với các hệ điều hành và MS Winf dows, hệ thống bộ nhớ mở rộng này nằmtrên cùng một partition chính của hệ thống thông qua file pagefile.sys còn trong Linux thì
hệ thống bộ nhớ mở rộng này được cho ra một partition riêng nên hạn chế rất nhiều sựphân mảnh
4) Hệ thống tập tin Ext3
Được xây dựng dựa trên cơ sở của hệ thống file chuẩn ext2 mà Linux đang sửdụng, ext3 đưa vào thêm chức năng mới vô cùng quan trọng, journaling file system, giúpthao tác dữ liệu an toàn hơn
Khi hệ điều hành bị tắt bất thình lình (mất điện, lỗi phần mềm, v.v ), trong hệthống file xuất hiện lỗi do file đang ghi dở, địa chỉ chưa được cập nhật… Nếu hệ thốngfile đang dùng không thuộc loại hệ thống file nhật ký (ext2…), khi khởi động lại, hệ điềuhành sẽ phát hiện được lần tắt bị lỗi (unclean shutdown) trước đó và tự động dùng phần
mềm fsck (file system check) để soát và sửa lỗi Nếu ổ cứng lớn, quá trình chạy fsck sẽ
khá lâu và nếu lỗi nặng mà fsck không sửa được thì nó sẽ báo cho hệ điều hành khởi độngvào chế độ single user mode để người dùng sửa
Hệ thống file nhật ký tránh việc hỏng hệ thống file bằng cách ghi một nhật ký Nhật
ký là một file riêng ghi lại mọi thay đổi của hệ thống file vào một vùng đệm (thay Vì ghithẳng vào hệ thống file trên ổ cứng) Sau từng khoảng thời gian định trước, những thayđổi đó được thực hiện chính thức vào hệ thống file Nếu giữa khoảng thời gian đó, hệthống bị tắt đột ngột, file nhật ký sẽ được dùng để khôi phục lại các thông tin chưa lưu vàtránh làm hỏng metadata của hệ thống file