Khi cần ghi nội dung của một file vào đĩa hoặc khi cần đọc nội dung của một file trên đĩa hệ điều hành phải dựa vào bảng FAT, nếu bảng FAT bị hỏng thì hệ điều hành không thể ghi/đọc cá
Trang 1TRƯỜNG HỌC VIỆN KĨ THẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN MÔN: HỆ ĐIỀU HÀNH
ĐỀ TÀI Nghiên cứu cấu trúc và cơ chế làm việc của hệ thống quản lý file
FAT 32
Giáo viên giảng dạy:
Nguyễn Thanh Tùng Sinh viên thực hiện: Nguyễn Thắng Thinh
Lớp: Tin16D
Trang 2Báo cáo Bài Tập Lớn Môn : Hệ Điều Hành
Đề tài : Nghiên cứu cấu trúc và cơ chế làm việc của hệ thống quản
lý file FAT 32
A Hệ thống FAT 32
I Hệ thống File (File system)
Các dạng thức hệ thống file định nghĩa cách mà dữ liệu file được lưu trữ trên thiết bị lưu trữ và sự tác động của hệ thống file đến các file Một dạng thức hệ thống file cũng có thể đưa ra các giới hạn về kích thước của các file và các thiết bị lưu trữ mà hệ thống file hỗ trợ Một vài hệ thống file hỗ trợ cho cả các file lớn hoặc nhỏ, hoặc cả các đĩa lớn và nhỏ
Một hệ thống file thường bao gồm các thành phần:
Sector khởi động (Boot sector),
Bảng định vị file (FAT: File Allocation Table),
Bảng thư mục gốc (Root Directory),
Một tập các file các thư mục và các công cụ quản lý các thành phần này
Các thành phần này có thể có cấu trúc hoặc phương thức
tổ chức khác nhau trên các dạng thức hệ thống file khác nhau Người ta thường dùng tên của FAT trong hệ thống file để gọi tên của hệ thống file đó Có các hệ thống FAT như: FAT 12, FAT 16, FAT 32, NTFS…
Trang 3II Giới thiệu về bảng FAT
Hệ điều hành lưu trữ tệp trong vùng chứa tệp Vùng chứa tệp nằm sau thư mục gốc và chiếm toàn bộ không gian còn lại của Volume( Volume Boot Sector) Vùng chứa tệp được coi là tập
hợ các Cluster Cluster là đơn vị lưu trữ thông tin nhỏ nhất mà
hệ điều hành dung để lưu trữ tệp Các Cluster được đánh số thứ
tự bắt đầu từ 2 và tăng dần đến hết Volume
Bảng FAT nằm trong ngay sau cung khởi động ( Volume Boot Sector) Mỗi Volume thường có hai bảng FAT 1 và FAT 2, nội dung hai bảng này giống hệt nhau
Bảng FAT được dung để quản lý các Cluster Bảng FAT chứa các lối vào ( entry) Kích thước của một nối vào có thể là 12, 16 hoặc 32 bit, tùy thuộc vào kích thước của volume và cách tổ chức hệ tệp Hai lối vào đầu tiên trong bảng FAT để chỉ ra dạng
tổ chức của đĩa Số lượng lối vào còn lại đúng bằng số lượng các cluster Các lối vào này cũng được đánh số thứ tự bắt đầu từ
2 và tăng dần đến tận lối vào cuối cùng trong bảng FAT Mỗi một lối vào, bắt đầu từ lối vào số 2, chứa một thông tin về trạng thái của cluster có số thứ tự tương ứng
Bảng FAT đóng vai trò một bản đồ về trạng thái các cluster
Trang 4 Thông tin về trạng thái của Cluster được thể hiện dưới dạng mã nhị phân sau:
Nội dung của lối
vào (hexadecimal)
Trạng thái của Cluster tương ứng
(0)000 Cluster rỗng (F)FF0 – (F)FF6 Cluster dự phòng (F)FF7 Cluster hỏng (F)FF8 – (F) FFF Cluster cuối cùng (X)XXX Cluster tương ứng với lối vào này
đang chứa tệp Con số (X)XXX xác định địa chỉ cluster tiếp theo của tệp
Từ bảng FAT có thể tìm ra được một chuỗi danh sách các
cluster thuộc một tệp nào đó, nhưng còn thiếu thông tin về cluster đầu tiên của tệp thông tin này gắn với một tệp cụ thể và nằm ở thư mục
Khi cần ghi nội dung của một file vào đĩa hoặc khi cần đọc nội dung của một file trên đĩa hệ điều hành phải dựa vào bảng FAT, nếu bảng FAT bị hỏng thì hệ điều hành không thể ghi/đọc các file trên đĩa Do đó, hệ điều hành DOS tạo ra hai bảng FAT hoàn toàn giống nhau là FAT1 và FAT2, DOS sử dụng FAT1
và dự phòng FAT2, nếu FAT1 bị hỏng thì DOS sẽ sử dụng FAT2 để khôi phục lại FAT1 Điều không đúng với hệ thống file FAT32, FAT32 vẫn tạo ra 2 FAT như của DOS, nhưng nếu FAT1 bị hỏng thì hệ điều hành sẽ chuyển sang sử dụng FAT2, sau đó mới khôi phục FAT1, và ngược lại
Trang 5 Hệ điều hành DOS tổ chức cấp phát động các cluster cho các file trên đĩa, sau mỗi thao tác cấp phát/ thu hồi cluster thì hệ điều hành phải cập nhật lại nội dung cho cả FAT1 và FAT2 Có thể hệ điều hành chỉ thực hiện cấp phát động cluster cho các file
dữ liệu (có kích thước thay đổi), còn đối với các file chương trình, file thư viện, file liên kết động, … (có kích thước không thay đổi) thì hệ điều hành sẽ thực hiện cấp tĩnh cluster cho nó
Bảng FAT bao gồm nhiều phần tử (điểm nhập/ mục vào), các phần tử được đánh địa chỉ bắt đầu từ 0 để phân biệt, địa chỉ cluster cũng có thể gọi là số hiệu của cluster Giá trị dữ liệu tại một phần tử trong bảng FAT cho biết trạng thái của một cluster tương ứng trên vùng dữ liệu Ví dụ, phần tử thứ 7 trong bảng FAT chứa giá trị 000h, giá trị này cho biết cluster thứ 7 trên vùng dữ liệu còn trống, có thể dùng để cấp phát cho một file Phần tử thứ 5 trong bảng FAT chứa giá trị FF7h, giá trị này cho biết cluster thứ 5 trên vùng dữ liệu bị bad, không thể cấp phát được, …
Trong bảng FAT, hai phần tử đầu tiên (00 và 01) không dùng cho việc theo dõi trạng thái cluster và ghi nhận bảng đồ cấp phát file, mà nó được sử dụng để chứa một giá trị nhận biết khuôn dạng đĩa, được gọi là byte định danh (byte ID) của đĩa, đây là byte đầu tiên của bảng FAT Đối với đĩa cứng thì byte ID
= F8h
Trang 6 Như vậy để đọc được nội dung của một file trên đĩa thì trước hết hệ điều hành phải tìm được dãy các cluster chứa nội dung của một file Nhưng bảng FAT chỉ cho biết số hiệu các cluster từ cluster thứ hai đến cluster cuối cùng trong dãy nói trên Cluster đầu tiên trong dãy các
cluster chứa nội dung của một file trên đĩa được tìm thấy trong bảng thư mục gốc
Để thấy được cách mà hệ điều hành DOS dùng bảng FAT để quản lý việc lưu trữ các file trên đĩa cũng như theo dõi trạng thái các cluster trên vùng dữ liệu, ta xem hình minh hoạ sau đây
Hình (a) ở trên cho thấy: có hai file, FileA và FileB, FileA có kích thước vừa đủ 4 cluster và được chia thành 4 block, FileB có kích thước nhỏ hơn 4 cluster cũng được chia thành 4 block, trong đó block B 4 mặc
dù chưa đủ một cluster nhưng vẫn được chứa vào một cluster Tức là, hệ điều hành cũng phải dùng đủ 8 cluster để lưu trữ nội dung của hai file FileA va FileB vào đĩa (hình b)
Đĩa logic và các cluster
A 1
4 5
B 1
6
A 3
7
8
B 2
9
A 2
10
x
11
B 3
12
x
13
A 4
14
B 4
15
00 8
0 1
00
2 00
3
10
4
00
5
9
6
14
7
12
9
7
10
FF7 11
15
12
FF7 13
FFF 15
FFF 15
Các entry ở đầu bảng FAT
A 1 A 2 A 3 A 4
B 1 B 2 B 3 B 4
Các block của FileA & FileB
(a)
(c) (b)
Hình 4.10: Các file FileA và FileB (a) được lưu trên các cluster
của đĩa logic (b) và sơ đồ định vị của nó trên bảng FAT (c)
Từ bảng thư mục gốc trỏ đến
Trang 7Đoạn FAT trong hình (c) ở trên cho biết các thông tin sau đây:
Các cluster bị bad, không thể sử dụng: cluster 11 và cluster 13
Các cluster còn trống, chưa cấp phát: cluster 2, cluster 3, cluster 5, cluster 8
FileA được lưu tại các cluster: 4, 10, 7, 14 (chứa block
cuối cùng)
FileB được lưu tại các cluster: 6, 9, 12, 15 (chứa block
cuối cùng)
Như vậy bảng thư mục gốc cho biết cluster đầu tiên chứa FileA là cluster 4, phần tử thứ 4 trong bảng FAT chứa giá trị 10, điều này chứng
tỏ cluster 10 là cluster tiếp theo chứa nội dụng FileA, phần tử thứ 10 trong bảng FAT chứa giá trị 7, điều này chứng tỏ cluster 7 là cluster tiếp theo chứa nội dụng FileA, phần tử thứ 7 trong bảng FAT chứa giá trị FFFh, điều này chứng tỏ cluster 7 là cluster chứa block cuối cùng của FileA
Các cluster chứa nội dung của một file có thể không liên tiếp nhau, nhưng nó thường nằm rải rác trong một phạm vi hẹp nào đó trên đĩa Điều này giúp hệ điều hành đọc file được nhanh hơn nhờ tiết kiệm được thời gian duyệt và đọc qua các byte từ đầu đến cuối bảng FAT để dò tìm dãy các cluster chứa nội dung của file Mặt khác, việc phân bố tập trung các cluster của một file rất phù hợp với các thuật toán đọc đĩa của hệ điều hành Đối với các file dữ liệu, sau một thời gian kích thước của nó có thể tăng lên, hệ điều hành phải cấp phát thêm các cluster cho nó, các cluster mới này có thể nằm tại các vị trí tách xa các cluster trước đó, dẫn đến các cluster chứa nội dung của một file phân bố rải rác khắp bề mặt đĩa, điều
Trang 8này sẽ làm chậm tốc độ đọc file của hệ điều hành Các file dữ liệu bị mở, thay đổi, ghi và đóng lại nhiều lần cũng có thể dẫn đến hiện tượng trên Trên đĩa có thể xuất hiện hiện tượng có nhiều file bị phân bố rải rác khắc
bề mặt đĩa, hiện tượng này được gọi là hiện tượng đĩa bị phân mảnh (fragmentary) Các đĩa bị phân mảnh sẽ làm cho tốc độ đọc file trên nó chậm đi rất nhiều Trong trường hợp này người sử dụng phải thực hiện việc sắp xếp lại các cluster trên đĩa, để các cluster chứa nội dung của một file của tất cả các file trên đĩa được phân bố tập trung hơn, thao tác này được gọi là chống phân mảnh cho đĩa Hệ điều hành DOS cung cấp nhiều công cụ để người sử dụng thực hiện việc chống phân mảnh cho đĩa cả ở mức ứng dụng và mức lập trình
III Hệ thống FAT 32
1 Giới thiệu
Được giới thiệu trong phiên bản Windows 95 Service Pack 2 (OSR 2), được xem là phiên bản mở rộng của FAT16 Do sử dụng không gian địa chỉ 32 bit nên FAT32 hỗ trợ nhiều cluster trên một partition hơn, do vậy không gian đĩa cứng được tận dụng nhiều hơn Ngoài ra với khả năng hỗ trợ kích thước của phân vùng từ 2GB lên 2TB và chiều dài tối đa của tên tập tin được mở rộng đến 255 ký tự đã làm cho FAT16 nhanh chóng bị lãng quên
Hệ thống FAT32 làm việc đúng theo hệ thống FAT nói chung, chỉ khác ở không gian địa chỉ
Trang 92 Đặc điểm
Ta có bảng thông tin về FAT 32:
Tên đầy đủ (Phiên bản 32-bit) Giới thiệu bởi tháng 8 1996 (Windows 95 OSR2) Partition identifier 0x0B, 0x0C (MBR)
EBD0A0A2-B9E5-4433 -87C0-68B6B72699C7(GPT)
Định vị tập tin Danh sách liên kết
Kích thước tập tin tối đa 4 GiB
Số lượng tối đa các tập tin 268.435.437
Độ dài tên tập tin tối đa 8.3 hoặc 255 ký tự tùy theo hệ điều
hành Kích thước phân vùng tối đa 2 TiB
Hệ thống file FAT32 được định nghĩa dựa trên các hệ thống file FAT Trong thực tế FAT32 sử dụng chỉ sử dụng 28 bít, thay vì 32 bít, để định danh các cluster trên đĩa, vì đã dành riêng 4 bít cao cho mục đích khác Kích thước của 1 cluster trên
hệ thống FAT32 có thể lên đến 32Kb, nên theo lý thuyết thì
Trang 10FAT32 có thể quản lý đến 8Tb dung lượng partition/đĩa Nhưng trong thực tế windows 2000 chỉ dùng FAT32 trên các partition/đĩa có kích thước nhỏ hơn 32Gb
Sau đây là một số thuận lợi của FAT32 so với FAT12 và FAT16:
o Số phần tử/ mục vào (entry) trên thư mục gốc không có giới hạn
o Thư mục gốc không cần lưu trữ tại một vị trí xác định
trước
o Kích thước của một cluster có thể lên đến 32Kb nên nó
có thể quản lý được 8Tb, nhưng trong thức tế windows
2000 chỉ dùng FAT32 để quản lý có partition/đĩa có kích thước nhỏ hơn 32Mb
o Chỉ dùng 28 bít để định danh các cluster, dùng 4 bít cao cho mục đích khác
o Lưu trữ một bản copy của boot sector
o Có hai bảng FAT trên một volume nhưng cả hai đều có vai trò như nhau
o Kích thước của file có thể lên đến 4Gb
Trang 11 Hệ thống file FAT32 không được các hệ điều hành sử dụng để định dạng đĩa mềm
Hệ thống file FAT32 cho phép có tới 6 sector trên một cluster, nên nó có thể quản lý được một không gian đĩa lớn hơn nhiều lần (232
cluster * 6 sector/1 cluster * 512 byte/1 sector)
Sector (cung từ): Các track được chia thành các khối có
kích thước cố định bằng nhau và được đánh địa chỉ, các khối này được gọi là các sector Các sector được đánh địa chỉ bắt đầu từ 1 trên mỗi track, như vậy trên đĩa sẽ tồn tại nhiều sector có cùng số hiệu địa chỉ, cách đánh địa chỉ này gây khó khăn nhiều người lập trình
Kích thước của sector, số byte dữ liệu có thể chứa trên một sector, phụ thuộc vào phần cứng Trên các họ processor x86, kích thước sector trên đĩa cứng thường là 512 byte
Các sector được đánh địa chỉ theo kiểu trên được gọi là sector vật lý Trong thực tế lập trình các hệ điều hành chỉ sử dụng sector logic, theo đó thì địa chỉ các sector được đánh bắt đầu từ 0 kể từ track 0 của mặt 0 trên đĩa thứ nhất Như vậy trên đĩa không có các sector có cùng số hiệu địa chỉ Bảng sau đây cho thấy sự tương ứng giữa các sector vật lý với sector logic trên một đĩa mềm:
Trang 12Mặt đĩa Track Sect
or
Sector logic
Thông tin lưu trữ
Boot record
0 0 2 - 5 1 - 4 FAT
0 0 6 - 9 5 - 8 Thư mục gốc
1 0 1 - 3 9 - 11 Thư mục gốc
1 0 4 - 9 12 - 17 Dữ liệu
0 1 1 - 9 18 - 26 Dữ liệu
Bảng : Tương ứng giữa sector vật lý và sector logic trên đĩa mềm
Trên bề mặt đĩa tồn tại các sector mà hệ điều hành không thể ghi dữ liệu vào đó hoặc không thể đọc dữ liệu từ đó Các sector này được gọi là bad sector Trong quá trình định dạng
đĩa hệ điều hành đánh dấu loại bỏ các bad sector này
Cluster (liên cung): Một nhóm gồm 2, 4 hoặc 6 sector
liên tiếp nhau tạo thành một cluster Kích thước của cluster thường là bội số kích thước của một sector Các cluster được đánh địa chỉ bắt đầu từ 0 Số sector trên một cluster phụ thuộc vào từng loại đĩa Một số hệ điều hành cho phép người sử dụng quy định số sector trên một cluster Các hệ điều hành thường tổ chức lưu trữ dữ liệu, nội dung các tập tin, trên đĩa theo từng cluster Trên bề mặt đĩa cũng tồn tại các bad cluster, đó là các cluster có chứa bad sector
Một số hệ điều hành có thể khôi phục lại được dữ liệu chứa trên các bad-sector hay bad cluster và ghi nó vào lại một cluster mới Hệ điều hành
có thể chỉ khôi phục và thay thế dữ liệu tại sector bị bad hoặc phải khôi phục
Trang 13và thay thế toàn bộ dữ liệu trên cluster có chứa bad-sector
sector liền kề trên một đĩa Mỗi partition có một bảng partition hoặc một cơ sở dữ liệu quản lý đĩa riêng, dùng để lưu trữ sector đầu tiên, kích thước và các đặc tính khác của partition
trên một đĩa, và nó được tạo khi ta định dạng một đĩa hoặc một phần của đĩa theo hệ thống file NTFS Trong hệ điều hành windowsNT/2000 ta có thể tạo ra một volume trãi dài trên nhiều đĩa vật lý khác nhau Một đĩa có thể có một hoặc nhiều volume NTFS điều khiển mỗi volume sao cho không phụ thuộc
vào các volume khác
Một volume bao gồm một tập các file cùng với bất kỳ một không gian chưa được cấp phát nào còn lại trên partition đĩa Trong hệ thống file FAT, một volume cũng chứa các vùng đặc biệt được định dạng cho việc sử dụng của hệ thống file
3 Nhược điểm
- Tính bảo mật kém
- Nhược Điểm của FAT32 Nếu đĩa cứng của bạn có kích thước cluster càng nhỏ thì máy càng chậm Điều này đúng với mọi hệ điều hành, mọi dạng FAT Lí do là: với kích thước cluster nhỏ, các file sẽ bao gồm nhiều cluster hơn và do đó việc đọc ghi sẽ lâu hơn Chẳng hạn trong hệ thống có kích thước cluster là 16KB, một file ảnh 320KB sẽ bao gồm 20 cluster, việc mở file này sẽ phải thực hiện 20 lần thao tác đọc cluster Nhưng nếu kích thước cluster là 2KB thì file đó sẽ bao gồm 160