Một ví dụ về việc tính toán bảng partition:

Một phần của tài liệu Bài giảng kiến trúc máy tính và hợp ngữ (Trang 44 - 52)

Cho đĩa cứng có dung lượng 406 MB với các thông số như sau:

- 839 Cylinder, đánh số từ 0 đến 838, Cylinder 838 không dùng. - 16 Head, đánh số từ 0 đến 15.

Bảng I

System Boot Starting Location H C S Ending Location H C S Relative Sectors Number of Sectors Bigdos Yes 1 0 1 15 206 62 62 205282 Extended No 0 207 1 15 837 62 205344 625952 Unused No 0 0 0 0 0 0 0 0 Unused No 0 0 0 0 0 0 0 0 Bảng II

System Boot Starting Location H C S Ending Location H C S Relative Sectors Number of Sectors Bigdos No 1 207 1 15 413 62 62 205282 Extended No 0 414 1 15 837 62 205344 420608 Unused No 0 0 0 0 0 0 0 0 Unused No 0 0 0 0 0 0 0 0 Bảng III

System Boot Starting Location Ending Location H C S Relative Sectors Number of Sectors

2.3 Cấu trúc của một volume

- Volume Boot Sector cấu trúc và chức năng.

- Khối tham số đĩa (Disk Parameter Block). - Đoạn mã khởi động Volume.

- Minh họa cấu trúc của một Volume DOS: • Cấu trúc này có dạng Sector khởi động (Boot sector) FAT 1 FAT 2 Thư mục gốc (Root Directory) Data

• Bảng dưới đây cho ta cấu trúc của một boot sector. Offset

Hex Dec Độ dài Mô tả

00h 0 3 bytes Lệnh nhảy tới đoạn mã boot 03h 3 8 bytes Tên nhà sản xuất và DOS version 0Bh 11 1 word Bytes/Sector (thường là 512)

0Dh 13 1 byte Sectors/Cluster (phải là lũy thừa của 2) 0Eh 14 1 word Số sector dành cho boot sector

Đối với DOS 4.0 trở lên, nếu không= 00h HexDec Độ dài Mô tả

20h 32 1 dword Tổng sô Sectors (nếu Partition > 32M, nếu không= 0) 24h 36 1 byte Số thứ tự ổ vật lý (00h=floppy, 80h=hard disk)

25h 37 1 byte Dự trữ

26h 38 1 byte Dấu hiệu boot sector mở rộng (29h)

27h 39 1 dword Serial Number của volume (số ngẫu nhiên 32-bit ) 2Bh 43 11 bytes Volume Label ("NO NAME" nếu không đặt nhãn) 36h 54 8 bytes Nhận diện hệ thống file("FAT12" or "FAT16") Với tất các version của DOS

Hex Dec Field Length Description

3Eh 62 448 bytes Đoạn mã chương trình khởi động 1Feh 510 2 bytes Các Byte dấu hiệu (55AAh)

Bảng định vị file – FAT

• DOS lưu các file lên đĩa theo các đơnvị là cluster, mỗi cluster là một nhóm của một hay nhiều sector. Để theo dõi và quản lý Cluster, DOS dựa trên một cấu trúc gọi là bảng FAT (File Allocation Table).

• Số entry của bảng FAT bằng tổng số cluster trên đĩa.

• Chiều dài của mỗi entry tùy thuộc vào version của DOS, có thể là 12 hay 16 bit từ đó có bảng FAT 12 hay FAT 16. (Về FAT 32 sinh viên có thể liên hệ giáo viên để tham khảo thêm ) .

• Để quan sát bảng FAT có thể sử dụng chương trình DISKEDIT.

Thư mục gốc

• Liền sau FAT 2

• Là một bảng gồm nhiều entry, mỗi entry dài 32 byte có nội dung như sau:

Offset Hex Dec Độ dài Mô tả

00h 0 8 bytes Tên file

08h 8 3 bytes Phần mở rộng

0Bh 11 1 byte Thuộc tính file

0Ch 12 10 bytes Dự trữ

16h 22 1 word Giờ tạo file

18h 24 1 word Ngày tạo file

1Ah 26 1 word Cluster đầu tiên của file 1Ch 28 1 dword Kích thước theo byte

Thí dụ bên dưới phân tích cấu trúc của đĩa mềm sau khi được format bằng Windows 98 (không /s). Sau đó tạo thư mục có tên là Temp và file Text.txt có dung lượng 13 byte. Dữ liệu dạng hexa của Sector 0 (Boot Sector):

Nội dung của Sector 1 (Vị trí của FAT1) dạng hexa

Nội dung của Sector 19 (vị trí của Root Directory) được thông dịch tương ứng:

Việc phân tích từ dữ liệu dạng Hexa sang nội dung mộ tả của Boot Sector, Root Directory, FAT xem như là bài tập dành cho sinh viên.

2.4 Quá trình khởi động của máy tính cá nhân.

Quá trình khởi tạo của DOS/WINDOWS (Windows 95/98/ME) được thực hiện như sau: Sau khi BIOS hoàn tất quá trình khởi tạo và kiểm tra hệ thống, nó tìm kiếm thiết bi khởi động (trong mục Boot Sequence phần thiết lập BIOS). Nếu không tìm được thiết bị khởi động nó sẽ báo lỗi. Giả sử rằng BIOS tìm thấy một Boot Sector trên một thiết bị khởi động, quá trình này sẽ diễn ra trên đĩa cứng như sau (trên đĩa mềm cũng tương tự, chỉ khác ở các bước đầu vì đĩa mềm không có Master Boot Record):

tìm tiếp xem bảng Partition mở rộng này có trỏ tiếp đến một bảng Partition mở rộng khác hay không…cứ thế cho đến khi nạp lên và nhận dạng toàn bộ các Partition mở rộng.

- Bước 4: Sau khi nạp thông tin về các Partition mở rộng (nếu có), đoạn mã khởi tạo sẽ tìm Partition có thể khởi động được (đã được đánh dấu ACTIVE). Nếu không tìm ra thì quá trình khởi động sẽ kết thúc với thông báo lỗi như “No boot device”, “NO ROM BASIC – SYSTEM HALTED”…

- Bước 5: Nếu tìm thấy 1 primary partition, quá trình khởi động sẽ tiếp tục bằng cách đọc Volume Boot Sector.

- Bước 6: Volume Boot Sector được tải lên bộ nhớ và nắm quyền điều khiển hệ thống.

- Bước 7: Đoạn mã khởi động trong Boot Sector sẽ kiểm tra cấu trúc của đĩa, nếu có vấn đề thì hệ thống sẽ báo lỗi.

- Bước 8: Đoạn mã sẽ tìm kiếm trên thư mục gốc trên đĩa khởi động để tìm ra các file hệ thống của hệ điều hành như “IO.SYS”, “MSDOS.SYS” và “COMMAND.COM” trong DOS.

- Bước 9: Nếu không tìm ra các file hệ thống thì chương trình khởi động sẽ báo lỗi ví dụ như “Non-system disk or disk error - Replace and press any key when ready” …

- Bước 10: Nếu tìm thấy các file hệ thống, chương trình khởi động sẽ tải nó vào bộ nhớ và chuyển quyền điều khiển cho nó sau đó nạp file COMMAND.COM, CONFIG.SYS và AUTOEXEC.BAT.

Một phần của tài liệu Bài giảng kiến trúc máy tính và hợp ngữ (Trang 44 - 52)