He thong File FAT- doc File+ROOT
X. HỆ THỐNG FILE FAT
-3 phiên bản: FAT12, FAT16, FAT32
-Chữ số chỉ kích thước ô bảng FAT tương ứng 12, 16 và 32 bit
1. ĐĨA LOGIC
-Đơn vị cấp phát không gian trên đĩa (khối logic) là cluster (lũy thừa 2 của số lượng sector)
-Boot sector:
+Sector đầu tiên của đĩa logic
+Chứa thông tin mô tả cấu trúc đĩa logic: kích thước sector, cluster, kích thước bảng FAT
+Chứa mã chương trình mồi để tải HĐH nếu đĩa logic là đĩa khởi động
-FAT: bảng chỉ số quản lý cấp phát khối cho file
-Thư mục gốc ROOT: Kích thước vùng này được xác định bằng số lượng tối đa khoản mục trong thư mục gốc và được ghi trong boot secter
-Vùng dữ liệu: chứa các file và thư mục của đĩa logic
Hình 1
BẢNG FAT
-Quản lý các cluster trên đĩa và các file theo nguyên tắc:
+Các khối thuộc cùng 1 file được liên kết thành 1 danh sách
+Con trỏ được chứa trong ô tương ứng của bảng FAT
-Mỗi ô trong bảng FAT tương ứng với một cluster trên đĩa, chứa 1 trong các thông tin:
+STT cluster tiếp theo trong danh sách các khối của file
+Dấu hiệu kết thúc nếu ô tương ứng với cluster cuối cùng của file
+Dấu hiệu đánh dấu cluster hỏng, không được sử dụng
+Dấu hiệu đánh dấu cluster dự phòng
+Bằng 0 nếu cluster trống, chưa cấp phát cho file nào
+Cluster đầu tiên của vùng dữ liệu được đánh STT là 2
+2 ô đầu tiên của bảng FAT không dùng để quản lý cluster
Hinh2
THƯ MỤC GỐC (ROOT)
-Mỗi thư mục được lưu trong bảng thư mục, thực chất là 1 file đặc biệt chứa các khoản mục của thư mục
-Mỗi khoản mục chứa thông tin về một file hoặc thư mục con của thư mục đang xét
-Với FAT12/16, thư mục trên cùng của đĩa được chứa trong 1 vùng đặc biệt gọi là thư mục gốc
-Các thư mục mức thấp hơn/ thư mục gốc của FAT32 được chứa trong vùng dữ liệu trên đĩa cùng với các file
-Mỗi thư mục gồm các khoản mục 32 byte xếp liền nhau
HÌnh 3
HÀM ĐỌC ĐĨA
-int absread(int drive, int nsects, long lsect, void *buffer)
+drive: ổ đĩa cần đọc, A: 0, B:1, C:2
+nsects: số sector cần đọc
+lsect: vị trí sector bắt đầu đọc
+buffer: vùng nhớ lưu nội dung thông tin cần đọc
ĐỌC FAT
-Vị trí sector bắt đầu: reserved sector (byte 14, 15 trong bootsector)
-Tổng số sector cần đọc: sectors per FAT (byte 22, 23)
-Nội dung bảng FAT đã được đọc ra vùng buf
-FAT16: ô FAT thứ n = buf+n*2
ĐỌC ROOT
-Vị trí sector bắt đầu: reserved sector + NoOfFATs * sectors per FAT
-Tổng số sector cần đọc: NoOfRootEntries * 32 /BytesPerSector
Bạn đang đọc truyện trên: AzTruyen.Top