1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Hệ điều hành >

Tổ chức đĩa của MS_DOS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.26 MB, 249 trang )


một phần cho mục đích khác sau này). Hệ điều hành chịu trách nhiệm boot hệ

thống (MS_DOS hoặc windows98) thường được cài đặt trên đĩa C: (trên phân khu

DOS chính).

Quá trình FDISK đĩa chỉ tạo ra các phân khu và các đĩa logic C:, D:, E:, vv,

sau đó người sử dụng phải thực hiện việc định dạng (format) các ổ đĩa này thì mới

có thể sử dụng được. Nên nhớ phải định dạng hệ thống (format /s) cho đĩa C: và

phải cài đặt hệ điều hành boot chíng vào đĩa C:.

Hình sau đây cho thấy một ổ đĩa cứng vật lý được chia thành 2 phân khu và

các đĩa logic được tạo ra trên các phân khu:



C: (10Gb)

D:

4Gb



HD

D

20Gb



Partition

DOS chính

Partition

DOS mở rộng



E:

6Gb



Ổ đĩa

Vật Lý



FDI 2 đĩa logic trên partition mở rộng

SK

Hình 4.8: HDD trước và sau FDISK

Trong số các partition đã tạo phải có 1 (chỉ1) partition được chọn là partition

active (chủ động). Partition Active là partition mà sau này được chọn là partition

boot hệ thống. Partition DOS chính thường được chọn là partition active.

Các partition khác nhau trên đĩa, có các thông tin sau đây khác nhau: Loại

của partition; Partition có phải là Active hay không; Kích thước của partition; Vị trí

bắt đầu và kết thúc của partition; Hệ điều hành được cài đặt trên partition; … Để

lưu trữ thông tin khác nhau của các partition, hệ điều hành DOS dùng một khối dữ

liệu đặc biệt, được gọi là sector phân khu (partition sector), sector này nằm tại

sector vật lý đầu tiên của đĩa cứng (head 0, track 0, sector 1) và nó không thuộc về

bất kỳ một partition nào trên đĩa. Sector này thường được gọi là bảng partition.

Hình vẽ sau đây minh hoạ cho điều này:



Boot sector

0

của FDD



(a)



0



Boot sector

của

Master đĩa C:



Boot sector

của đĩa D:

(b)



Boot

Record



Partition 1



Partition



Hình 4.7: Tổ chức logic của FDD (a) và HDD (b)



Hình trên cũng cho thấy sự tương ứng về mặt về mặt logic giữa một đĩa mềm

(a) với một partition/đĩa logic trên đĩa cứng (b). Điều đầu tiên chúng ta cần ghi

nhận là master boot record (sector phân khu) chỉ có trên đĩa cứng, nó được tạo ra

trong quá trình FDISK đĩa. Thứ hai là: Boot sector của đĩa mềm được định vị tại

sector 0 của đĩa, trong khi đó boot sector của các đĩa logic trên các partition được

định vị tại sector đầu tiên của partition và số hiệu của sector này được tìm thấy

trong các phần tử trong bảng partition của master boot record bởi boot code ở đầu

master boot record. Thứ ba: Master boot record không thuộc bất kỳ một partition

nào và giữa nó và partition đầu tiên là một vùng trống, có thể DOS dự trữ cho các

mục đích khác sau này. Vùng trống này là một kẽ hở của DOS, các đoạn code của

Virus có thể được lưu trữ ở vùng này mà hệ điều hành không thể phát hiện được.

Khi master boot record trên đĩa cứng bị xoá hoặc bị nhiễm virus thì máy tính

không thể khởi động được. Để khôi phục lỗi này ta chỉ có thể thực hiện như sau:

Khởi động máy từ đĩa mềm, trên đĩa mềm có chứa tập tin FDISK.EXE, rồi sau đó

thực hiện lại thao tác FDISK đĩa cứng với tham số MBR (A:\FDISK /MBR).

FDISK /MBR làm mới lại master boot record mà không làm hỏng dữ liệu trên các

đĩa logic.

Sector phân khu bao gồm 3 thành phần: Boot code, bảng partition và chữ

kí hệ điều hành. Hình 4.8 sau đây cho thấy các thành phần trong Sector phân

khu:



Boot code: là một đoạn chương trình đặc biệt, được hệ điều

hành ghi vào trong quá trình FDISK đĩa. Đoạn chương trình này có nhiệm vụ kiểm

tra bảng partition để xác định xem trên đĩa có partition active hay không, nếu có thì

đó là partition nào và bắt đầu tại sector nào, rồi sau đó nạp boot sector của đĩa trên

partition active vào RAM và chuyển quyền điều khiển về cho boot sector.



Bảng partition (64 byte: bắt đầu từ byte 1BE h): gồm 4

phần tử, đánh số từ 1 đến 4, mỗi phần tử dài 16 byte dùng để lưu thông tin của một

partition. Các thông tin trong một phần tử trong bảng partition cho biết: Phân khu

có phải là active hay không; Vị trí bắt đầu phân khu (head, sector, cylinder); Vị trí

kết thúc phân khu (head, sector, cylinder); Có bao nhiêu sector nằm trong phần

khu; Kích thước của một phân khu tính theo sector; Phân khu được định dạng như

thế nào và được cài đặt hệ điều hành nào?.



0

Master

Boot

Record



0



Boot sector của

partition 1

Unused



Partition 1

1E 1F

E

E (C:)



1

1CE 1DE

B

Boot Par Par Par Par

E



code



1



2



3



4



chữ ký

hệ điều hành



Master Boot Record



Bảng partition có 4

Hình 4.8: Các thành phần trong master boot record

phần tử

Vì bảng partition chỉ có 4 phần tử nên DOS chỉ cho phép tạo ra tối đa là 4

partition. Đây là một hạn chế. Để khắc phục điều này hệ điều hành DOS cho phép

tạo ra nhiều đĩa logic trên một partition mở rộng, tức là có thể tạo ra được nhiều đĩa

logic trên một ổ đĩa cơ sở. Hệ điều hành windowsNT/ 2000 cho phép tạo ra nhiều

hơn 4 partition trên một ổ đĩa và số lượng các phần tử trong bảng partition có thể

thay đổi.



Chữ ký hệ điều hành (2 byte: bắt đầu từ byte 1FEh):

thường chứa giá trị 55AAh. Hệ điều hành DOS kiểm tra giá trị tại vùng này để biết

đĩa này có phải được định dạng bởi nó hay không.

Một phần tử trong bảng phân khu chứa các thông tin sau:



Offset

Kíc h th ước



00 h

01 h

02 h

04 h



05 h

06 h

08 h

0C h



N ội dung



0: partition không phải là active

80 h: partition là active

số hiệu head bắt đầu phân khu

sector và cylinde bắt đầu (của boot sector)

mã hệ thống: 0: Non Dos; 1: FAT_12;

4: FAT_16; 5: phân khu Dos mở rộng;

6: phân khu Dos lớn hơn 32 Mb

số hiệu head kết thúc phân khu

sector và cylinde kết thúc

số hiệu sector tương đối bắt đầu

tổng số sector trong phân khu



1 byte

1 byte

2 byte



1 byte

1 byte

2 byte

4 byte

4 byte



Bảng 4.3: Các trường một phần tử bảng partition

Ví dụ 1: Để kiểm tra partition nào là active ta thực hiện như sau:

• Đọc sector đầu tiên của đĩa cứng lưu vào biến masterboot

• Kiểm tra offset 00 của 4 phân tử partition trong bảng partition

Mov

Mov

Locate_active:

Mov

Cmp

Je

Add

Loop

No_active:

.........

Active:

.........



cx, 4

SI, 1BE h

AL, masterboot[SI]

AL, 80h

Active

SI, 16

Locate_active



Ví dụ 2: Để đọc nội dụng boot sector của đĩa cứng C ghi vào biến BootDat

ta phải thực hiện lần lượt các bược sau đây:

• Đọc sector đầu tiên của đĩa cứng lưu vào biến masterboot

• Tìm partition active (phần tử trong bảng partition có offset 00 bằng

80h)

• Đọc buye tại offset 01h và word tại offset 02 của phần tử partition

tương ứng ở trên (head, sector và cylinde), để xác định số hiệu sector

bắt đầu của partition active, đây chính là boot sector của đĩa cứng.

• Đọc nội dung của sector xác định được ở trên lưu vào BootDat.

Active:

Mov

Mov



ax, 0201h

cx, word PTR mastorboot



; đọc 1 sector



[SI+2]



;



sector



&



cylinder



Mov

Mov

Mov

Lea

Int



dh, byte PTR mastorboot[SI+1]

; head

dl, 80h

; đĩa cứng

es,cs

; trỏ ES:BX về

bx, BootDat

; đầu vùng BootDAt lưu

13h



Nếu PC được khởi động bằng đĩa mềm (FDD) khởi động thì sau quá trình



Xem Thêm
Tải bản đầy đủ (.doc) (249 trang)

×