Tổ chức đĩa của hệ điều hành MSDOS - Pdf 62

95
CHƯƠNG 14 : TỔ CHỨC ĐĨA CỦA HỆ ĐIỀU HÀNH MSDOS
14.1MỘT SỐ Ý NIỆM
Hệ điều hành MSDOS tổ chức lưu trữ thông tin trên đóa theo các volume.
Đối với Floppy disk, mỗi đóa là một volume.
Đối với đóa cứng, mỗi DOS Partition là một volume. Mỗi volume tương ứng với một ổ đóa logic
(A,B,C,D,E...)
MSDOS volume được chia thành nhiều đơn vò lưu chứa thông tin bằng nhau gọi là cluster. Mỗi
cluster là một tập hợp gồm n sector liên tiếp nhau. Trong một volume, các cluster đều có kích thước như
nhau .
Mỗi file dữ liệu được lưu giữ trong một hay nhiều cluster tùy theo kích thước của file. Chuỗi các
cluster theo thứ tự lưu giữ thông tin của một file được gọi là một cluster chain. Để ghi nhớ về tình trạng
của các cluster trong volume, MSDOS dùng một cấu trúc gọi là bảng FAT (File Alocation Table). Đây là
một ma trận với mỗi phần tử đại diện cho một cluster. Giá trò ghi nhớ trong mỗi phần tử tượng trưng cho
tình trạng của cluster mà nó đại diện.
Mỗi một file, ngoài các thông tin được lưu giữ còn có các đặc trưng riêng như tên file, ngày giờ tạo
lập ... Các thông tin này được ghi nhận trong một danh sách đặc biệt gọi là thư mục (directory) . Mỗi phần
tử trong thư mục gọi là một directory entry.
Mỗi volume của MSDOS đều có một vùng dành riêng gọi là root directory. Trong đó có một số
lượng xác đònh các directory entry để lưu giữ thông tin về các file.
Để mở rộng khả năng lưu trữ file, từ version 2.0, hệ điều hành MSDOS cho phép ghi nhớ các
directory entry theo cung cách tương tự như ghi nhớ thông tin của các các file dữ liệu. Các file đặc biệt chỉ
lưu chứa các directory entry này được gọi là các thư mục con (sub directory).Khi các thư mục con chính
bản thân nó lại lưu chứa các mô tả của các thư mục con khác, khái niệm cây thư mục được thành hình.
14.2CẤU TRÚC VOLUME MSDOS
Một volume của MSDOS được chia thành các phần chính theo thứ tự như sau:
Boot record (sector đầu tiên của volume)
Các bảng FAT (thường có 2 bảng)
Root directory
Data (được chia thành các cluster - từ 2 trở đi)
14.3CẤU TRÚC CỦA MSDOS BOOT RECORD

| 1501Media descriptor byte |
|----|----|-------------------------------------------------- |
| 1601Number of sertors per FAT |
|----|----|--------------------------------------------------<--
| 1802Sertor per track|
|----|----|-------------------------------------------------- |
| 1A02Number of heads| 3.x
|----|----|-------------------------------------------------- |
| 1C02Number of hidden sector (LowWord)|
|----|----|--------------------------------------------------<--
| 1E02Number of hidden sector (HiWord)|
|----|----|-------------------------------------------------- |
| 2004Total sectors in volume (volume size>32MB)|
|----|----|-------------------------------------------------- |
| 2401Physical drive number |
|----|----|-------------------------------------------------- |
| 2501Reserved | 4.x
|----|----|--------------------------------------------------5.x
| 2601Extended boot signature (29H)| 6.x
|----|----|-------------------------------------------------- |
| 270432-bit binary volume ID |
|----|----|-------------------------------------------------- |
| 2B0BVolume label|
|----|----|-------------------------------------------------- |
| 3608Reserved |
|----|----|--------------------------------------------------<--
|| Bootstrap routine |

14.4CAÁU TRUÙC CUÛA FAT (FILE ALOCATION TABLE)
97

--------------

File attribute format
[7|6|5|4|3|2|1|0]
|a|d|v|s|h|r|
Ù—ÚĨÚĨÚĨÚĨÚĨÚỆ bit description
||ỐỚ> 0: 1=file is Read-only (can’t be written/deleted)
|| ỐỚỚỚ> 1: 1=Hidden
|ỐỚỚỚỚỚ> 2: 1=System
| ỐỚỚỚỚỚỚỚ> 3: 1=Volume label entry
ỐỚỚỚỚỚỚỚỚỚ> 4: 1=subDirectory entry
ỐỚỚỚỚỚỚỚỚỚỚỚ> 5: Archive bit. 1=file has NOT been backed up

File time format
[5|4|3|2|1|0|9|8Ú7|6|5|4|3|2|1|0]
hourminutesec/2 |
98
Ù--------Ợ--------Ệ
ỐỚỚỚỖỚỚỚỄ ỐỚỚỚỚỖỚỚỚỚỄ ỐỚỚỚỖỚỚỚỄ
| ỐỚỚỚỚ> second/2
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ> minute
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ> hour
File date format
[5|4|3|2|1|0|9|8Ú7|6|5|4|3|2|1|0]
yearmonthday |
Ù--------Ợ--------Ệ
ỐỚỚỚỚỚỖỚỚỚỚỚỄ ỐỚỚỖỚỚỄ ỐỚỚỚỖỚỚỚỄ
| ỐỚỚỚỚ> day
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚ> month
ỐỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ> year-1980 (0-119 valid)

Ta nên dùng interrupt 25h để đọc các logical sector. interrupt 26h để ghi các logical sector.
Input: AL = drive number (0=A, 1=B, etc.)
DX = sector bắt đầu
99
DS:BX = Ỵbuffer
CX = số lượng sector đọc/ghi (<FFFFh)
CX = FFFFh --> tác vụ trên BIG DOS partitions (>32M)
DS:BX = Đòa chỉ của transfer packet (10 bytes)
DS:[BX+0] sector bắt đầu (DWORD)
DS:[BX+4] số lượng sectors đọc/ghi (WORD)
DS:[BX+6] offset của buffer (WORD)
DS:[BX+8] segment của buffer (WORD)
Output: CF = 1 --> AX = error code
Lưu ý : + Tất cả các thanh ghi sẽ bò thay đổi trừ DS, ES, SS, SP
Các interrupt này kết thúc bằng lệnh retf, do đó sẽ để lại cờ hiệu trong stack khi kết thúc.
Logical sector bắt đầu của một cluster tính bằng công thức sau :
root—sects = (RootSize * 32) / SecSize
first—data = ResSecs + (FatSize * FatCnt) + root—sects
logical—sector = first—data + ((cluster—no - 2) * ClusSize)


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status