Professional Documents
Culture Documents
145007532 Cấu truc va cơ chế lam việc của hệ thống quản lý file FAT 32
145007532 Cấu truc va cơ chế lam việc của hệ thống quản lý file FAT 32
ĐỀ 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
Đề 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ỏ.
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…
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.
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 Trạng thái của Cluster tương ứng
vào
(hexadecimal)
(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.
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.
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.
0 1 2 3 4 5 6 7
(b)
00 00 10 00 9 14
4 5 6 7
00 12 7 FF7 15 FF7 FFF FFF (c)
A1 B1 A3
8 9 10 11 12 13 15 15
8 9 10 11
B2 A2 x Các entry ở đầu bảng FAT
12 13 14 15 A1 A2 A3 A4
B3 x A4 B4 (a)
B1 B2 B3 B4
Đĩa logic và các cluster Các block của FileA & FileB
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).
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 B4 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).
Đoạn FAT trong hình (c) ở trên cho biết các thông tin sau đây:
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
Sv: Nguyễn Thắng Thinh – Lớp: Tin16D Page 7
Học Viện Kĩ Thuật Quân Sự – Khoa CNTT
nà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.
1. Giới thiệu
2. Đặc điểm
Ta có bảng thông tin về FAT 32:
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ó
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:
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
3. Nhược điểm
cluster và việc mở file sẽ phải thực hiện tới 160 lần thao tác đọc
cluster. Do đó các ứng dụng có nhiều tác vụ đọc ghi đĩa sẽ
chậm đi rõ rệt. Thế nhưng nếu bạn sử dụng cluster lớn hơn thì
slack cũng lại lớn dẫn đến lãng phí đĩa cứng. Bạn không thể
thực hiện chức năng nén đĩa với FAT32 ngay cả bằng một số
chương trình ví dụ như: DriveSpace3 đi kèm với OSR2 và
Memphis Để nhận biết một đĩa cứng đã sử dụng FAT32 hay
chưa bạn nhất nút phải chuột vào biểu tượng một ổ đĩa đó trong
My Computer rồi chọn chọn properties . Nếu thấy tham số
Type là FAT32 là đúng.
4. Tính năng FAT32
- FAT32 cung cấp những cải tiến hơn trước việc triển khai
của hệ thống tập tin kiểu FAT:
- FAT32 hỗ trợ các ổ đĩa kích thước lên đến 2 terabytes.
- FAT32 sử dụng không gian hiệu quả hơn. FAT32 sử dụng
cụm nhỏ hơn (có nghĩa là, 4-KB cụm cho ổ lên đến 8 GB
kích thước), kết quả là một 10-15 phần trăm thêm hiệu quả
sử dụng không gian đĩa tương đối so với lớn chất béo hoặc
FAT16 ổ đĩa.
- FAT32 là mạnh mẽ hơn. FAT32 có thể di chuyển thư mục
gốc và sử dụng bản sao của tập tin phân bổ các bảng thay vì
sao chép mặc định. Ngoài ra, mục ghi khởi động trên ổ đĩa.
FAT32 được mở rộng để bao gồm một bản sao các cấu trúc
dữ liệu quan trọng. Do đó, ổ đĩa FAT32 ít nhạy cảm với một
điểm duy nhất của thất bại hơn hiện tại FAT16 ổ đĩa.
- FAT32 là linh hoạt hơn. Thư mục gốc trên một ổ đĩa FAT32
là một chuỗi cụm thông thường, vì vậy nó có thể được bất
cứ nơi nào nằm trên ổ đĩa. Các giới hạn trước đó về số lượng
gốc thư mục không tồn tại. Ngoài ra, tập tin phân bổ các
bảng ánh xạ có thể bị vô hiệu hóa, cho phép một bản sao của
tập tin phân bổ các bảng khác hơn so với một trong những
đầu tiên phải hoạt động. Các tính năng này cho phép động
thay đổi kích thước phân vùng FAT32.
Để duy trì khả năng tương thích lớn nhất có thể với
chương trình hiện có, mạng lưới, và điều khiển thiết bị, FAT32
được thực hiện với như các thay đổi ít nhất có thể kiến trúc hiện
có của Windows, cấu trúc dữ liệu nội bộ, giao diện lập trình
ứng dụng (API) và định dạng trên đĩa. Tuy nhiên, bởi vì 4 byte
bây giờ được yêu cầu để lưu trữ giá trị cụm, nhiều cấu trúc nội
bộ và trên đĩa dữ liệu và API được xuất bản đã được sửa đổi
hoặc mở rộng. Trong một số trường hợp, hiện có API sẽ không
hoạt động trên ổ đĩa FAT32. Hầu hết các chương trình sẽ không
bị ảnh hưởng bởi những thay đổi. Hiện có các công cụ và trình
điều khiển nên tiếp tục làm việc trên ổ đĩa FAT32. Tuy nhiên,
MS-DOS khối điều khiển thiết bị (ví dụ, Aspidisk.sys) và đĩa
công cụ sẽ cần phải được sửa đổi để hỗ trợ ổ đĩa FAT32.
khiển thiết bị hàng đầu thế giới và nhà sản xuất đĩa công cụ để
hỗ trợ họ trong sửa đổi sản phẩm của họ để hỗ trợ FAT32.
Slide bài giảng của thầy: Hà Trí Trung – Học Viện Kĩ Thuật
Quân Sự
www.sinhvienIT.net
http://vi.wikipedia.org
C .Lời kết
Em xin chân thành cảm ơn sự giúp đỡ của thày trong quá trình
giảng dạy và học tập trên lớp!
Nhưng do năng lực còn hạn chế, kinh nghiệm và kiến thức chưa
hoàn chỉnh, BTL còn nhiều khuyết điểm và hạn chế, mong thầy thông
cảm và chỉ bảo thêm để em có thể hoàn thiện BTL.
Kính chúc thầy sức khỏe và thành công!