1. Trang chủ
  2. » Thể loại khác

+Hệ Điều Hành sv cong nghe thuc pham PHAN2

48 155 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 242 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

+Hệ Điều Hành sv cong nghe thuc pham PHAN2 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất c...

Trang 1

Phần II hệ điều hành MS-DOS Chơng I Hệ điều hành MS-DOS quản lý tệp

1.1 Mổ đầu : Hệ điều hành MS-DOS là sản phẩm của hãng

Microsoft, phiên bản đầu tiên của MS-DOS đợc chính thức đa

ra vào tháng 8 năm 1981, sau đó DOS không ngừng đợc pháttriển và cải tiến, Bảng 1-1 chỉ ra một số mốc thời gian và sơlợc về tính năng các phiên bản khác nhau của DOS Các phiênbản sau của hệ điều hành đợc cải tiến hơn các phiên bản trớc

nó Phần cải tiến chủ yếu là bổ sung các dịch vụ vào/ra

Đồng thời tăng thêm các chức năng khác, mỗi chức năng đợcbảo đảm bởi một thủ tục độc lập ( các tệp chơng trình riêng

2.0 3/1983 360 K Hộ trỡ đĩa cứng, giống UNIX 2.1 11/1983 nt Giao diện với PC Jr

2.11 3/1984 nt Hộ trỡ cho ng ời dùng toàm thế giới 3.0 8/1984 1.2 M Hộ trỡ PC/AT

5.0 4/1991 2.88 M Hộ trỡ quản lý bộ nhớ mở rộng

Trang 2

- Các loại đĩa (cả đĩa cứng và đĩa mềm) đều dựavào hiện tợng từ hoá để lu dữ liệu Đầu từ đọc ghi sẽ từ hoánhững phần tử cực nhỏ trên bề mặt, mỗi phần tử di chuyểnqua đầu từ sẽ bị từ hoá Mỗi đĩa từ đều có cấu trúc vật lý vàcấu trúc logic.

1 Track (Rãnh): Mỗi track là một hình tròn Đĩa từ đợc chia

3 Cylinder : Một cặp track đối xứng của 2 mặt gọi là

Cylinder Track ở ngoài cùng đợc đánh số là track 0, track ởmặt trên nằm ngoài cùng là track 0, mặt (side) 0, track ở mặtdới là track 0, mặt 1 Track 0 gọi chung là Cylinder 0 Đối với

đĩa mềm 360Kb có 40 track đợc đánh số từ 0 đến 39 Đĩa1.2Mb có 80 track đánh số từ 0 đến 79 Đối với đĩa cứng,một mô hình đơn giản là các đĩa mềm đợc xếp chồngsong song với nhau thành hình trụ Đĩa trên cùng là side 0,mặt dới của nó là mặt 1, đĩa thứ 2 có 2 mặt lần lợt là 2 và

3 v.v Tập hợp những Track 0 đợc gọi là Cylinder 0, tập cáctrack 1 gọi là cylinder 1, v.v, các cilinder cũn đợc đánh só,

và tất nhiên số đầu đọc ( head ) cũng sẽ tăng lên theo số mặt

và thờng là sô chẵn, số đầu đọc cũng đợc đánh số bắt đầu

từ 0, hình 1-3 Khối lợng dữ liệu trên một Track trên đĩa cứng

Track 1

Trang 3

thay đổi tuỳ thuộc từng máy, tuy nhiên thờng từ 8Kb đến12Kb trên một track.

Cilinder 0

Cilinder 1 Head 1

Hình 1-2 Cấu trúc đĩa cứng

4 Sector : Mặc dù có thể đọc/ghi dữ liệu trên đĩa một lúc

1 track (8 đến 12 Kb), nhng thực tế ngời ta không giám dùng

đến một khối lợng dữ liệu nh thế Bộ điều khiển thờng đợcthiết kế để có thể đọc và ghi một lần chỉ từng phân đoạncủa Track Số byte trong một phân đoạn đợc gọi là một cung(Sector) và nó phụ thuộc vào phần cứng của bộ điều khiển

đĩa và hệ điều hành Thông thờng các kích thớc là 128,

256, 512 của 1024 byte Đối với MS-DOS, kích thớc đợc chọn là

512 byte cho một Sector cho tất cả các loại đĩa

Ví dụ: Đối với đĩa mềm 360Kb có 9 Sector trên 1 track, chínhvì điều này ta có dung lợng là: 40x2x9x512 byte = 360 Kb.Khi đó, để xác định đợc một Sector dữ liệu cần đọc/ghicần phải biết:

+ Track nào

+ Mặt nào

+ Số số hiệu sector trong track đó

5 Đánh địa chỉ Sector : Địa chỉ của mỗi Sector đợc mã

hoá thành dữ liệu và đợc gắn vào trớc mỗi Sector, vì Sector

Trang 4

đợc đánh số tuần tự xung quanh track bắt đầu từ 0, nên

địa chỉ của nó đơn giản là các số nguyên không âm liêntiếp xung quanh track Quá trình ghi địa chỉ của Sector đợcthực hiện trong khi Format đĩa

6 Format vật lý : Quá trình ghi toàn bộ địa chỉ Sector,

các thông tin khác vào phần đầu của mỗi Sector đợc gọi làFormat vật lý hay Format cấp thấp vì việc này đợc thực hiệnchỉ bằng phần cứng của bộ điều khiển đĩa, trong quátrình Format, phầm mềm sẽ bắt bộ điều khiển đĩa tiếnhành Format với những thông số về kích thớc của 1 Sector,còn công việc còn lại tự bộ điều khiển đĩa phải làm Formatvật lý phải đợc thực hiện trớc khi đĩa đợc đa vào sử dụng

1.2 Cấu trúc logic

Mỗi hệ điều hành cần thiết phải tổ chức cho mình mộtvài cấu trúc nào đó giúp cho việc kiểm soát đĩa đợc nhanhchóng và chính xác, cho biết phần nào là dùng để chứa dữliệu, phần nào còn trống v.v Cách ghi nhớ những cấu trúc nhthế lên đĩa đợc gọi là Format logic đĩa

Đối với MS-DOS thì bất kỳ loại đĩa nào DOS cũng tổ chức

đĩa thành các phần sau: BootSector, bảng FAT ( FileAllocation Table ), th mục gốc (Root Directory) và phần dữliệu ( ba phần đầu đôi khi đợc gọi là vùng hệ thống)

Trên đĩa cứng, với dung lợng quá lớn, có thể chia thành từngphần khác nhau đợc gọi là Partition, do đó còn phải thêm mộtphần thứ năm là bảng phân vùng (Partition Table), thông tincủa bảng phân vùng đợc chứa ở sector đầu tiên của ổ đĩacứng Bây giờ chúng ta sẽ xét cụ thể thông tin chứa trong cácphần cấu trúc logic đó của ổ đĩa, các thông tin này do DOScấu trúc lấy khi thực hiện format logic các ổ đĩa từ DOS dựavào các thông tin thiết lập này để quản lý hệ thống tệp

Trang 5

1 Cấu trúc BootSector : Đối với đĩa mềm, BootSector luôn

chiếm Sector đầu tiên trên track 0, mặt 1 của đĩa

Offset size ( byte ) Nội dung thông tin

Hình 1-3 Các thông tin trong bootsector ( từ DOS 3.xx

về trớc )

Đối với đĩa cứng thì vị trí này là Partition Table Sau khi máytính thực hiện xong quá trình test BIOS thì thông tin củaBootSector sẽ đợc đa vào địa chỉ 0:07C00h và quyền điềukhiển sẽ đợc trao lại cho đoạn mã nằm trong BootSector, đoạnmã này có nhiệm vụ tải các file hệ thống vào nếu có Ngoài

ra, BootSector còn chứa một bảng các tham số quan trọng

đến cấu trúc đĩa, bảng này đợc ghi vào trong quá trìnhFormat logic đĩa và ngay cả đối với những đĩa không phải

là đĩa Boot đợc Trong hình 1-3 là cấu trúc của bảng cáctham số đĩa BPB (BIOS Parameter Block), bảng tham số này

0 3 JMP xxxx, lệnh nhảy đến đoạn mã boot

3 8 Tên công ty hay phiên bản của hệ điều hành 0Bh 2 Số bytes / sector - bắt đầu của bảng BPB 0Dh 1 Số sector / cluster

0Ch 2 số sector giành cho bootsector

10h 1 số bảng FAT

11h 2 số đầu vào tối đa cho th mục

13h 2 tổng số sector trên đĩa ( hay partition )

15h 1 ký hiệu dạng đĩa ( F0 - đĩa mềm; F8 - đĩa cứng )

16h 2 số sector cho 1 FAT - kết thúc BPB

18h 2 số sector / 1 track

1Ah 2 số nặt của đĩa ( số đầu đọc )

1Ch 2 số sector bị che

Trang 6

ở offset 0B của BootSector Đối với DOS 4.xx do số lợng Sectorquản lý đợc không còn nằm trong giới hạn 2 byte, do đó giá trịtrong offset 13h đã trở nên “chật hẹp” Bắt đầu từ DOS 4.xx,cấu trúc của bảng đã có một sự sửa đổi và bổ sung nhỏ, tuyvậy vẫn không làm mất đi cấu trúc của nó trớc đó, hình 1-3

b Đoạn mã cho BootSector chỉ chiếm đúng một Sector,nghĩa là chỉ có đúng 512 byte, trừ đi bảng tham số BPB,phần còn lại thì còn quá ít cho một chơng trình tự boot làmviệc Vì vậy các đoạn mã dới DOS đều chỉ làm các công việcsau đây:

- Thay bảng tham số đĩa mềm (ngắt 1Eh)

- Định vị và đọc Sector đầu tiên của Boot vào địa chỉ0:0500h

- Dò tìm và đọc 2 file hệ thống IO.SYS và MSDOS.SYS,

để nạp chúng vào bộ nhớ rồi trao quyền điều khiển cho cácfile này, nếu không có thì đĩa không phải là đĩa hệ thống Offset size ( bytes ) Nội dung thông tin

Hình 1-3 b các thông tin sửa đổi trong bootsector từDOS 4.xx

1Ch 4 số bytes bị che ( điều chỉnh lên 32 bit )

20h 4 tổng số sector trên đĩa ( nếu offset 13h = 0 ) 24h 1 số hiệu ổ đĩa vật lý ( 0 - đĩa mềm; 80 - đĩa cứng )

25h 1 ch a dùng

26h 1 ký hiệu nhận diện DOS ( giá trị = 26 )

27h 4 serial number của ổ đĩa

2Bh 13 volume label của đĩa

36h 8 ch a dùng

3Eh ? đầu đoạn mã ch ơng trình

Trang 7

2 Cấu trúc của FAT ( File Allocation Table ) : Đây là một

trong hai cấu trúc quan trọng nhất (cấu trúc thứ hai là Root)

mà DOS đã khởi tạo trong quá trình Format logic đĩa Cấutrúc này dùng để quản lý File trên đĩa cũng nh cho biếtSector nào đã chứa dữ liệu và Sector nào đã hỏng, sector nàocòn trống, ở mức này DOS đã đa ra một số khái niệm mới

a) Liên cung ( Cluster ) : Khi đĩa đợc Format logic, đơn

vị nhỏ nhất trên đĩa mà DOS có thể quản lý đợc là Sector

Nh thế DOS có thể quản lý từng Sector một, xem nó còn đợccấp phát hay cha, tuy nhiên với một đĩa có dung lợng lớn (th-ờng là với đĩa cứng) thì số Sector quá lớn không thể quản lýtheo cách này mà thay vào đó DOS đa ra một khái niệm làliên cung: là tổng hợp nhiều Sector, do đó thay vì phải quản

lý nhiều Sector DOS chỉ quản lý các Cluster Số lợng Cluster sẽgiảm đi nhiều nếu ta tăng số lợng Sector cho một Cluster

b) Khái niệm về FAT : Vấn đề phức tạp và then chốt của

việc quản lý File trên đĩa là làm sao quản lý đợc sự thay đổikích thức các File Đây là một điều tất nhiên vì khi làm việcvới máy tính đòi hỏi ta phải truy xuất đến File trên đĩa Xét

ví dụ sau: Giả sử có một File có kích thớc 2250 byte đợc lutrên đĩa có dung lợng 1.44Mb (đối với loại đĩa này 1 Sector

là 1 Cluster) thì ta cần phải dùng đến 5 Cluster để chứa Filenày trong đó 4 Cluster đầu chứa 512x4=2048 byte vàCluster thứ 5 chứa 2250-2048=202 byte ( không thể ghi 1khối nhỏ hơn 1 sector ) Giả sử có 1 File thứ hai đợc ghi lên 7Sector kế đó, vấn đề đặt ra là làm thế nào khi ta muốn bổsung 260 byte vào File đầu? Rõ ràng ta chỉ có thể bổ sungvào Sector cuối File ( Sector thứ 5) sector này chỉ còn 512-202=310 byte Nh thế vẫn còn d 640-310=150 bytes màkhông biết phải để vào đâu Không thể ghi vào Sector tiếp

Trang 8

theo vì Sector này đã dùng cho file thứ 2 Cách giải quyết ởng chừng nh đơn giản là dời File thứ 2 xuống toàn bộ 1Sector, tuy nhiên đây không phải là một phơng pháp tối u vìnếu File thứ 2 chiến đến 1Mb, để ghi thêm 150 byte màphải cần chuyển 1Mb thì quá tốn kém, không cần thiết.

t-Phơng pháp tối u nhất đã đợc DOS đề nghị là dùng một bảng

lu trạng thái các Sector (FAT) cho phép DOS biết đợc Sectornào đã cấp phát, saector nào còn trống, sector nào hỏng, do

đó dễ tìm ra đợc một Sector nào đó còn trống để phân bốcho File 1

Tuy nhiên để quản lý những Sector nh thế cần quá nhiềubyte cho FAT Ví dụ: Với đĩa mềm 1.44 Mb cần 18 Sector.Nếu 1 Sector cần đến 2 byte quản lý thì cần khoảng2x18Kb = 36Kb cho FAT Với đĩa cứng có dung lợng 32Mb sẽ cókhoảng 32M/512 byte = 64 Kb Sector Nếu 1 Sector cần đến

2 byte quản lý thì mất 2x64=128 Kb cho bảng FAT

Nếu 2 byte quản lý Sector thì quản lý đợc 65536 Sector Nếu

đĩa cứng có dung lợng lớn thì số Sector sẽ rất lớn ( tức là phảidùng lớn hơn 2 byte quản lý Sector ), nh vậy FAT sẽ lớn Mặtkhác khi truy nhập dữ liệu, phần lớn FAT sẽ đợc tải vào bộ nhớtrong, kích thớc quá lớn của FAT cũng làm giảm tốc độ truynhập và chiếm nhiều không gian nhớ Đây là một lý do màDOS đa ra khái niệm Cluster nhằm giảm bớt kích thớc đáng

kể của FAT, số Sector/1 Cluster sẽ thay đổi tuỳ thuộc vàodung lợng của đĩa sao cho quản lý tối u nhất, đối với đĩacứng thờng la 4 hoặc 8 Sector/1 Cluster

c) Đánh số Sector - Cluster : Để truy nhập đợc 1 Sector trên

đĩa cần phải có ba thông số: số hiệu cylinder, số hiệu head

và số hiệu sector Sector Vì vậy các thông số này đợc DOS

đánh số:

Trang 9

- Sector : Đánh số Sector lần lợt bắt đầu từ 1: Sector 1, track

0, head 0 cho đến hết số Sector trên track này Tất cả cácSector của 1 track sẽ đợc đánh số tuần tự trớc khi chuyểnsang track kế tiếp Việc đánh số này thực chất nhằm tối uviệc di chuyển đầu đọc của đĩa Khi đã hết Sector trêntrack này mới chuyển sáng track kế tiếp Cách đánh số nh vậygọi là đánh số Sector logic và khác với đánh số sector vật lý,sector vật ký bắt đầu đếm từ 0 Cũng nh vậy các sector trêncylinder 0 đợc đánh số hết mới chuyển sang cylinder 1, v.v

- Khi Sector đã đợc đánh số, Cluster cũng đợc đánh số theo.FAT chỉ quản lý những Cluster phần chứa dữ liệu, do đóCluster đợc bắt đầu đánh số từ những Sector đầu tiên củaphần dữ liệu Nếu đĩa đợc quy định 2 Sector cho 1 Clusterthì 2 Sector đầu tiên của phần dữ liệu ( phần bắt đâù ngaysau th mục gốc ) sẽ đợc đánh số là 2, 2 Sector kế tiếp là 3 và

cứ thế cho đến hết Nh vậy việc đánh số Cluster bắt đầu

từ 2 Do đó nếu 1 đĩa có 15230 Cluster cho phần dữ liệuthì Sector cuối cùng của đĩa đợc đánh số là 15231

d) Nội dung của FAT : Mỗi Cluster trên đĩa đợc DOS quản

lý bằng một entry (đầu vào) Hai entry đầu tiên đợc dùng đềchứa thông tin đặc biệt : byte nhận dạng ( đây cũng là lý doCluster đợc đánh số từ 2 ), entry thứ 3 chứa thông tin vềCluster thứ 2, và cứ thế tiếp tục nh thế cho đến hết

Khi Format logic đĩa, trong khi xây dựng FAT, DOS sẽ lần lợttiến hành đọc từng Sector, nếu gặp lỗi ứng với Cluster nàothì Cluster đó sẽ đợc đánh dấu là hỏng Vấn đề đặt ra là:Khi quản lý File, làm sao DOS có thể biết những Cluster nào

là của File nào? Điều này đợc thực hiện đơn giản nh sau: giátrị entry của Cluster này chứa giá trị là số thứ tự entry tiếptheo của file đó và cứ thế, các Cluster của một File tạo thành

Trang 10

một chuỗi (chain) cho đến khi gặp dấu hiệu kết thúc file.Tuỳ theo kích thớc của entry là 12 hay 16 bit, giá trị củaCluster có thể biến thiên theo bản giá trị trong FAT Các phần

tử FAT chứa các giá trị tơng ứng nh sau:

(F)FFF - phần tử thứ 2 của FAT cha dùng; (F)FF7 - Cluster hỏng.(F)FF8 - (F)FFF - Là Cluster cuối cùng của chain của một file.Sau đây là ví dụ minh hoạ chain trong FAT, chỉ ra tronghình 1-4

Entry 0 và 1 đợc dành cho byte nhận diện, giá trị của Cluster

2 trỏ đến Cluster 3, Cluster 3 trỏ đến Cluster 4, Cluster 4 trỏ

đến Cluster 5 và Cluster 5 = FF cho biết là ở cuối File, và nhvậy có một chain của một file bắt đầu từ cluster 2 đếncluster thứ 5 Cluster 6 và Cluster 7 = 0 cho biết 2 Cluster nàycha dùng tới, có thể cấp phát nếu cần Cluster 18h = F7 chobiết đã đánh dấu hỏng Tuy nhiên ở đây lại xuất hiện mộtcâu hỏi mới là làm thế nào xác định Cluster nào là bắt đầucủa một File (cũng là đầu vào của một chain ), và kích thớc

62

00 00 FF 03 04 05 FF 00 00 09 0A 0B 15 00 00 00 00

10 00 00 00 00 16 17 19 F7 1A 1B FF 00 00 00

00 00

Hình 1-4 Minh hoạ về chain trong FAT

Trang 11

thật sự của File Các thông tin này đợc DOS tổ chức lu trongcấu trúc th mục gốc (root).

e) Phân loại FAT - Định vị Cluster : Giả sử ta có một đĩa

360Kb, có khoảng 720 Sector, nếu sử dụng 2 Sector cho 1Cluster thì cần tời 720/2=360 Cluster Để quản lý số lợngEntry không lớn lắm này, ta phải cần đến bao nhiêu bit chomột entry? Rõ ràng nếu dùng 1 byte, ta không thể quản lý đ-

ợc vì giá trị tối đa mà 1 byte có thể biểu diễn đợc tối đa

255 nhỏ hơn 360 Nhng nếu dùng 2 byte (1 word) để biểudiễn thì lại quá thừa vì giá trị tối đa của nó lên tới 65535 quálớn so với số 360 Cluster mà ta định biểu diễn Cách tốt nhất

là lấy một kích thớc trung gian 12 bit (1 byte rỡi) và khái niệmFAT12 bit ra đời và vẫn đợc dùng cho đến nay và có hiệu quảtốt trên các đĩa có dung lợng nhỏ Với 12 bit có thể quản lý tới

4096 Cluster, số này không phải là nhỏ Tuy nhiên với sự ra đờicủa các đĩa cứng có dung lợng lớn: 80Mb, 640Mb, 1.2Gb v.v,

đã làm xuất hiện nhợc điểm của FAT12 (chỉ quản lý đợc

4096 Cluster ), do đó với số lợng Sector trên đĩa quá lớn thì

có một cách giải quyết là tăng số lợng Sector cho một Cluster.Tuy nhiên đây cũng không phải là cách tối u vì số byte cấpphát thừa cho 1 file sẽ tăng lên nhanh khi số Sector trongCluster tăng lên Vì lý do này FAT16 bit đã ra đời và số lợngCluster quản lý đợc tăng lên 65536 Cluster Với sự xuất hiệncủa 2 loại FAT vấn đề trở nên phức tạp Cách định vị hai loạiFAT này hoàn toàn khác nhau, tuy nhiên có thể tính nh sau:

- Đối với FAT16 mỗi entry của Cluster chiếm 2 byte nên vị trícủa Cluster tiếp theo sẽ bằng giá trị Cluster hiện thời nhân 2

- Đối với FAT12 vì mỗi entry chiếm 1,5 byte nên vị trí củaCluster tiếp theo trên FAT bằng giá trị của Cluster hiện thờinhân 1,5 Tuy nhiên, giá trị tiếp theo phải đợc tính lại vì nó

Trang 12

chỉ chiếm 12 bit trong khi giá trị lớn ra là 1 word (trong cáclệnh máy, không có lệnh nào cho phép lấy 1 giá trị 12 bit).Cách giải quyết nh sau:

- Giả sử cho phần tử thứ 5 ( số lẻ ) của FAT12, chỉ ra nội dungcủa phần tử đó nh sau: chúng ta lấy 5*1,5 = 7,5, khi đó đọcmột từ 7,8 ( đảo ngợc bit- chuyển bit cao - thấp ), đảo xongdịch phải 4 bit, bỏ đi chữ số cuối cùng

- Bây giờ giả sử cho phần tử thứ 4 ( số chẵn ) chúng ta thựchiện nh sau :

Lấy 4* 1,5= 6 , đọc từ 6,7 ( đảo ngợc ), sau đó bỏ đi số

đầu Ví dụ có bảng FAT12 nh sau: F0F0FF034000FF0F00;

chúng ta đọc phần tử thứ 3 nh sau :

Tính 3*1,5 = 4,5; sau đó đọc từ 4,5 ta đợc 4000; thực hiện

đảo bit ta có 0040; bỏ số cuối cùng ta còn lại là 004

Chúng ta cũng có thể tính số hiệu logic của một sector qua

số hiệu bảng FAT, số phần tử của FAT, theo công thức nh sau:( n - 2 )* số sector / cluster + m; trong đó m : số hiệu bảngFAT; n : số hiệu phần tử FAT Ví dụ với bảng FAT12 nh sau :

F0FF034000FF0F, với cluster đầu tiên là 2 Chúng ta tính nh

sau: 2*1,5 = 3, đọc từ 3,4 ta có 0340, đảo bit ta có 4003, bỏ

số đầu tiên ta nhận đợc 003, vậy sector tiếp theo là 003; tatính tiếp 3*1.5 = 4.5, đọc một từ 4,5 ta có 4000, sau đó dảobit và dịch phải 4 bit ta nhận đợc 004, vậy sector tiệp theo là

004 Tính tiếp 4*1,5 = 6, đọc một từ 6,7 ta đợc FF0F, đảo bit

Trang 13

12 + ( 4 - 2 )*2 = 16

Trên đây là khái niệm về bảng FAT, một khái niệm quantrọng mà DOS sử dụng để quản lý hệ thống tệp

3 Th mục gốc ( Root Directory ): Th mục gốc là cấu trúc

bổ sung cho FAT và nằm ngay sau FAT Nếu FAT nhằm mục

đích quản lý ở mức thấp hơn là Sector xem nó còn dùng đợchay không, phân phối nếu cần thì th mục gốc không quantâm điều đó mà chỉ nhằm quản lý các tệp mà không cầnbiết nó gồm những Sector nào? Th mục gốc có nhiệm vụ lugiữ thông tin về các File trên đĩa Mỗi file đợc đặc trng bởimột đầu vào trong th mục gốc Không nh FAT, mỗi phần tửcủa th mục gốc ( đầu vào ) có kích thớc là 32 byte lu giữ cácthông tin sau:

Offset size Nội dung

- Nội dung của th mục gốc: có thể là một File hay một th mụccon (SubDir) Th mục gốc luôn nằm trong vùng hệ thống, ngaysau FAT, kích thớc (số Sector) dành cho th mục gốc đợc tạo ra

Trang 14

trong khi Format logic và không thay đổi trong suốt quátrình sử dụng do đó số entry trong th mục gốc bị giới hạn.Ngợc lại, th mục con lại nằm trong vùng dữ liệu nên kích thớckhông bị hạn chế, do đó có thể tạo ra, thêm, huỷ nh một File.Thực chất th mục con là cấu trúc “lai” giữa File và th mục gốc.

Nó có thể đợc phân phối Cluster để chứa dữ liệu, tăng, giảmkích thớc nh File, tuy nhiên dữ liệu của nó lại là các entry nh

th mục gốc Chính cấu trúc của th mục con làm cho cấu trúctoàn th mục nói chung không bị hạn chế (tất nhiên là hạn chếbởi dung lợng của đĩa) tạo thành một cấu trúc cây cho phépthi hành giải thuật truy xuất trên cây gọn và hiệu quả

Cũng nh những entry của FAT, entry của th mục gốc cũngmang những giá trị nào đó để chỉ ra entry này hoặc đãdùng rồi, hoặc còn trống hay bỏ đi, v.v ký tự đầu tiên củatên File phản ánh điều này Nếu một entry bắt đầu bằngbyte có giá trị:

0: Entry còn trống, do đó cho phép DOS biết nó đã đạttới entry cuối cùng

“.” (dấu chấm): Ký tự này ở byte đầu cho biết entry nàydành riêng cho DOS, đợc dùng trong cấu trúc th mục con

0E5: Cho biết đây là 1 File đã bị xóa Khi xoá 1 File,thực chất DOS chỉ đánh dấu byte đầu tiên là E5 ( ký tự ? ) vàxoá chain của File trong FAT Do đó có thể khôi phục lại Filenếu cha bị File khác đè lên

Một ký tự bất kỳ: là tên một File, entry này đang lu giữthông tin về một File nào đó

Cấu trúc của 2 byte Time nh sau:

Trang 15

Từ bit 0 - 4, 5 bit biểu diễn giây vậy tối đa chỉ biểu diễn

đ-ợc 32, vì vậy DOS qui định một bit là 2 giây

Từ bit 5 - 10, 6 bit biểu diễn phút, vậy tối đa biểu diễn đuợc64

Từ byte 11 - 15, 5 bit biểu diễn giờ, vậy tối đa biểu diễn đợc

32 giờ lớn hơn 24 trong một ngày

Cấu trúc của 2 byte Date nh sau:

127 = 2107

- Thuộc tính File : Các thuộc tính File là : Chỉ đọc ( Read

Only ); hệ thống (System); nhãn (Volume ); Th mục con(SubDir) và lu trữ (Archive), các bit biểu diễn những thuộctính này nh sau, hình 1-6

A D V S H R

Hình 1-6 Cấu trúc của byte thuộc tính tệpDOS dùng 5 bit đầu ( từ bit 0 - 5 ) làm cờ để thiết lập thuộctính của tệp, còn thừa 2 bit 6 - 7 cha sử dụng Nếu bit thiếtlập 1 thì mang thuộc tính tơng ứng, nếu bit tiết lập 0 thìkhông mang thuộc tính đó

Trang 16

4 Cấu trúc Partition Table : Dung lợng đĩa cứng quá lớn đã

làm cho DOS không quản lý nổi, mặt khác đôi lúc ngời ta yêucầu có nhiều hệ điều hành khác nhau trên cùng một máy tính

do đó đòi hỏi phải chia đĩa cứng thành từng phần gọi làPartition Các cấu trúc đĩa đã trình bày ở trên chỉ hoàn toàn

đúng với đĩa mềm, còn đĩa cứng, nếu đã đợc chia thànhcác Partition thì cấu trúc trên vẫn đúng trong Partition màDOS quản lý

Tất cả các thông tin của Partition Table đều nằm trongMaster Boot Master Boot nằm ở Sector 1, Head 0, Cylinder 0,(ở đĩa mềm thì đây chính là BootSector) và BootSectorcủa ổ đĩa cứng sẽ đợc chuyển đến Sector 1, Head 1,Cylinder 0 Master Boot bao gồm 2 phần:

- Phần 1: Chơng trình nhận biết cấu trúc, không phụ thuộcvào loại đĩa, không phụ thuộc vào Version của hệ điềuhành

- Phần 2: Bảng phân chơng (Partition Table): Kết thúc bằngchữ ký 55AA Phần này đặc thù cho từng đĩa Tối đa mỗi

đĩa có 4 Partition Table với địa chỉ xác định nh sau:

- Partition Table 1: Bắt đầu: 1BE

- Partition Table 2: Bắt đầu: 1CE

- Partition Table 3: Bắt đầu: 1DE

- Partition Table 4: Bắt đầu: 1EE

Nếu xen mỗi Partition Table là một phần tử thì mỗi phần tử

có 16 byte và mỗi phần tử khác không sẽ xác định một phầncủa đĩa đợc sử dụng nh đĩa từ độc lập Mỗi phần tử đợcchia thành 4 trờng hợp nh sau, hình 1-7

Hình 1-7 Các tr ờng của một phân vùng

Địa chỉ vật lý đầuĐịa chỉ vật lý cuốiĐịa chỉ logic đầuTổng số

sector trong phân vùng

Trang 17

- Trờng địa chỉ vật lý đầu chia thành 4 phần, mỗi phần 1byte, hình 1-8.

Nếu System = 00 thì đó là đĩa dữ liệu

Nếu system = 80 h thì đó là đĩa hệ thống

Head: Số đầu đọc vật lý bắt đầu

Hai byte Sector và Cylinder đợc chia nhỏ nh sau, hình 1-9

2 bit 6 bit 8 bit

- Địa chỉ vật lý cuối chia thành 4 phần nh sau, hình 1-10

Hai phần đầu mỗi phần 1 byte:

Trang 18

Một đĩa vật lý, do đó ta có thể chia nó thành nhiều phânvùng, các phần con của phần này không đợc dùng làm đĩakhởi động MB ( Master Boot ) của phần này cũng có hai phầnnhng phần 1 thờng để trống Hai phần cuối 2 byte và đợcchia nh trờng 1 của một phân vùng

- Trờng 3: tơng tự trờng 1

Trên đây chúng ta đã xét các khái niệm cơ bản mà DOS sửdụng để quản lý hệ thống tệp Phần tiếp chúng ta sẽ xét cácngắt của DOS

Chơng II : Ngắt, xử lý ngắt và lập trình ngắt

2.1 Giới hiệu về ngắt

Vấn đề thứ nhât : để chơng trình có thể thực hiện chínhxác cần có sự phối hợp nhịp nhàng giữa hoạt động của bộ xử

lý với các hoạt động của các thiết bị vào/ra và ngoại vi Ngắt

là phơng tiện để các thiết bị khác trong hệ thống báo cho

bộ xử lý biết việc thay đổi trạng thái của mình

Ví dụ: chơng trình đang đợc thực hiện, gặp phải phépchia cho 0 thì yêu cầu bộ xử lý phải dừng chơng trình để xử

lý tình huống đã xảy ra sau đó quay lại thực hiện chơngtrình Trên quan điểm lập trình ta có thể định nghĩa ngắt

là việc dừng chơng trình đột xuất thực hiện một chơngtrình để chuyển sang thực hiện một chơng trình khác khi

có một sự kiện nào đó xảy ra Nh vậy ngắt là công cụchuyển điều khiển tới một chơng trình khác mà chơngtrình hiện tại không biết

Vấn đề thứ hai : Chúng ta đã biết chu kỳ lệnh gồm hai bớcchính :

- Lấy ( fetch ) một lệnh

Trang 19

- Thực hiện lệnh đó

Vì vậy khi đã bắt đầu thực hiện một chơng trình thìkhông dừng lại đợc Trong thực tế những khi chúng ta phảidừng chơng trình để làm một việc gì đó, sau đó lại thựchiện tiếp chơng trình Ví dụ ấn một hoặc một tổ hợp phímnào đó thì chơng trình phải dừng lại nhận tín hiệu từ bànphím, sau đó mới thực hiện lại chơng trình Nh vậy là chúng

ta đã yêu cầu máy dừng chơng trình đang thực hiện để xử

lý tình huống vừa xẩy ra, sau đó mới quay lại thực hiện

ch-ơng trình Việc này gọi là ngắt

Trong chu kỳ lệnh còn thêm việc kiểm tra xem có ngắt haykhông nếu có thì xử lý ngắt trớc rồi mới thực hiện tiếp ch-

ơng trình Ngoài ngắt còn có DMA (Direct Memory Access ) truy nhập trực tiếp bộ nhớ không qua CPU Bộ nhớ cho phéptruy nhập trực tiếp, tuy nhiên không cho phép truy nhập

-đồng thời, vì vậy tại mỗi thời điểm chỉ có một bộ vi xử lýtruy nhập Trong trờng hợp này khi CPU nhận đợc tín hiệu vi

xử lý khách yêu cầu truy nhập bộ nhớ thì nó tự tách ra khỏi ờng truyền dữ liệu và cho phép vi xử lý khách truy nhập Truynhập xong mới nối lại

đ-Xét cả hai trờng hợp chúng ta có sơ đồ chu kỳ lệnh nh hình2-1

Ngắt gồm có ngắt cứng và ngắt mềm Ngắt cứng là các sựkiện do phần cứng gây ra, ví dụ nh : ấn phím, hỏng máy, sụtnguồn, v.v Ngắt mềm nằm trong chơng trình, ví dụ nh :phép chia cho 0, các lệnh dừng chơng trình do ngời sử dụngkhi biện luận, v.v Ngoài ra còn phân ra ngắt che đợc vàngắt không che đợc

Ngẳt thực ra là một chơng trình ( giống nh chơng trình conmẫu ), nhng có khác là khi gọi chơng trình con ta phải biết

Trang 20

địa chỉ của nó và nó thờng nằm trong chơng trình củachúng ta Còn khi gọi ngắt chúng ta không cần biết chơngtrình xử lý ngắt nằm ở đâu Các chơng trình xử lý ngắtnằm trong hệ thống (bảng vectơ ngắt ) mà chúng ta sẽ đềcập vấn đề này sau ở trong phần này.

Thực tế việc xử lý ngắt đợc thực hiện nh sau:

- Hệ thống định kỳ sau một khoảng thời gian nhất định(một chu kỳ) xem xét có tín hiệu ngắt hay không, nếu cóthì có 5 giai đoạn tiếp nh sau:

+ Ghi nhận đặc trng sự kiện gây ra tín hiệu ngắt vào ô nhớquy định

IP = địa chỉ đầu ch

ơng trình

Cho AMA Có

Xử lý ngắt

Hình 2-1 Sơ đồ chu kỳ thực hiện lệnh của một

ch ơng trình

Trang 21

+ Ghi nhận trạng thái của chơng trình bị ngắt: bộ đếmlệnh, nội dung các thanh ghi, chế độ làm việc

+ Chuyển địa chỉ chơng trình xử lý ngắt vào thanh ghi

địa chỉ lệnh ( IP ) của bộ vi xử lý

+Thực hiện chơng trình xử lý ngắt

+ Khôi phục lại chơng trình bị ngắt

Ba bớc đầu do phần kỷ thuật đảm nhiệm Hai bớc sau do hệ

điều hành thực hiện Xử lý sự kiện gây ra ngắt đợc đảmbảo bằng chơng trình xử lý ngắt Mỗi loại sự kiện có chơngtrình xử lý ngắt riêng Việc đầu tiên của chơng trình xử lýngắt là lu lại các thông tin về trạng thái của ngắt để bổ sungthêm thông tin đảm bảo tự động ở bớc 2, phần tiếp theo là

đoạn chơng trình xử lý sự kiện Mỗi loại sự kiện đòi hỏi cómột cách xử lý riêng, có thể rất đơn giản nh xác lập một vàibit trong thanh ghi cờ hoặc khối trạng thái, nhng cũng có thểrất phức tạp nh xử lý sai sót khi đọc đĩa từ Phần cuối củachơng trình xử lý ngắt là khôi phục trạng thái tiến trình bịngắt để đảm bảo cho hệ thống tiếp tục hoạt động bình th-ờng Nếu chơng trình bị ngắt không thể tiếp tục thực hiệnvì sự kiện xảy ra ( ví dụ bị tràn ô nhớ trong tính toán) thìsau khi thông báo nguyên nhân, chơng trình ngắt chuyểnchơng trình bị ngắt sang bộ phân xử lý kết thúc

Một số hành động trong xử lý ngắt phải đợc thực hiện ngaylập tức nh nhớ trạng thái chơng trình, xử lý lỗi v.v Chơngtrình thực hiện các xử lý này phải thờng trực trong bộ nhớ và

là một bộ phận trong nhân của hệ điều hành Những xử lý

ít cấp bách hơn sẽ do các chơng trình không thờng trực đảmnhiệm Nh vậy bản thân xử lý ngắt thờng đợc chia thành 2mức : mức 1 và mức 2 ( gọi là độ u tiên )

Trang 22

1.2 Ngắt kép và xử lý ngắt kép

Trong phần trên ta đã xem xét các ngắt xảy ta riêng biệt Trênthực tế nhiều lúc các sự kiện gây ngắt xuất hiện đồng thờihoặc đợc các thiết bị kỹ thuật ghi nhận ở cùng một thời

điểm Ngoài ra ngắt có thể xuất hiện ngay trong lúc đang

xử lý ngắt - tình huống này gọi là ngắt kép Vần đề đặt ra

là làm thế nào để hệ thống có thể xử lý các ngắt kép

Một trong những giải pháp xử lý ngắt kép là gán cho mỗi loạingắt một thứ tự u tiên Nếu xảy ra đồng thời nhiều ngắt thìngắt có u tiên cao nhất sẽ đợc xử lý trớc Lu ý rằng chơngtrình xử lý có thể có thứ tự u tiên khác với mức u tiên trongphân loại ngắt

Nếu ngắt mới xuất hiện ngay trong lúc xử lý ngắt thì nó cóthể bị chặn lại hay đợc xử lý tuỳ theo quan hệ cụ thể của haingắt Nếu đợc xử lý thì chơng trình xử lý ngắt cũ trở thànhchơng trình bị ngắt, còn nếu bị chặn lại thì ngắt mới cóthể bị mất hay đợc xếp vao hàng đợi chờ xử lý Khi chơngtrình bị ngắt rơi vào trạng thái chờ thì nó phải chờ mãi cho

đến khi chơng trình điều khiển chuyển sang trạng thái sẵnsàng tiếp nhận

1.3 Hệ thống tổ chức xử lý ngắt trong DOS của IBM PC

1 Cấu trúc bảng vector ngắt : Máy tính IBM PC có thể

phân biệt đợc 256 tín hiệu ngắt khác nhau Mỗi tín hiệungắt có thể chia thành 256 trờng hợp riêng mà ngời ta gọi làcác chức năng

Các ngắt đợc đánh số từ 0 đến 255 Mỗi ngắt ứng với mộtchơng trình con xử lý ngắt và sẽ đợc thực hiện khi đợc gọi.Bảng vector ngắt là bảng chứa thông tin về mối quan hệ

Trang 23

giữa mỗi ngắt và chơng trình con xử lý ngắt tơng ứng, nóchứa địa chỉ bắt đầu của các chơng trình con xử lý ngắt

và mỗi địa chỉ nh vậy gọi là một vector ngắt Khi một ngắt

đợc gọi, bộ xử lý sẽ tự động tìm địa chỉ bắt đầu của

ch-ơng trình xử lý ngắt tch-ơng ứng trong bảng vector ngắt vàthực hiện chơng trình đó Địa chỉ bắt đầu của mỗi chơngtrình con đợc xác định bởi địa chỉ đoạn và địa chỉoffset Địa chỉ offset đợc đặt sau địa chỉ đoạn Hai địachỉ này đều là 16 bit Nh vậy mỗi địa chỉ ngắt ( vectơngắt ) chiếm 4 byte trong bộ nhớ

Nh vậy độ dài của bảng vectơ ngắt sẽ là 256 * 4 * 1024 byte.Bảng vector ngắt chiếm các ô nhớ từ địa chỉ 0 đến 3FF Sốthứ tự của ngắt chính là số thứ tự của vector ngắt

2 Các thành phần của một ngắt : Mỗi ngắt có số hiệu

ngắt Một ngắt có thể thực hiện nhiều tác vụ khác nhau chức năng Vì vậy để phân loại các chức năng khác nhau,mỗi một chức năng của ngắt đợc xác đinh bởi hai tham số :

-số hiệu ngắt ; -số hiệu chức năng và có thể xem nh cặp (-sốhiệu ngắt, số hiệu chức năng)

1.4 Một số thí dụ về ngắt và lập trình ngắt

Trứơc khi xét một số thí dụ về ngắt và lập trình ngắtchúng ta xét một số khái niệm sau:

1 Khái niệm thanh ghi : Các bộ vi xử lý đều có các thanh

ghi, kích thớc của mỗi thanh ghi và số các thanh ghi của các

bộ vi xử lý khác nhau là khác nhau Tuy vậy với góc độ lậptrình thì coi chúng là tơng đơng Sau đây chúng ta xétcác thanh ghi của bộ xử lý 8086, kích thớc của mỗi thanh ghinày là 16 bit Các thanh ghi AX, BX, CX và DX có thể coi nh đ-

ợc tạo nên từ 2 thanh ghi 8 bit ( gọi là các bit cao và các bit

Trang 24

thấp ) Ví dụ thanh ghi AX phân thành 2 thành phần AH và

AL, trong đó AH là phần cao còn AL là phần thấp Sau đây

là các thanh ghi của bộ vi xử lý 8086, hình 2-2

Các thanh ghi chung:

AX

BX

CX

DX

Các thanh ghi trạng thái :

Các thanh ghi con trỏ và chỉ số

Các thanh ghi đoạn :

Hình 2- 2 Các thanh ghi của bộ vi xử lý 8086.

Các thanh ghi AX, BX, CX, DX là các thanh ghi chung Các

thanh ghi SI, DI thờng đợc gắn với các xử lý dãy ký tự (source

index và destination index) nhng cũng có thể sử dụng làm

thanh ghi chung Thanh ghi SP (con trỏ đỉnh ngăn xếp)

76 Thanh ghi cơ sở Thanh ghi gốc ( source )

Thanh ghi đích ( destination )

BP SI DI

Thanh ghi đoạn ch ơng trình

Thanh ghi đoạn dữ liệu Thanh ghi đoạn mở rộng Thanh ghi đoạn ngăn xếp

CS DS ES SS

Bộ đếm lệnh Thanh ghi trạng thái IP

STATUS

Ngày đăng: 21/01/2018, 11:41

TỪ KHÓA LIÊN QUAN

w