- PC66, PC100, PC133, PC1600, PC2100, PC2400:
3. Bộ nhớ ngồ
3.3.3.3. Folder gốc
Folder gốc chứa các điểm vào cho các file và folder nằm trên gốc của ổ đĩa. Folder gốc khác với các folder khác là nĩ cĩ vị trí và kích thước cố định (512 điểm vào đối với đĩa cứng). Một điểm vào folder gốc cĩ nội dung như sau:
Byte offset Kích thước [byte] Ý nghĩa
00h 08h 0Bh 0Ch 16h 18h 1Ah 1Ch 8 3 1 10 2 2 2 4 Tên file Phần mở rộng Thuộc tính file Dự trữ
Giờ thay đổi thơng tin cuối cùng Ngày thay đổi thơng tin cuối cùng Cluster đầu tiên của file
Kích thước file
Folder cĩ một tập các điểm vào folder 32 byte (folder entry) cho mỗi file và folder con chứa trong nĩ. Điểm vào folder bao gồm:
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ
- Byte thuộc tính: 1 byte bao gồm thuộc tính lưu trữ (archive), ẩn (hidden), hệ thống (system) và chỉ đọc (read-only). User cĩ thể bật hay tắt các thuộc tính này.
- Thời gian tạo: 3 byte - Ngày tạo: 2 byte
- Ngày truy xuất cuối cùng: 2 byte
- Thời gian thay đổi thơng tin cuối cùng: 2 byte - Ngày thay đổi thơng tin cuối cùng: 2 byte - Số thứ tự của cluster bắt đầu file: 2 byte - Kích thước: 2 byte
Tên file:
Bắt đầu từ WinNT 3.5, file được tạo trên đĩa FAT dùng các bit thuộc tính để hỗ trợ tên file dài mà khơng ảnh hưởng đến các hệ điều hành trước (DOS). Khi tạo một file, nếu tên file dài thì Windows sẽ tạo một tên dạng 8.3 cho file và sẽ thêm các điểm vào thứ cấp của file, mỗi điểm vào chứa 13 ký tự. DOS sẽ bỏ qua các điểm vào này, xem như chúng khơng tồn tại và xử lý như dạng file 8.3 chuẩn.
Hình 3.14 – Ví dụ về tên file dài
3.3.4. FAT32
FAT32 là một dạng mở rộng của hệ thống file FAT để hỗ trợ lưu trữ lớn hơn 2 GB. Ổ đĩa FAT32 cĩ thể chứa nhiều hơn 65256 cluster và mỗi cluster nhỏ hơn so với FAT16 nên hiệu suất sử dụng sẽ cao hơn. File lớn nhất cĩ thể lưu trữ trên ổ đĩa FAT32 là 4GB-2.
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ
GV:Nguyễn Mạnh Hồng Trang 75
Thay đổi trong boot sector và bootstrap:
Thay đổi trong boot sector:
Thay đổi Mơ tả
Các sector dành riêng
FAT32 chứa nhiều sector dành riêng hơn FAT16 và FAT12, thường là 32
Thay đổi của boot sector
Do FAT32 BPB lớn hơn BPB chuẩn, MBR trên ổ đĩa FAT32 lớn hơn 1 sector đồng thời 1 sector trong khu vực dành riêng chứa số lượng cluster chưa sử dụng và số lượng cluster mới sử dụng gần nhất. Các giá trị này là thành phần của cấu trúc BIGFATBOOTFSINFO cho phép hệ thống khởi tạo các giá trị mà khơng cần đọc tồn bộ FAT.
Folder gốc Folder gốc trên ổ đĩa FAT32 khơng chứa tại một vị trí cố định như FAT16 hay FAT12. Folder gốc là một chuỗi cluster thơng thường. Thành phần A_BF_BPB_RootDirStrtClus trong cấu trúc BPB chứa số thứ tự của cluster đầu tiên của folder gốc và BPB_RootEntries sẽ bị bỏ qua.
Số sector/FAT Thành phầnA_BF_BPB_SectorsPerFATcủa BPB luơn bằng 0 trên ổ đĩa FAT32 mà thay vào đĩ là 2 thành phần
A_BF_BPB_BigSectorsPerFatvàA_BF_BPB_BigSectorsPerFatHi.
BPB (BIOS Parameter Block):
BPB trong FAT32 là phiên bản mở rộng của BPB FAT16/FAT12. Nĩ cũng cung cấp thơng tin như trước nhưng đồng thời thêm vào một số trường:
Tên Kích thước [byte]
Mơ tả
A_BF_BPB_BytesPerSector 2 Số byte/sector A_BF_BPB_SectorsPerCluster 1 Số sector/cluster
A_BF_BPB_ReservedSectors 2 Số thứ tự của sector dành riêng, bắt đầu bằng sector 0
A_BF_BPB_NumberOfFATs 1 Số lượng FAT
A_BF_BPB_RootEntries 2 Bỏ qua
A_BF_BPB_TotalSectors 2 Tổng số sector
A_BF_BPB_MediaDescriptor 1 Tương tự như FAT16
A_BF_BPB_SectorsPerFAT 2 = 0
A_BF_BPB_SectorsPerTrack 2 Số sector/track
A_BF_BPB_Heads 2 Số head trên đĩa
A_BF_BPB_HiddenSectors 2 Số sector ẩn trên đĩa
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ
A_BF_BPB_BigTotalSectors 2 Tổng số sector trên FAT32
A_BF_BPB_BigTotalSectorsHigh 2 Tổng số sector trên FAT32 (2 byte cao) A_BF_BPB_BigSectorsPerFat 2 Số sector/FAT
A_BF_BPB_BigSectorsPerFatHi 2 Số sector/FAT (2 byte cao)
A_BF_BPBExtFlags
2 Bit 7 xác định thơng tin trên FAT hiện hành cĩ cập nhật cĩ tất cả các FAT khác hay khơng.
A_BF_BPB_FS_Version 2 Phiên bản của hệ thống file
A_BF_BPB_RootDirStrtClus 2 Số thứ tự cùa cluster đầu tiên của folder gốc
A_BF_BPB_RootDirStrtClusHi 2 Số thứ tự cùa cluster đầu tiên của folder gốc (2 byte cao)
A_BF_BPB_FSInfoSec 2 Số thứ tự của sector chứa thơng tin hệ thống file.
A_BF_BPB_BkUpBootSec 2 Số thứ tự của bản sao boot sector.
A_BF_BPB_Reserved 12 Dành riêng
Cấu trúc BIGFATBOOTFSINFO:
Cấu trúc này chứa các thơng tin về hệ thống file trên ổ đĩa FAT32.
Tên Kích thước [byte]
Mơ tả
bfFSInf_Sig 4 Nhận dạng của sector thơng tin hệ thống file. Giá trị này là FSINFOSIG (0x61417272L).
bfFSInf_free_clus_cnt 4 Số cluster khơng sử dụng (=-1 nếu khơng xác định) bfFSInf_next_free_clus 4 Số thứ tự cluster định vị gần nhất
bfFSInf_resvd 12 Dành riêng
Phản chiếu FAT (mirroring):
Trên FAT16/FAT12, FAT đầu tiên luơn là bản sơ cấp và bất kỳ thay đổi nào đầu được tự động cập nhật trên các bản sao. Đối với FAT32, phản chiếu FAT cĩ thể bỏ qua và một bản sao khác với bản đầu tiên cĩ thể là bản sơ cấp. Phản chiếu được cho phép bằng cách xĩa bit 0080h trong thành phầnextddpb_flagscủa cấu trúc DPB.
Phản chiếu Mơ tả
Cho phép (xĩa bit 0080h)
Bất kỳ khi nào một sector FAT thay đổi thì nĩ sẽ cập nhật cho các FAT khác.
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ
GV:Nguyễn Mạnh Hồng Trang 77
DPB (Drive Parameter Block):
Cấu trúc của DPB: DPB STRUC dpb_drive DB ? dpb_unit DB ? dpb_sector_size DW ? dpb_cluster_mask DB ? dpb_cluster_shift DB ? dpb_first_fat DW ? dpb_fat_count DB ? dpb_root_entries DW ? dpb_first_sector DW ? dpb_max_cluster DW ? dpb_fat_size DW ? dpb_dir_sector DW ? dpb_reserved2 DD ? dpb_media DB ? ifdef NOTFAT32 dpb_first_access DB ? else dpb_reserved DB ? endif dpb_reserved3 DD ? dpb_next_free DW ? dpb_free_cnt DW ? ifndef NOTFAT32 extdpb_free_cnt_hi DW ? extdpb_flags DW ? extdpb_FSInfoSec DW ? extdpb_BkUpBootSec DW ? extdpb_first_sector DD ? extdpb_max_cluster DD ? extdpb_fat_size DD ? extdpb_root_clus DD ? extdpb_next_free DD ? endif DPB ENDS Tên Mơ tả dpb_drive Số thứ tự đĩa (0 = A, 1 = B, …)
dpb_unit Số thứ tự của đơn vị đĩa (unit number), cho phép trình điều khiển thiết bị phân biệt đĩa.
dpb_sector_size Số byte/sector dpb_cluster_mask Số sector/cluster – 1
dpb_cluster_shift Số sector/cluster biểu diễn theo số mũ của 2 dpb_first_fat Số thứ tự của sector đầu tiên chứa FAT dpb_fat_count Số FAT/đĩa
dpb_root_entries Số điểm vào/folder gốc
dpb_first_sector Số thứ tự sector đầu tiên của cluster đầu tiên dpb_max_cluster Số cluster/đĩa -1 (khơng dùng trong FAT32)
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ
dpb_fat_size Số sector đang sử dụng /FAT (= 0 đối với FAT32, thay thế bằng
extdpb_fat_size)
dpb_dir_sector Số thứ tự của sector đầu tiên chứa folder gốc (khơng dùng trong FAT32)
dpb_reserved2 Dành riêng
dpb_media Mơi trường trữ tin
reserved Dành riêng
dpb_first_access Xác định đĩa cĩ dùng được hay khơng dpb_reserved3 Dành riêng
dpb_next_free Số thứ tự cluster định vị gần nhất
dpb_free_cnt Số lượng cluster trống (=FFFFh nếu khơng xác định) extdpb_free_cnt_hi 2 byte cao xác định số cluster trống
extdpb_flags Mơ tả đĩa
extdpb_FSInfoSec Số thứ tự của sector chứa thơng tin hệ thống file extdpb_BkUpBootSec Số thứ tự của bản sao boot sector
extdpb_first_sector Sector đầu tiên của cluster đầu tiên extdpb_max_cluster Số sector/đĩa + 1
extdpb_fat_size Số sector sử dụng bởi FAT
extdpb_root_clus Số thứ tự của cluster đầu tiên trong folder gốc extdpb_next_free Số thứ tự cluster định vị gần nhất
Loại phân vùng:
Loại phân vùng hợp lệ cho trong bảng sau (giá trị tương ứng chứa trong thành phần
Part_FileSystemcủa cấu trúc S_PARTITION.
Giá trị Mơ tả
PART_UNKNOWN (00h) Unknown PART_DOS2_FAT (01h) FAT12
PART_DOS3_FAT (04h) FAT16 (< 32 MB)
PART_EXTENDED (05h) Phân vùng DOS mơ rộng PART_DOS4_FAT (06h) FAT16 (> 32 MB)
PART_DOS32 (0Bh) FAT32 (cĩ thể tới2047GB) PART_DOS32X (0Ch) FAT32 dùng Int 13h mở rộng
PART_DOSX13 (0Eh) Giống PART_DOS4_FAT (06h) dùng Int 13h mở rộng PART_DOSX13X (0Fh) Giống PART_EXTENDED (05h) dùng Int 13h mở rộng
Tài liệu Cấu trúc máy tính & Hợp ngữ Bộ nhớ GV:Nguyễn Mạnh Hồng Trang 79 Cấu trúc S_PARTITION: s_partition STRUC Part_BootInd DB ? Part_FirstHead DB ? Part_FirstSector DB ? Part_FirstTrack DB ? Part_FileSystem DB ? Part_LastHead DB ? Part_LastSector DB ? Part_LastTrack DB ? Part_StartSector DD ? Part_NumSectors DD ? s_partition ENDS Tên Mơ tả
Part_BootInd Phân vùng cĩ khởi động được (=80h) hay khơng (=00h) Part_FirstHead Head đầu tiên của phân vùng
Part_FirstSector Sector đầu tiên của phân vùng (bit 0-5; 6-7 dùng cho Part_FirstTrack) Part_FirstTrack Track đầu tiên của phân vùng
PartFileSystem Hệ thống file của phân vùng
Part_LastHead The last head of the partition. This is a 0-based number that represents the offset from the beginning of the disk. The partition includes the head specified by this member.
Part_LastSector Sector đầu tiên của phân vùng (bit 0-5; 6-7 dùng cho Part_LastTrack) Part_LastTrack Track đầu tiên của phân vùng
Part_StartSector Số thứ tự của sector đầu tiên trên đĩa Part_NumSectors Số sector/phân vùng