1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình môn học Hệ điều hành: Phần 2

125 63 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 125
Dung lượng 2,59 MB

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

Nội dung

Nối tiếp nội dung phần 1 giáo trình môn học Hệ điều hành, phần 2 giới thiệu tới người học các kiến thức: Deadlock, quản lý bộ nhớ, bộ nhớ ảo, quản lý tập tin, cài đặt hệ thống tập tin, quản lý hệ thống nhập xuất. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Sau khi hӑc xong chѭѫng này, ngѭӡi hӑc nҳm ÿѭӧc nhӳng kiӃn thӭc sau:

x HiӇu mô hình hӋ thӕng vӅ deadlock

x HiӇu các ÿһc ÿiӇm cӫa deadlock

x HiӇu các phѭѫng pháp quҧn lý deadlock

x HiӇu cách ngăn chһn deadlock

x HiӇu cách tránh deadlock

x HiӇu cách phát hiӋn deadlock

x HiӇu cách phөc hӗi tӯ deadlock

II Gi ӟi thiӋu

Trong môi truӡng ÿa chѭѫng, nhiӅu quá trình có thӇ cҥnh tranh mӝt sӕ giӟi hҥntài nguyên Mӝt quá trình yêu cҫu tài nguyên, nӃu tài nguyên không sҷn dùng tҥi thӡiÿiӇm ÿó, quá trình ÿi vào trҥng thái chӡ Quá trình chӡ có thӇ không bao giӡ chuyӇntrҥng thái trӣ lҥi vì tài nguyên chúng yêu cҫu bӏ giӳ bӣi nhӳng quá trình ÿang chӡkhác Trѭӡng hӧp này ÿѭӧc gӑi là deadlock (khoá chӃt)

Trong chѭѫng này chúng ta sӁ mô tҧ các phѭѫng pháp mà hӋ ÿiӅu hành có thӇdùngÿӇ ngăn chһn hay giҧi quyӃt deadlock Hҫu hӃt các hӋ ÿiӅu hành không cung cҩpphѭѫng tiӋn ngăn chһn deadlock nhѭng nhӳng ÿһc ÿiӇm này sӁ ÿѭӧc thêm vào sau ÿó.Vҩn ÿӅ deadlock chӍ có thӇ trӣ thành vҩn ÿӅ phә biӃn, xu hѭӟng hiӋn hành gӗm sӕlѭӧng lӟn quá trình, chѭѫng trình ÿa luӗng, nhiӅu tài nguyên trong hӋ thӕng và ÿһcbiӋt các tұp tin có ÿӡi sӕng dài và nhӳng máy phөc vө cѫ sӣ dӳ liӋu hѫn là các hӋthӕng bó

Mӝt hӋ thӕng chӭa sӕ tài nguyên hӳu hҥn ÿѭӧc phân bә giӳa nhiӅu quá trình cҥnh tranh Các tài nguyên này ÿѭӧc phân chia thành nhiӅu loҥi, mӛi loҥi chӭa mӝt sӕthӇ hiӋn xác ÿӏnh Không gian bӝ nhӟ, các chu kǤ CPU và các thiӃt bӏ nhұp/xuҩt (nhѭmáy in, ÿƭa tӯ) là nhӳng thí dө vӅ loҥi tài nguyên NӃu hӋ thӕng có hai CPUs, thì loҥitài nguyên CPU có hai thӇ hiӋn Tѭѫng tӵ, loҥi tài nguyên máy in có thӇ có năm thӇhiӋn

NӃu mӝt quá trình yêu cҫu mӝt thӇ hiӋn cӫa loҥi tài nguyên thì viӋc cҩp phát bҩt

cӭ thӇ hiӋn nào cӫa loҥi tài nguyên này sӁ thoҧ mãn yêu cҫu NӃu nó không có thì các thӇ hiӋn là không xác ÿӏnh và các lӟp loҥi tài nguyên sӁ không ÿѭӧc ÿӏnh nghƭa hӧp

lý Thí dө, mӝt hӋ thӕng có thӇ có hai máy in Hai loҥi máy in này có thӇ ÿѭӧc ÿӏnhnghƭa trong cùng lӟp loҥi tài nguyên nӃu không có quá trình nào quan tâm máy nào in

ra dӳ liӋu Tuy nhiên, nӃu mӝt máy in ӣ tҫng 9 và máy in khác ӣ tҫng trӋt thì ngѭӡidùngӣ tҫng 9 không thӇ xem hai máy in là tѭѫng tӵ nhau và lӟp tài nguyên riêng rҿcҫn ÿѭӧc ÿӏnh nghƭa cho mӛi máy in

Mӝt quá trình phҧi yêu cҫu mӝt tài nguyên trѭӟc khi sӱ dөng nó, và phҧi giҧiphóng sau khi sӱ dөng nó Mӝt quá trình có thӇ yêu cҫu nhiӅu tài nguyên nhѭ nó ÿѭӧc

Trang 2

yêu cҫu ÿӇ thӵc hiӋn tác vө ÿѭӧc gán cӫa nó Chú ý, sӕ tài nguyên ÿѭӧc yêu cҫukhông vѭӧt quá sӕ lѭӧng tәng cӝng tài nguyên sҷn có trong hӋ thӕng Nói cách khác, mӝt quá trình không thӇ yêu cҫu ba máy in nӃu hӋ thӕng chӍ có hai

Dѭӟi chӃ ÿӝ ÿiӅu hành thông thѭӡng, mӝt quá trình có thӇ sӱ dөng mӝt tài nguyên chӍ trong thӭ tӵ sau:

1) Yêu c ҫu: nӃu yêu cҫu không thӇ ÿѭӧc gán tӭc thì (thí dө, tài nguyên ÿang

ÿѭӧc dùng bӣi quá trình khác) thì quá trình ÿang yêu cҫu phҧi chӡ cho tӟikhi nó có thӇ nhұn ÿѭӧc tài nguyên

2) S ӱ dөng: quá trình có thӇ ÿiӅu hành tài nguyên (thí dө, nӃu tài nguyên là

máy in, quá trình có thӇ in máy in)

3) Gi ҧi phóng: quá trình giҧi phóng tài nguyên

Yêu cҫu và giҧi phóng tài nguyên là các lӡi gӑi hӋ thӕng Thí dө nhѭ yêu cҫu và giҧi phóng thiӃt bӏ, mӣ và ÿóng tұp tin, cҩp phát và giҧi phóng bӝ nhӟ Yêu cҫu và giҧi phóng các tài nguyên khác có thӇ ÿҥt ÿѭӧc thông qua thao tác chӡ wait và báo hiӋu signal Do ÿó, cho mӛi trѭӡng hӧp sӱ dөng, hӋ ÿiӅu hành kiӇm tra ÿӇ ÿҧm bҧorҵng quá trình sӱ dөng yêu cҫu và ÿѭӧc cҩp phát tài nguyên Mӝt bҧng hӋ thӕng ghi nhұn mӛi quá trình giҧi phóng hay ÿѭӧc cҩp phát tài nguyên NӃu mӝt quá trình yêu cҫu tài nguyên mà tài nguyên ÿó hiӋn ÿѭӧc cҩp phát cho mӝt quá trình khác, nó có thӇÿѭӧc thêm vào hàng ÿӧi ÿӇ chӡ tài nguyên này

Mӝt tұp hӧp quá trình trong trҥng thái deadlock khi mӛi quá trình trong tұphӧp này chӡ sӵ kiӋn mà có thӇ ÿѭӧc tҥo ra chӍ bӣi quá trình khác trong tұp hӧp

Nhӳng sӵ kiӋn mà chúng ta quan tâm chӫ yӃu ӣ ÿây là nhұn và giҧi phóng tài nguyên Các tài nguyên có thӇ là tài nguyên vұt lý (thí dө, máy in, ÿƭa tӯ, không gian bӝ nhӟ

và chu kǤ CPU) hay tài nguyên luұn lý (thí dө, tұp tin, semaphores, monitors) Tuy nhiên, các loҥi khác cӫa sӵ kiӋn có thӇ dүn ÿӃn deadlock

ĈӇ minh hoҥ trҥng thái deadlock, chúng ta xét hӋ thӕng vӟi ba ә ÿƭa tӯ Giҧ sӱmӛi quá trình giӳ các mӝt ә ÿƭa tӯ này Bây giӡ, nӃu mӛi quá trình yêu cҫu mӝt ә ÿƭa

tӯ khác thì ba quá trình sӁ ӣ trong trҥng thái deadlock Mӛi quá trình ÿang chӡ mӝt sӵkiӋn “ә ÿƭa tӯ ÿѭӧc giҧi phóng” mà có thӇ ÿѭӧc gây ra chӍ bӣi mӝt trong nhӳng quá trìnhÿang chӡ Thí dө này minh hoҥ deadlock liên quan ÿӃn cùng loҥi tài nguyên

Deadlock cNJng liên quan nhiӅu loҥi tài nguyên khác nhau Thí dө, xét mӝt hӋthӕng vӟi mӝt máy in và mӝt ә ÿƭa tӯ Giҧ sӱ, quá trình Piÿang giӳ ә ÿƭa tӯ và quá trình Pjÿang giӳ máy in NӃu Pi yêu cҫu máy in và Pj yêu cҫu ә ÿƭa tӯ thì deadlock xҧy ra

Mӝt ngѭӡi lұp trình ÿang phát triӇn nhӳng ӭng dөng ÿa luӗng phҧi quan tâm ÿһc biӋt tӟi vҩn ÿӅ này: Các chѭѫng trình ÿa luӗng là ӭng cӱ viên cho vҩn ÿӅ

deadlock vì nhiӅu luӗng có thӇ cҥnh tranh trên tài nguyên ÿѭӧc chia sҿ

Trong mӝt deadlock, các quá trình không bao giӡ hoàn thành viӋc thӵc thi và các tài nguyên hӋ thӕng bӏ buӝc chһt, ngăn chһn các quá trình khác bҳt ÿҫu Trѭӟc khi chúng ta thҧo luұn các phѭѫng pháp khác nhau giҧi quyӃt vҩn ÿӅ deadlock, chúng ta

sӁ mô tҧ các ÿһc ÿiӇm mà deadlock mô tҧ

Trang 3

IV.1 Nhӳng ÿiӅu kiӋn cҫn thiӃt gây ra deadlock

Trѭӡng hӧp deadlock có thӇ phát sinh nӃu bӕn ÿiӅu kiӋn sau xҧy ra cùng mӝtlúc trong hӋ thӕng:

1) Lo ҥi trӯ hӛ tѭѫng: ít nhҩt mӝt tài nguyên phҧi ÿѭӧc giӳ trong chӃ ÿӝ

không chia sҿ; nghƭa là, chӍ mӝt quá trình tҥi cùng mӝt thӡi ÿiӇm có thӇ sӱdөng tài nguyên NӃu mӝt quá trình khác yêu cҫu tài nguyên ÿó, quá trình yêu cҫu phҧi tҥm dӯng cho ÿӃn khi tài nguyên ÿѭӧc giҧi phóng

2) Gi ӳ và chӡ cҩp thêm tài nguyên: quá trình phҧi ÿang giӳ ít nhҩt mӝt tài

nguyên và ÿang chӡ ÿӇ nhұn tài nguyên thêm mà hiӋn ÿang ÿѭӧc giӳ bӣiquá trình khác

3) Không ÿòi lҥi tài nguyên tӯ quá trình ÿang giӳ chúng: Các tài nguyên

không thӇ bӏ ÿòi lҥi; nghƭa là, tài nguyên có thӇ ÿѭӧc giҧi phóng chӍ tӵ ý bӣi quá trình ÿang giӳ nó, sau khi quá trình ÿó hoàn thành tác vө

4) T ӗn tҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên: mӝt tұp hӧp các quá

trình {P0, P1,…,Pn}ÿang chӡ mà trong ÿó P0ÿang chӡ mӝt tài nguyên ÿѭӧc giӳ bӣi P1, P1ÿang chӡ tài nguyên ÿang giӳ bӣi P2,…,Pn-1ÿang chӡtài nguyên ÿang ÿѭӧc giӳ bӣi quá trình P0

Chúng ta nhҩn mҥnh rҵng tҩt cҧ bӕn ÿiӅu kiӋn phҧi cùng phát sinh ÿӇ deadlock xҧy ra ĈiӅu kiӋn chӡ ÿӧi ch trình ÿѭa ÿӃn ÿiӅu kiӋn giӳ-và-chӡ vì thӃ bӕn ÿiӅu kiӋnkhông hoàn toàn ÿӝc lұp

IV.2 Ĉӗ thӏ cҩp phát tài nguyên

Deadlock có thӇ mô tҧ chính xác hѫn bҵng cách hiӇn thӏ ÿӗ thӏ có hѭӟng gӑi là

ÿӗ thӏ cҩp phát tài nguyên hӋ thӕng Ĉӗ thӏ này chӭa mӝt tұp các ÿӍnh V và tұp hӧpcác cҥnh E Mӝt tұp các ÿӍnh V ÿѭӧc chia làm hai loҥi nút P = {P1, P2,…,Pn} là tұphӧp các quá trình hoҥt ÿӝng trong hӋ thӕng, và R = {R1, R2, , Rm} là tұp hӧp chӭatҩt cҧ các loҥi tài nguyên trong hӋ thӕng

Mӝt cҥnh có hѭӟng tӯ quá trình Pi tӟi loҥi tài nguyên Rjÿѭӧc ký hiӋu PioRj;

nó biӇu thӏ rҵng quá trình Piÿã yêu cҫu loҥi tài nguyên Rj và hiӋn ÿang chӡ loҥi tài nguyênÿó Mӝt cҥnh có hѭӟng tӯ loҥi tài nguyên Rj tӟi quá trình Piÿѭӧc hiӇn thӏ bӣi

Rjo Pi; nó hiӇn thӏ rҵng thӇ hiӋn cӫa loҥi tài nguyên Rjÿã ÿѭӧc cҩp phát tӟi quá trình

Pi Mӝt cҥnh có hѭӟng Pio Rjÿѭӧc gӑi là cҥnh yêu cҫu; mӝt cҥnh có hѭӟng Rjo Pi

ÿѭӧc gӑi là cҥnh gán

Bҵng hình tѭӧng, chúng ta hiӇn thӏ mӛi quá trình Pi là mӝt hình tròn, và mӛiloҥi tài nguyên Rj là hình chӳ nhұt Vì loҥi tài nguyên Rj có thӇ có nhiӅu hѫn mӝt thӇhiӋn, chúng ta hiӇn thӏ mӛi thӇ hiӋn là mӝt chҩm nҵm trong hình vuông Chú ý rҵngmӝt cҥnh yêu cҫu trӓ tӟi chӍ mӝt hình vuông Rj, trái lҥi mӝt cҥnh gán cNJng phҧi gán tӟi mӝt trong các dҩu chҩm trong hình vuông

Khi quá trình Pi yêu cҫu mӝt thӇ hiӋn cӫa loҥi tài nguyên Rj, mӝt cҥnh yêu cҫuÿѭӧc chèn vào ÿӗ thӏ cҩp phát tài nguyên Khi yêu cҫu này có thӇ ÿѭӧc ÿáp ӭng, cҥnhyêu cҫu lұp tӭc ÿѭӧc truyӅn tӟi cҥnh gán Khi quá trình không còn cҫn truy xuҩt tӟitài nguyên, nó giҧi phóng tài nguyên, và khi ÿó dүn ÿӃn cҥnh gán bӏ xoá

Ĉӗ thӏ cҩp phát tài nguyên ÿѭӧc hiӇn thӏ trong hình VI-1 dѭӟi ÿây mô tҧ trѭӡng hӧpsau:

Trang 4

x Các thӇ hiӋn tài nguyên

o Mӝt thӇ hiӋn cӫa tài nguyên loҥi R1

o Hai thӇ hiӋn cӫa tài nguyên loҥi R2

o Mӝt thӇ hiӋn cӫa tài nguyên loҥi R3

o Mӝt thӇ hiӋn cӫa tài nguyên loҥi R4

o Quá trình P3ÿang giӳ mӝt thӇ hiӋn cӫa R3

Ĉӗ thӏ cҩp phát tài nguyên hiӇn thӏ rҵng, nӃu ÿӗ thӏ không chӭa chu trình, thì không có quá trình nào trong hӋ thӕng bӏ deadlock NӃu ÿӗ thӏ có chӭa chu trình, thì deadlock có thӇ tӗn tҥi

NӃu mӛi loҥi tài nguyên có chính xác mӝt thӇ hiӋn, thì mӝt chu trình ngө ý rҵngmӝt deadlock xҧy ra NӃu mӝt chu trình bao gӗm chӍ mӝt tұp hӧp các loҥi tài nguyên, mӛi loҥi tài nguyên chӍ có mӝt thӇ hiӋn thì deadlock xҧy ra Mӛi quá trình chӭa trong chu trình bӏ deadlock Trong trѭӡng hӧp này, mӝt chu trình trong ÿӗ thӏ là ÿiӅu kiӋncҫn và ÿӫ ÿӇ tӗn tҥi deadlock

NӃu mӛi loҥi tài nguyên có nhiӅu thӇ hiӋn thì chu trình không ngө ý deadlock xҧy Trong trѭӡng hӧp này, mӝt chu trình trong ÿӗ thӏ là ÿiӅu kiӋn cҫn nhѭng chѭa ÿӫ

ÿӇ tӗn tҥi deadlock

ĈӇ hiӇn thӏ khái niӋm này, chúng ta xem lҥi ÿӗ thӏ ӣ hình VII-1 ӣ trên Giҧ sӱquá trình P3 yêu cҫu mӝt thӇ hiӋn cӫa loҥi tài nguyên R2 Vì không có thӇ hiӋn tài nguyên hiӋn có, mӝt cҥnh yêu cҫu P o R ÿѭӧc thêm vào ÿӗ thӏ (hình VI-2) Tҥi thӡi

Trang 5

P1o R1o P2o R3o P3o R2o P1

P2o R3o P3o R2o P2

Hình 0-2 Ĉӗ thӏ cҩp phát tài nguyên vӟi deadlock

Quá trình P1, P2, và P3 bӏ deadlock Quá trình P3ÿang chӡ tài nguyên R3, hiӋnÿѭӧc giӳ bӣi quá trình P2 Hay nói cách khác, quá trình P3ÿang chӡ quá trình P1 hay

P2 giҧi phóng tài nguyên R2 Ngoài ra, quá trình P1ÿang chӡ quá trình P2 giҧi phóng tài nguyên R1

Bây giӡ xem xét ÿӗ thӏ cҩp phát tài nguyên trong hình VI-3 dѭӟi ÿây Trong thí

dө này, chúng ta cNJng có mӝt chu kǤ

P1o R1o P3o R2o P1

Hình 0-3 Ĉӗ thӏ cҩp phát tài nguyên có chu trình nhѭng không bӏ deadlock

Trang 6

Tuy nhiên, không có deadlock Chú ý rҵng quá trình P4 có thӇ giҧi phóng thӇhiӋn cӫa loҥi tài nguyên R2 Tài nguyên ÿó có thӇ ÿѭӧc cҩp phát tӟi P3 sau ÿó, chu trình sӁ không còn

Tóm lҥi, nӃu ÿӗ thӏ cҩp phát tài nguyên không có chu trình thì hӋ thӕng không

có trҥng thái deadlock Ngoài ra, nӃu có chu trình thì có thӇ có hoһc không trҥng thái deadlock Nhұn xét này là quan trӑng khi chúng ta giҧi quyӃt vҩn ÿӅ deadlock

Phҫn lӟn, chúng ta có thӇ giҧi quyӃt vҩn ÿӅ deadlock theo mӝt trong ba cách:

x Chúng ta có thӇ sӱ dөng mӝt giao thӭc ÿӇ ngăn chһn hay tránh deadlocks, ÿҧmbҧo rҵng hӋ thӕng sӁ không bao giӡ ÿi vào trҥng thái deadlock

x Chúng ta có thӇ cho phép hӋ thӕng ÿi vào trҥng thái deadlock, phát hiӋn nó và phөc hӗi

x Chúng ta có thӇ bӓ qua hoàn toàn vҩn ÿӅ này và giҧ vӡ deadlock không bao giӡ xҧy ra trong hӋ thӕng Giҧi pháp này ÿѭӧc dùng trong nhiӅu hӋ ÿiӅu hành,

Ngѭӧc lҥi, tránh deadlock yêu cҫu hӋ ÿiӅu hành cung cҩp nhӳng thông tin bәsung tұp trung vào loҥi tài nguyên nào mӝt quá trình sӁ yêu cҫu và sӱ dөng trong thӡigian sӕng cӫa nó Vӟi nhӳng kiӃn thӭc bә sung này, chúng ta có thӇ quyӃt ÿӏnh ÿӕivӟi mӛi yêu cҫu quá trình nên chӡ hay không ĈӇ quyӃt ÿӏnh yêu cҫu hiӋn tҥi có thӇÿѭӧc thoҧ mãn hay phҧi bӏ trì hoãn, hӋ thӕng phҧi xem xét tài nguyên hiӋn có, tài nguyên hiӋn cҩp phát cho mӛi quá trình, và các yêu cҫu và giҧi phóng tѭѫng lai cӫamӛi quá trình

NӃu mӝt hӋ thӕng không dùng giҧi thuұt ngăn chһn hay tránh deadlock thì trѭӡng hӧp deadlock có thӇ xҧy ra Trong môi trѭӡng này, hӋ thӕng có thӇ cung cҩpmӝt giҧi thuұt ÿӇ xem xét trҥng thái cӫa hӋ thӕng ÿӇ xác ÿӏnh deadlock có xҧy ra hay không và giҧi thuұt phөc hӗi tӯ deadlock

NӃu hӋ thӕng không ÿҧm bҧo rҵng deadlock sӁ không bao giӡ xҧy ra và cNJngkhông cung cҩp mӝt cѫ chӃ ÿӇ phát hiӋn và phөc hӗi deadlock thì có thӇ dүn ÿӃntrѭӡng hӧp hӋ thӕng ӣ trong trҥng thái deadlock Trong trѭӡng hӧp này, deadlock khôngÿѭӧc phát hiӋn sӁ làm giҧm năng lӵc hӋ thӕng vì tài nguyên ÿang ÿѭӧc giӳ bӣinhӳng quá trình mà chúng không thӇ thӵc thi, ÿi vào trҥng thái deadlock Cuӕi cùng,

hӋ thӕng sӁ dӯng các chӭc năng và cҫn ÿѭӧc khӣi ÿӝng lҥi bҵng thӫ công

Mһc dù phѭѫng pháp này dѭӡng nhѭ không là tiӃp cұn khҧ thi ÿӕi vӟi vҩn ÿӅdeadlock nhѭng nó ÿѭӧc dùng trong mӝt sӕ hӋ ÿiӅu hành Trong nhiӅu hӋ thӕng,deadlock xҧy ra không thѭӡng xuyên; do ÿó phѭѫng pháp này là rҿ hѫn chi phí cho phѭѫng pháp ngăn chһn deadlock, tránh deadlock, hay phát hiӋn và phөc hӗi deadlock

mà chúng phҧi ÿѭӧc sӱ dөng liên tөc Trong mӝt sӕ trѭӡng hӧp, hӋ thӕng ӣ trong trҥng thái cô ÿһc nhѭng không ӣ trҥng thái deadlock Nhѭ thí dө, xem xét mӝt quá

Trang 7

ÿӏnh thӡi biӇu không trѭng dөng) và không bao giӡ trҧ vӅ ÿiӅu khiӇn ÿӕi vӟi hӋ ÿiӅuhành Do ÿó, hӋ thӕng phҧi có phѭѫng pháp phөc hӗi bҵng thӫ công cho các ÿiӅukiӋn không deadlock và có thӇ ÿѫn giҧn sӱ dөng các kӻ thuұt ÿó cho viӋc phөc hӗideadlock.

ĈӇ deadlock xҧy ra, mӝt trong bӕn ÿiӅu kiӋn cҫn phҧi xҧy ra Bҵng cách ÿҧmbҧo ít nhҩt mӝt trong bӕn ÿiӅu kiӋn này không thӇ xҧy ra, chúng ta có thӇ ngăn chһnviӋc xҧy ra cӫa deadlock Chúng ta tìm hiӇu tӹ mӻ tiӃp cұn này bҵng cách xem xét mӛi ÿiӅu kiӋn cҫn riêng rҿ nhau

có thӇ ÿѭӧc gán truy xuҩt cùng lúc tұp tin Mӝt quá trình không bao giӡ yêu cҫu chӡtài nguyên có thӇ chia sҿ Tuy nhiên, thѭӡng chúng ta không thӇ ngăn chһn deadlock bҵng cách tӯ chӕi ÿiӅu kiӋn loҥi trӯ hӛ tѭѫng: mӝt sӕ tài nguyên vӅ thӵc chҩt không thӇ chia sҿ

VI.2 Giӳ và chӡ cҩp thêm tài nguyên

ĈӇ ÿҧm bҧo ÿiӅu kiӋn giӳ-và-chӡ cҩp thêm tài nguyên không bao giӡ xҧy ra trong hӋ thӕng, chúng ta phҧi ÿҧm bҧo rҵng bҩt cӭ khi nào mӝt quá trình yêu cҫu tài nguyên, nó không giӳ bҩt cӭ tài nguyên nào khác Mӝt giao thӭc có thӇ ÿѭӧc dùng là ÿòi hӓi mӛi quá trình yêu cҫu và ÿѭӧc cҩp phát tҩt cҧ tài nguyên trѭӟc khi nó bҳt ÿҫuthӵc thi Chúng ta có thӇ cài ÿһt sӵ cung cҩp này bҵng cách yêu cҫu các lӡi gӑi hӋthӕng yêu cҫu tài nguyên cho mӝt quá trình trѭӟc tҩt cҧ các lӡi gӑi hӋ thӕng khác Mӝt giao thӭc khác cho phép mӝt quá trình yêu cҫu tài nguyên chӍ khi quá trình này không có tài nguyên nào Mӝt quá trình có thӇ yêu cҫu mӝt sӕ tài nguyên và dùng chúng Tuy nhiên, trѭӟc khi nó có thӇ yêu cҫu bҩt kǤ tài nguyên bә sung nào, nó phҧigiҧi phóng tҩt cҧ tài nguyên mà nó hiӋn ÿang ÿѭӧc cҩp phát

ĈӇ hiӇn thӏ sӵ khác nhau giӳa hai giao thӭc, chúng ta xét mӝt quá trình chép dӳliӋu tӯ băng tӯ tӟi tұp tin ÿƭa, sҳp xӃp tұp tin ÿƭa và sau ÿó in kӃt quҧ ra máy in NӃutҩt cҧ tài nguyên phҧi ÿѭӧc yêu cҫu cùng mӝt lúc thì khӣi ÿҫu quá trình phҧi yêu cҫubăng tӯ, tұp tin ÿƭa và máy in Nó sӁ giӳ máy in trong toàn thӡi gian thӵc thi cӫa nó mһc dù nó cҫn máy in chӍ ӣ giai ÿoҥn cuӕi

Phѭѫng pháp thӭ hai cho phép quá trình yêu cҫu ban ÿҫu chӍ băng tӯ và tұp tin ÿƭa Nó chép dӳ liӋu tӯ băng tӯ tӟi ÿƭa, rӗi giҧi phóng cҧ hai băng tӯ và ÿƭa Sau ÿó,quá trình phҧi yêu cҫu lҥi tұp tin ÿƭa và máy in Sau ÿó, chép tұp tin ÿƭa tӟi máy in, nó giҧi phóng hai tài nguyên này và kӃt thúc

Hai giao thӭc này có hai nhѭӧc ÿiӇm chӫ yӃu Thӭ nhҩt, viӋc sӱ dөng tài

nguyên có thӇ chұm vì nhiӅu tài nguyên có thӇ ÿѭӧc cҩp nhѭng không ÿѭӧc sӱ dөngtrong thӡi gian dài Trong thí dө ÿѭӧc cho, chúng ta có thӇ giҧi phóng băng tӯ và tұptinÿƭa, sau ÿó yêu cҫu lҥi tұp tin ÿƭa và máy in chӍ nӃu chúng ta ÿҧm bҧo rҵng dӳ liӋucӫa chúng ta sӁ vүn còn trên tұp tin ÿƭa NӃu chúng ta không thӇ ÿҧm bҧo rҵng dӳ liӋu

Trang 8

vүn còn tұp tin ÿƭa thì chúng ta phҧi yêu cҫu tҩt cҧ tài nguyên tҥi thӡi ÿiӇm bҳt ÿҫucho cҧ hai giao thӭc Thӭ hai, ÿói tài nguyên là có thӇ Mӝt quá trình cҫn nhiӅu tài nguyên phә biӃn có thӇ phҧi ÿӧi vô hҥn ÿӏnh vì mӝt tài nguyên mà nó cҫn luôn ÿѭӧccҩp phát cho quá trình khác

VI.3 Không ÿòi lҥi tài nguyên tӯ quá trình ÿang giӳ chúng

ĈiӅu kiӋn cҫn thӭ ba là không ÿòi lҥi nhӳng tài nguyên ÿã ÿѭӧc cҩp phát rӗi ĈӇÿҧm bҧo ÿiӅu kiӋn này không xҧy ra, chúng ta có thӇ dùng giao thӭc sau NӃu mӝt quá trìnhÿang giӳ mӝt sӕ tài nguyên và yêu cҫu tài nguyên khác mà không ÿѭӧc cҩp phát tӭc thì tӟi nó (nghƭa là, quá trình phҧi chӡ) thì tҩt cҧ tài nguyên hiӋn ÿang giӳ ÿѭӧcÿòi lҥi Nói cách khác, nhӳng tài nguyên này ÿѭӧc giҧi phóng hoàn toàn Nhӳng tài nguyên bӏ ÿòi lҥi ÿѭӧc thêm tӟi danh sách các tài nguyên mà quá trình ÿang chӡ Quá trình sӁ ÿѭӧc khӣi ÿӝng lҥi chӍ khi nó có thӇ nhұn lҥi tài nguyên cNJ cӫa nó cNJng nhѭcác tài nguyên mӟi mà nó ÿang yêu cҫu

Có mӝt sӵ chӑn lӵa khác, nӃu mӝt quá trình yêu cҫu mӝt sӕ tài nguyên, ÿҫu tiên chúng ta kiӇm tra chúng có sҷn không NӃu tài nguyên có sҷn, chúng ta cҩp phát chúng NӃu tài nguyên không có sҷn, chúng ta kiӇm tra chúng có ÿѭӧc cҩp phát tӟimӝt sӕ quá trình khác ÿang chӡ tài nguyên bә sung NӃu ÿúng nhѭ thӃ, chúng ta lҩylҥi tài nguyên mong muӕn ÿó tӯ quá trình ÿang ÿӧi và cҩp chúng cho quá trình ÿangyêu cҫu NӃu tài nguyên không sҷn có hay ÿѭӧc giӳ bӣi mӝt quá trình ÿang ÿӧi, quá trìnhÿang yêu cҫu phҧi chӡ Trong khi nó ÿang chӡ, mӝt sӕ tài nguyên cӫa nó có thӇÿѭӧc ÿòi lҥi chӍ nӃu quá trình khác yêu cҫu chúng Mӝt quá trình có thӇ ÿѭӧc khӣiÿӝng lҥi chӍ khi nó ÿѭӧc cҩp các tài nguyên mӟi mà nó ÿang yêu cҫu và phөc hӗi bҩt

cӭ tài nguyên nào ÿã bӏ lҩy lҥi trong khi nó ÿang chӡ

Giao thӭc này thѭӡng ÿѭӧc áp dөng tӟi tài nguyên mà trҥng thái cӫa nó có thӇÿѭӧc lѭu lҥi dӉ dàng và phөc hӗi lҥi sau ÿó, nhѭ các thanh ghi CPU và không gian bӝnhӟ Nó thѭӡng không thӇ ÿѭӧc áp dөng cho các tài nguyên nhѭ máy in và băng tӯ

VI.4 Tӗn tҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên

ĈiӅu kiӋn thӭ tѭ và cNJng là ÿiӅu kiӋn cuӕi cùng cho deadlock là ÿiӅu kiӋn tӗntҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên Mӝt cách ÿӇ ÿҧm bҧo rҵng ÿiӅu kiӋn này không bao giӡ xҧy ra là áp ÿһt toàn bӝ thӭ tӵ cӫa tҩt cҧ loҥi tài nguyên và ÿòi hӓi mӛiquá trình trong thӭ tӵ tăng cӫa sӕ lѭӧng

Gӑi R = {R1, R2, …, Rm} là tұp hӧp loҥi tài nguyên Chúng ta gán mӛi loҥi tài nguyên mӝt sӕ nguyên duy nhҩt, cho phép chúng ta so sánh hai tài nguyên và xác ÿӏnhtài nguyên này có ÿӭng trѭӟc tài nguyên khác hay không trong thӭ tӵ cӫa chúng ta Thông thѭӡng, chúng ta ÿӏnh nghƭa hàm ánh xҥ mӝt-mӝt F: R o N, ӣ ÿây N là tұphӧp các sӕ tӵ nhiên Thí dө, nӃu tұp hӧp các loҥi tài nguyên R gӗm các ә băng tӯ, әÿƭa và máy in thì hàm F có thӇ ÿѭӧc ÿӏnh nghƭa nhѭ sau:

F(ә băng tӯ) = 1, F(ÿƭa tӯ) = 5,

Bây giӡ chúng ta xem giao thӭc sau ÿӇ ngăn chһn deadlock: mӛi quá trình có thӇ yêu cҫu tài nguyên chӍ trong thӭ tӵ tăng cӫa sӕ lѭӧng Nghƭa là, mӝt quá trình ban ÿҫu có thӇ yêu cҫu bҩt cӭ sӕ lѭӧng thӇ hiӋn cӫa mӝt loҥi tài nguyên Ri Sau ÿó, mӝtquá trình có thӇ yêu cҫu các thӇ hiӋn cӫa loҥi tài nguyên Rj nӃu và chӍ nӃu F(Rj) > F(Ri) NӃu mӝt sӕ thӇ hiӋn cӫa cùng loҥi tài nguyên ÿѭӧc yêu cҫu, thì mӝt yêu cҫucho tҩt cҧ thӇ hiӋn phҧi ÿѭӧc cҩp phát Thí dө, sӱ dөng hàm ÿѭӧc ÿӏnh nghƭa trѭӟc ÿó,

Trang 9

mӝt quá trình muӕn dùng ә băng tӯ và máy in tҥi cùng mӝt lúc trѭӟc tiên phҧi yêu cҫu

ә băng tӯ và sau ÿó yêu cҫu máy in

Nói mӝt cách khác, chúng ta yêu cҫu rҵng, bҩt cӭ khi nào mӝt quá trình yêu cҫumӝt thӇ hiӋn cӫa loҥi tài nguyên Rj, nó giҧi phóng bҩt cӭ tài nguyên Ri sao cho F(Ri)tF(Rj)

NӃu có hai giao thӭc ÿѭӧc dùng thì ÿiӅu kiӋn tӗn tҥi chu trình không thӇ xҧy ra Chúng ta có thӇ giҧi thích ÿiӅu này bҵng cách cho rҵng tӗn tҥi chu trình trong ÿӗ thӏcҩp phát tài nguyên tӗn tҥi Gӑi tұp hӧp các quá trình chӭa tӗn tҥi chu trình trong ÿӗthӏ cҩp phát tài nguyên là {P0, P1, … , Pn},ӣ ÿây Piÿang chӡ mӝt tài nguyên Ri, mà Ri

ÿѭӧc giӳ bӣi quá trình Pi+1 Vì sau ÿó quá trình Pi+1ÿang giӳ tài nguyên Ri trong khi yêu cҫu tài nguyên Ri+1, nên chúng ta có F(Ri) < F(Ri+1) cho tҩt cҧ i Nhѭng ÿiӅu kiӋnnày có nghƭa là F(R0) < F(R1) < …< F(Rn) < F(R0) Bҵng qui tҳc bҳt cҫu F(R0) < F(R0),ÿiӅu này là không thӇ Do ÿó, không thӇ có chӡ chu trình

Chú ý rҵng hàm F nên ÿѭӧc ÿӏnh nghƭa dӵa theo thӭ tӵ tӵ nhiên cӫa viӋc sӱdөng tài nguyên trong hӋ thӕng Thí dө, vì ә băng tӯ thѭӡng ÿѭӧc yêu cҫu trѭӟc máy

in nên có thӇ hӧp lý ÿӇ ÿӏnh nghƭa F( ә băng tӯ) < F(máy in)

VII Tránh deadlock

Các giҧi thuұt ngăn chһn deadlock, ÿѭӧc thҧo luұn ӣ VII-6, ngăn chһn deadlock bҵng cách hҥn chӃ cách các yêu cҫu có thӇ ÿѭӧc thӵc hiӋn Các ngăn chһn ÿҧm bҧorҵng ít nhҩt mӝt trong nhӳng ÿiӅu kiӋn cҫn cho deadlock không thӇ xҧy ra Do ÿó,deadlock không thӇ xҧy ra Tuy nhiên, các tác dөng phө có thӇ ngăn chһn deadlock bӣi phѭѫng pháp này là viӋc sӱ dөng thiӃt bӏ chұm và thông lѭӧng hӋ thӕng bӏ giҧm Mӝt phѭѫng pháp khác ÿӇ tránh deadlock là yêu cҫu thông tin bә sung vӅ cách tài nguyên ÿѭӧc yêu cҫu Thí dө, trong mӝt hӋ thӕng vӟi mӝt ә băng tӯ và mӝt máy

in, chúng ta có thӇ bҧo rҵng quá trình P sӁ yêu cҫu ә băng tӯ trѭӟc và sau ÿó máy in trѭӟc khi giҧi phóng cҧ hai tài nguyên Trái lҥi, quá trình Q sӁ yêu cҫu máy in trѭӟc

và sau ÿó ә băng tӯ Vӟi kiӃn thӭc vӅ thӭ tӵ hoàn thành cӫa yêu cҫu và giҧi phóng cho mӛi quá trình, chúng ta có thӇ quyӃt ÿӏnh cho mӛi yêu cҫu cӫa quá trình sӁ chӡhay không Mӛi yêu cҫu ÿòi hӓi hӋ thӕng xem tài nguyên hiӋn có, tài nguyên hiӋnÿѭӧc cҩp tӟi mӛi quá trình, và các yêu cҫu và giҧi phóng tѭѫng lai cӫa mӛi quá trình,

ÿӇ yêu cҫu cӫa quá trình hiӋn tҥi có thӇ ÿѭӧc thoҧ mãn hay phҧi chӡ ÿӇ tránh khҧ năngxҧy ra deadlock

Các giҧi thuұt khác nhau có sӵ khác nhau vӅ lѭӧng và loҥi thông tin ÿѭӧc yêu cҫu Mô hình ÿѫn giҧn và hӳu ích nhҩt yêu cҫu mӛi quá trình khai báo sӕ lӟn nhҩt tài nguyên cӫa mӛi loҥi mà nó cҫn Thông tin trѭӟc vӅ sӕ lѭӧng tӕi ÿa tài nguyên cӫa mӛiloҥi ÿѭӧc yêu cҫu cho mӛi quá trình, có thӇ xây dӵng mӝt giҧi thuұt ÿҧm bҧo hӋ thӕng

sӁ không bao giӡ ÿi vào trҥng thái deadlock Ĉây là giҧi thuұt ÿӏnh nghƭa tiӃp cұntránh deadlock Giҧi thuұt tránh deadlock tӵ xem xét trҥng thái cҩp phát tài nguyên ÿӇÿҧm bҧo ÿiӅu kiӋn tӗn tҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên có thӇ không bao giӡ xҧy ra Trҥng thái cҩp phát tài nguyên ÿѭӧc ÿӏnh nghƭa bӣi sӕ tài nguyên sҷn dùng

và tài nguyên ÿѭӧc cҩp phát và sӕ yêu cҫu tӕi ÿa cӫa các quá trình

VII.1 Trҥng thái an toàn

Mӝt trҥng thái là an toàn nӃu hӋ thӕng có thӇ cҩp phát các tài nguyên tӟi mӛiquá trình trong mӝt vài thӭ tӵ và vүn tránh deadlock Hay nói cách khác, mӝt hӋ thӕng

ӣ trong trҥng thái an toàn chӍ nӃu ӣ ÿó tӗn tҥi mӝt thӭ tӵ an toàn Thӭ tӵ cӫa các quá trình <P1, P2, …, Pn> là mӝt thӭ tӵ an toàn cho trҥng thái cҩp phát hiӋn hành nӃu ÿӕi

Trang 10

vӟi mӛi thӭ tӵ Pi, các tài nguyên mà Pi yêu cҫu vүn có thӇ ÿѭӧc thoҧ mãn bӣi tài nguyên hiӋn có cӝng vӟi các tài nguyên ÿѭӧc giӳ bӣi tҩt cҧ Pj, vӟi j<i Trong trѭӡnghӧp này, nӃu nhӳng tài nguyên mà quá trình Pi yêu cҫu không sҷn dùng tӭc thì thì Pi

có thӇ chӡ cho ÿӃn khi tҩt cҧ Pj hoàn thành Khi chúng hoàn thành, Pi có thӇ ÿҥt ÿѭӧctҩt cҧ nhӳng tài nguyên nó cҫn, hoàn thành các tác vө ÿѭӧc gán, trҧ vӅ nhӳng tài nguyênÿѭӧc cҩp phát cho nó và kӃt thúc Khi Pi kӃt thúc, Pi+1 có thӇ ÿҥt ÿѭӧc các tài nguyên nó cҫn, NӃu không có thӭ tӵ nhѭ thӃ tӗn tҥi thì trҥng thái hӋ thӕng là không

an toàn

Mӝt trҥng thái an toàn không là trҥng thái deadlock Do ÿó, trҥng thái

deadlock là trҥng thái không an toàn Tuy nhiên, không phҧi tҩt cҧ trҥng thái không an toàn là deadlock (hình VI-4) Mӝt trҥng thái không an toàn có thӇ dүn ÿӃn deadlock Vӟi ÿiӅu kiӋn trҥng thái là an toàn, hӋ ÿiӅu hành có thӇ tránh trҥng thái không an toàn (và deadlock) Trong mӝt trҥng thái không an toàn, hӋ ÿiӅu hành có thӇ ngăn chһn các quá trình tӯ nhӳng tài nguyên ÿang yêu cҫu mà deadlock xҧy ra: hành vi cӫa các quá trình này ÿiӅu khiӇn các trҥng thái không an toàn

Hình 0-4 Không gian trҥng thái an toàn, không an toàn, deadlock

ĈӇ minh hoҥ, chúng ta xét mӝt hӋ thӕng vӟi 12 ә băng tӯ và 3 quá trình: P0,

P1, P2 Quá trình P0 yêu cҫu 10 ә băng tӯ, quá trình P1 có thӇ cҫn 4 và quá trình P2 có thӇ cҫn tӟi 9 ә băng tӯ Giҧ sӱ rҵng tҥi thӡi ÿiӇm t0, quá trình P0 giӳ 5 ә băng tӯ, quá trình P1 giӳ 2 và quá trình P2 giӳ 2 ә băng tӯ (Do ÿó, có 3 ә băng tӯ còn rҧnh)

Nhu cҫu tӕi ÿa Nhu cҫu hiӋn tҥi

Tҥi thӡi ÿiӇm t0, hӋ thӕng ӣ trҥng thái an toàn Thӭ tӵ <P1,P0, P2> thoҧ ÿiӅu kiӋn

an toàn vì quá trình P1 có thӇ ÿѭӧc cҩp phát tӭc thì tҩt cҧ các ә ÿƭa tӯ và sau ÿó trҧ lҥichúng (sau ÿó hӋ thӕng có 5 ә băng tӯ sҷn dùng ), sau ÿó quá trình P0 có thӇ nhұn tҩt

cҧ ә băng tӯ và trҧ lҥi chúng (sau ÿó hӋ thӕng sӁ có 10 ә băng tӯ sҷn dùng), và cuӕicùng quá trình P2 có thӇ nhұn tҩt cҧ ә băng tӯ cӫa nó và trҧ lҥi chúng (sau ÿó hӋ thӕng

sӁ có tҩt cҧ 12 ә băng tӯ sҷn dùng)

Mӝt hӋ thӕng có thӇ ÿi tӯ trҥng thái an toàn tӟi mӝt trҥng thái không an toàn Giҧ sӱ rҵng tҥi thӡi ÿiӇm t1, quá trình P2 yêu cҫu và ÿѭӧc cҩp 1 ә băng tӯ nӳa HӋthӕng không còn trong trҥng thái an toàn Tҥi ÿiӇm này, chӍ quá trình P1 có thӇ ÿѭӧccҩp tҩt cҧ ә băng tӯ cӫa nó Khi nó trҧ lҥi chúng, chӍ quá trình P1 có thӇ ÿѭӧc cҩp phát tҩt cҧ ә băng tӯ Khi nó trҧ lҥi chúng, hӋ thӕng chӍ còn 4 ә băng tӯ sҷn có Vì quá

Trang 11

trình P0ÿѭӧc cҩp phát 5 ә băng tӯ, nhѭng có tӕi ÿa 10, quá trình P0 phҧi chӡ Tѭѫng

tӵ, quá trình P2 có thӇ yêu cҫu thêm 6 ә băng tӯ và phҧi chӡ dүn ÿӃn deadlock

Lӛi cӫa chúng ta là gán yêu cҫu tӯ quá trình P2 cho 1 ә băng tӯ nӳa NӃu chúng

ta làm cho P2 phҧi chӡ cho ÿӃn khi các quá trình khác kӃt thúc và giҧi phóng tài nguyên cӫa nó thì chúng ta có thӇ tránh deadlock

Vӟi khái niӋm trҥng thái an toàn ÿѭӧc cho, chúng ta có thӇ ÿӏnh nghƭa các giҧithuұt tránh deadlock Ý tѭӣng ÿѫn giҧn là ÿҧm bҧo hӋ thӕng sӁ luôn còn trong trҥngthái an toàn Khӣi ÿҫu, hӋ thӕng ӣ trong trҥng thái an toàn Bҩt cӭ khi nào mӝt quá trình yêu cҫu mӝt tài nguyên hiӋn có, hӋ thӕng phҧi quyӃt ÿӏnh tài nguyên có thӇ ÿѭӧccҩp phát tӭc thì hoһc quá trình phҧi chӡ Yêu cҫu ÿѭӧc gán chӍ nӃu viӋc cҩp phát ÿӇ

hӋ thӕng trong trҥng thái an toàn

Trong mô hình này, nӃu quá trình yêu cҫu tài nguyên ÿang có, nó có thӇ vүnphҧi chӡ Do ÿó, viӋc sӱ dөng tài nguyên có thӇ chұm hѫn mà không có giҧi thuұttránh deadlock

VII.2 Giҧi thuұt ÿӗ thӏ cҩp phát tài nguyên

NӃu chúng ta có mӝt hӋ thӕng cҩp phát tài nguyên vӟi mӝt thӇ hiӋn cӫa mӛiloҥi, mӝt biӃn dҥng cӫa ÿӗ thӏ cҩp phát tài nguyên ÿѭӧc ÿӏnh nghƭa trong phҫn VI.4.2

có thӇ ÿѭӧc dùng ÿӇ tránh deadlock

Ngoài các cҥnh yêu cҫu và gán, chúng ta giӟi thiӋu mӝt loҥi cҥnh mӟi ÿѭӧc gӑi

là c ̩nh th͑nh c̯u (claim edge) Mӝt cҥnh thӍnh cҫu Pio Rj hiӇn thӏ quá trình Pi có thӇ yêu cҫu tài nguyên Rj vào mӝt thӡi ÿiӇm trong tѭѫng lai Cҥnh này tѭѫng tӵ cҥnhyêu cҫu vӅ phѭѫng hѭӟng nhѭng ÿѭӧc hiӋn diӋn bӣi dҩu ÿӭt khoҧng Khi quá trình Pi

yêu cҫu tài nguyên Rj, cҥnh thӍnh cҫu Pio Rj chuyӇn tӟi cҥnh yêu cҫu Tѭѫng tӵ, khi mӝt tài nguyên Rjÿѭӧc giҧi phóng bӣi Pi, cҥnh gán Rjo Piÿѭӧc chuyӇn trӣ lҥi thành cҥnh thӍnh cҫu Pio Rj Chúng ta chú ý rҵng các tài nguyên phҧi ÿѭӧc yêu cҫu trѭӟctrong hӋ thӕng Nghƭa là, trѭӟc khi Pi bҳt ÿҫu thӵc thi, tҩt cҧ các cҥnh thӍnh cҫu cӫa nó phҧi xuҩt hiӋn trong ÿӗ thӏ cҩp phát tài nguyên Chúng ta có thӇ giҧm nhҽ ÿiӅu kiӋnnày bҵng cách cho phép mӝt cҥnh Pio RjÿӇ ÿѭӧc thêm tӟi ÿӗ thӏ chӍ nӃu tҩt cҧ các cҥnh gҳn liӅn vӟi quá trình Pi là các cҥnh thӍnh cҫu

Giҧ sӱ rҵng Pi yêu cҫu tài nguyên Rj Yêu cҫu có thӇ ÿѭӧc gán chӍ nӃu chuyӇncҥnh yêu cҫu Pio Rj tӟi cҥnh gán RjoPi không dүn ÿӃn viӋc hình thành chu trình trongÿӗ thӏ cҩp phát tài nguyên Chú ý rҵng chúng ta kiӇm tra tính an toàn bҵng cách dùng giҧi thuұt phát hiӋn chu trình Mӝt giҧi thuұt ÿӇ phát hiӋn mӝt chu trình trong ÿӗthӏ này yêu cҫu mӝt thӭ tӵ cӫa n2 thao tác, ӣ ÿây n là sӕ quá trình trong hӋ thӕng

Hình 0-5 Ĉӗ thӏ cҩp phát tài nguyên ÿӇ tránh deadlock

NӃu không có chu trình tӗn tҥi, thì viӋc cҩp phát tài nguyên sӁ ÿӇ lҥi hӋ thӕngtrong trҥng thái an toàn NӃu chu trình ÿѭӧc tìm thҩy thì viӋc cҩp phát sӁ ÿһt hӋ thӕng

Trang 12

trong trҥng thái không an toàn Do ÿó, quá trình Pi sӁ phҧi chӡ yêu cҫu cӫa nó ÿѭӧcthoҧ.

ĈӇ minh hoҥ giҧi thuұt này, chúng ta xét ÿӗ thӏ cҩp phát tài nguyên cӫa hình

VI-5 Giҧ sӱ rҵng P2 yêu cҫu R2 Mһc dù R2 hiӋn rҧnh nhѭng chúng ta không thӇ cҩp phát

nó tӟi P2 vì hoҥt ÿӝng này sӁ tҥo ra chu trình trong ÿӗ thӏ (Hình VI-6) Mӝt chu trình hiӇn thӏ rҵng hӋ thӕng ӣ trong trҥng thái không an toàn NӃu P1 yêu cҫu R2 và P2 yêu cҫu R1 thì deadlock sӁ xҧy ra

Hình 0-6 Trҥng thái không an toàn trong ÿӗ thӏ cҩp phát tài nguyên

VII.3 Giҧi thuұt cӫa Banker

Giҧi thuұt ÿӗ thӏ cҩp phát tài nguyên không thӇ áp dөng tӟi hӋ thӕng cҩp phát tài nguyên vӟi nhiӅu thӇ hiӋn cӫa mӛi loҥi tài nguyên Giҧi thuұt tránh deadlock mà chúng ta mô tҧ tiӃp theo có thӇ áp dөng tӟi mӝt hӋ thӕng nhѭng ít hiӋu quҧ hѫn cѫ chӃ

ÿӗ thӏ cҩp phát tài nguyên Giҧi thuұt này thѭӡng ÿѭӧc gӑi là giҧi thuұt cӫa Banker.

Tênÿѭӧc chӑn vì giҧi thuұt này có thӇ ÿѭӧc dùng trong hӋ thӕng ngân hàng ÿӇ ÿҧmbҧo ngân hàng không bao giӡ cҩp phát tiӅn mһt ÿang có cӫa nó khi nó không thӇ thoҧmãn các yêu cҫu cӫa tҩt cҧ khách hàng

Khi mӝt quá trình mӟi ÿѭa vào hӋ thӕng, nó phҧi khai báo sӕ tӕi ÿa các thӇ hiӋncӫa mӛi loҥi tài nguyên mà nó cҫn Sӕ này có thӇ không vѭӧt quá tәng sӕ tài nguyên trong hӋ thӕng Khi mӝt ngѭӡi dùng yêu cҫu tұp hӧp các tài nguyên, hӋ thӕng phҧixácÿӏnh viӋc cҩp phát cӫa các tài nguyên này sӁ ÿӇ lҥi hӋ thӕng ӣ trҥng thái an toàn hay không NӃu trҥng thái hӋ thӕng sӁ là an toàn, tài nguyên sӁ ÿѭӧc cҩp; ngѭӧc lҥiquá trình phҧi chӡ cho tӟi khi mӝt vài quá trình giҧi phóng ÿӫ tài nguyên

NhiӅu cҩu trúc dӳ liӋu phҧi ÿѭӧc duy trì ÿӇ cài ÿһt giҧi thuұt Banker Nhӳng cҩutrúc dӳ liӋu này mã hoá trҥng thái cӫa hӋ thӕng cҩp phát tài nguyên Gӑi n là sӕ quá trình trong hӋ thӕng và m là sӕ loҥi tài nguyên trong hӋ thӕng Chúng ta cҫn các cҩutrúc dӳ liӋu sau:

x Available: mӝt vector có chiӅu dài m hiӇn thӏ sӕ lѭӧng tài nguyên sҷn dùng cӫa mӛi loҥi NӃu Available[j]= k, có k thӇ hiӋn cӫa loҥi tài nguyên Rj sҷndùng

x Max: mӝt ma trұn n x m ÿӏnh nghƭa sӕ lѭӧng tӕi ÿa yêu cҫu cӫa mӛi quá trình NӃu Max[ i , j ] = k, thì quá trình Pi có thӇ yêu cҫu nhiӅu nhҩt k thӇhiӋn cӫa loҥi tài nguyên Rj

x Allocation: mӝt ma trұn n x m ÿӏnh nghƭa sӕ lѭӧng tài nguyên cӫa mӛi loҥihiӋn ÿѭӧc cҩp tӟi mӛi quá trình NӃu Allocation[ i, j ] = k, thì quá trình Pi

hiӋn ÿѭӧc cҩp k thӇ hiӋn cӫa loҥi tài nguyên Rj

Trang 13

x Need: mӝt ma trұn n x m hiӇn thӏ yêu cҫu tài nguyên còn lҥi cӫa mӛi quá trình NӃu Need[ i, j ] = k, thì quá trình Pi có thӇ cҫn thêm k thӇ hiӋn cӫa loҥitài nguyên RjÿӇ hoàn thành tác vө cӫa nó Chú ý rҵng, Need[ i, j ] = Max[ i,

j ] – Allocation [ i, j ]

Cҩu trúc dӳ liӋu này biӃn ÿәi theo thӡi gian vӅ kích thѭӟc và giá trӏ

ĈӇ ÿѫn giҧn viӋc trình bày cӫa giҧi thuұt Banker, chúng ta thiӃt lұp vài ký hiӋu.Gӑi X và Y là các vector có chiӅu dài n Chúng ta nói rҵng X d Y nӃu và chӍ nӃu X[i]

d Y[i] cho tҩt cҧ i = 1, 2, …, n Thí dө, nӃu X = (1, 7, 3, 2) và Y = (0, 3, 2, 1) thì Y d

X, Y < X nӃu Y d X và Y z X

Chúng ta có thӇ xem xét mӛi dòng trong ma trұn Allocation và Need nhѭ là nhӳng vectors và tham chiӃu tӟi chúng nhѭ Allocationi và Needi tѭѫng ӭng Vector Allocationi xác ÿӏnh tài nguyên hiӋn ÿѭӧc cҩp phát tӟi quá trình Pi; vector Needi xác ÿӏnh các tài nguyên bә sung mà quá trình Pi có thӇ vүn yêu cҫu ÿӇ hoàn thành tác vөcӫa nó

VII.3.1 Giҧi thuұt an toàn

Giҧi thuұt ÿӇ xác ÿӏnh hӋ thӕng ӣ trҥng thái an toàn hay không có thӇ ÿѭӧc mô tҧnhѭ sau:

1) Gӑi Work và Finish là các vector có chiӅu dài m và n tѭѫng ӭng Khӣi tҥoWork:=Available và Finish[i]:=false cho i = 1, 2, …,n

4) NӃu Finish[i] = true cho tҩt cҧ i, thì hӋ thӕng ÿang ӣ trҥng thái an toàn

Giҧi thuұt này có thӇ yêu cҫu ÿӝ phӭc tҥp mxn2 thao tác ÿӇ quyӃt ÿӏnh trҥng thái

là an toàn hay không

VII.3.2 Giҧi thuұt yêu cҫu tài nguyên

Cho Requesti là vector yêu cҫu cho quá trình Pi NӃu Requesti[j] = k, thì quá trình Pi muӕn k thӇ hiӋn cӫa loҥi tài nguyên Rj Khi mӝt yêu cҫu tài nguyên ÿѭӧc thӵchiӋn bӣi quá trình Pi, thì các hoҥt ÿӝng sau ÿѭӧc thӵc hiӋn:

1) NӃu Requestid Needi, di chuyӇn tӟi bѭӟc 2 Ngѭӧc lҥi, phát sinh mӝt ÿiӅukiӋn lӛi vì quá trình vѭӧt quá yêu cҫu tӕi ÿa cӫa nó

2) NӃu Requestid Available, di chuyӇn tӟi bѭӟc 3 Ngѭӧc lҥi, Pi phҧi chӡ vì tài nguyên không sҷn có

3) Giҧ sӱ hӋ thӕng cҩp phát các tài nguyên ÿѭӧc yêu cҫu tӟi quá trình Pi bҵngcách thay ÿәi trҥng thái sau:

Available := Available – Requesti;Allocationi:= Allocationi + Requesti;Needi:= Needi – Requesti;

NӃu kӃt quҧ trҥng thái cҩp phát tài nguyên là an toàn, thì giao dӏch ÿѭӧc hoàn thành

và quá trình Piÿѭӧc cҩp phát tài nguyên cӫa nó Tuy nhiên, nӃu trҥng thái mӟi là không an toàn, thì Pi phҧi chӡ Requesti và trҥng thái cҩp phát tài nguyên cNJ ÿѭӧc phөchӗi

Trang 14

VII.3.3 Thí dө minh hӑa

Xét mӝt hӋ thӕng vӟi 5 quá trình tӯ P0 tӟi P4, và 3 loҥi tài nguyên A, B, C Loҥi tài nguyên A có 10 thӇ hiӋn, loҥi tài nguyên B có 5 thӇ hiӋn và loҥi tài nguyên C

có 7 thӇ hiӋn Giҧ sӱ rҵng tҥi thӡi ÿiӇm T0 trҥng thái hiӋn tҥi cӫa hӋ thӕng nhѭ sau:

Trang 15

VIII Phát hi Ӌn Deadlock

NӃu mӝt hӋ thӕng không thӵc hiӋn giҧi thuұt ngăn chһn deadlock hay tránh deadlock thì trѭӡng hӧp deadlock có thӇ xҧy ra Trong môi trѭӡng này, hӋ thӕng phҧicung cҩp:

x Giҧi thuұt xem xét trҥng thái cӫa hӋ thӕng ÿӇ quyӃt ÿӏnh deadlock có xҧy

ra hay không

x Giҧi thuұt phөc hӗi tӯ deadlock

Trong thҧo luұn dѭӟi ÿây, chúng ta thҧo luұn chi tiӃt vӅ hai yêu cҫu khi chúng liên quan ÿӃn nhӳng hӋ thӕng vӟi chӍ mӝt thӇ hiӋn cӫa mӛi loҥi tài nguyên cNJng nhѭÿӕi vӟi hӋ thӕng có nhiӅu thӇ hiӋn cho mӛi loҥi tài nguyên Tuy nhiên, tҥi thӡi ÿiӇmnày chúng ta chú ý lѭӧc ÿӗ phát hiӋn và phөc hӗi yêu cҫu chi phí bao gӗm không chӍchi phí tҥi thӡi ÿiӇm thӵc thi cho viӋc duy trì thông tin cҫn thiӃt và thӵc thi giҧi thuұtphát hiӋn mà còn các lãng phí có thӇ phát sinh trong viӋc phát hiӋn tӯ deadlock

VIII.1 Mӝt thӇ hiӋn cӫa mӛi loҥi tài nguyên

NӃu tҩt cҧ tài nguyên chӍ có mӝt thӇ hiӋn thì chúng ta có thӇ ÿӏnh nghƭa giҧithuұt phát hiӋn deadlock dùng mӝt biӃn dҥng cӫa ÿӗ thӏ cҩp phát tài nguyên, ÿѭӧc gӑi

làÿӗ thӏ chӡ (wait-for) Chúng ta ÿҥt ÿѭӧc ÿӗ thӏ này tӯ ÿӗ thӏ cҩp phát tài nguyên bҵng cách gӥ bӓ các nút cӫa loҥi tài nguyên và xóa các cҥnh tѭѫng ӭng

Hình 0-7 a) Ĉӗ thӏ cҩp phát tài nguyên b) Ĉӗ thӏ chӡ tѭѫng ӭng

Chính xác hѫn, mӝt cҥnh tӯ Pi tӟi Pj trong ÿӗ thӏ chӡ hiӇn thӏ rҵng quá trình Pi

ÿang chӡ mӝt quá trình PjÿӇ giҧi phóng tài nguyên mà Pi cҫn Cҥnh Pio Pj tӗn tҥitrongÿӗ thӏ chӡ nӃu và chӍ nӃu ÿӗ thӏ cҩp phát tài nguyên tѭѫng ӭng chӭa hai cҥnh Pi

o Rq và Rqo Pjÿӕi vӟi mӝt sӕ tài nguyên Rq Thí dө, trong hình VI-7 dѭӟi ÿây,chúng ta trình bày ÿӗ thӏ cҩp phát tài nguyên và ÿӗ thӏ chӡ tѭѫng ӭng

Nhѭ ÿã ÿӅ cұp trѭӟc ÿó, deadlock tӗn tҥi trong hӋ thӕng nӃu và chӍ nӃu ÿӗ thӏchӡ chӭa chu trình ĈӇ phát hiӋn deadlock, hӋ thӕng cҫn duy trì ÿӗ thӏ chӡ và ÿӏnh kǤgӑi giҧi thuұt ÿӇ tìm kiӃm chu trình trong ÿӗ thӏ

Mӝt giҧi thuұt phát hiӋn chu trình trong ÿӗ thӏ yêu cҫu ÿӝ phӭc tҥp n2 thao tác, ӣÿây n là sӕ cҥnh cӫa ÿӗ thӏ

Trang 16

VIII.2 NhiӅu thӇ hiӋn cӫa mӝt loҥi tài nguyên

Lѭӧc ÿӗ ÿӗ thӏ chӡ không thӇ áp dөng ÿӕi vӟi hӋ thӕng cҩp phát tài nguyên vӟi nhiӅu thӇ hiӋn cho mӛi loҥi tài nguyên Giҧi thuұt phát hiӋn deadlock mà chúng ta

mô tҧ sau ÿây có thӇ áp dөng cho hӋ thӕng này Giҧi thuұt thӵc hiӋn nhiӅu cҩu trúc dӳliӋu thay ÿәi theo thӡi gian mà chúng tѭѫng tӵ nhѭ ÿѭӧc dùng trong giҧi thuұt

Quan hӋ d giӳa hai vectors ÿѭӧc ÿӏnh nghƭa trong phҫn VI.7.3 ĈӇ ký hiӋu ÿѫngiҧn, chúng ta sӁ xem nhӳng hàng trong ma trұn Allocation và Request nhѭ các vector, và sӁ tham chiӃu chúng nhѭ Allocationi và Requesti tѭѫng ӭng Giҧi thuұt phát hiӋn ÿѭӧc mô tҧ ӣ ÿây ÿѫn giҧn khҧo sát mӑi thӭ tӵ cҩp phát có thӇ ÿӕi vӟi các quá trình còn lҥi ÿӇ ÿѭӧc hoàn thành So sánh giҧi thuұt này vӟi giҧi thuұt Banker

1) Gӑi Work và Finish là các vector có chiӅu dài m và n tѭѫng ӭng Khӣi tҥoWork:=Available Cho i = 1, 2, …,n, nӃu Allocationi 0, thì Finish[i]:= false; ngѭӧc lҥi Finish[i]:= true

2) Tìm chӍ sӕ i thӓa:

a) Finish[i] = false b) Requestid Work

NӃu không có i nào thӓa, di chuyӇn tӟi bѭӟc 4

Câu hӓi ÿһt ra là tҥi sao chúng ta trҧ lҥi tài nguyên cӫa quá trình Pi (trong bѭӟc3) ngay sau khi chúng ta xác ÿӏnh rҵng Requestid Work (trong bѭӟc 2b) Chúng ta biӃt rҵng Pi hiӋn tҥi không liên quan deadlock (vì Requestid Work) Do ÿó, chúng ta lҥc quan và khҷng ÿӏnh rҵng Pi sӁ không yêu cҫu thêm tài nguyên nӳa ÿӇ hoàn thành công viӋc cӫa nó; do ÿó nó sӁ trҧ vӅ tҩt cҧ tài nguyên hiӋn ÿѭӧc cҩp phát tӟi hӋ thӕng.NӃu giҧ ÿӏnh cӫa chúng ta không ÿúng, deadlock có thӇ xҧy ra sao ÿó Deadlock sӁÿѭӧc phát hiӋn tҥi thӡi ÿiӇm kӃ tiӃp mà giҧi thuұt phát hiӋn deadlock ÿѭӧc nҥp

ĈӇ minh hoҥ giҧi thuұt này, chúng ta xét hӋ thӕng vӟi 5 quá trình P0ÿӃn P4 và 3 loҥi tài nguyên A, B, C Loҥi tài nguyên A có 7 thӇ hiӋn, loҥi tài nguyên B có 2 thӇhiӋn và loҥi tài nguyên C có 6 thӇ hiӋn Giҧ sӱ rҵng tҥi thӡi ÿiӇm T0, chúng ta có trҥngthái cҩp phát tài nguyên sau:

Allocation Request Available

Trang 17

P4 0 0 2 0 0 2

Chúng ta khҷng ÿӏnh rҵng hӋ thӕng không ӣ trong trҥng thái deadlock Thұt vұy,nӃu chúng ta thӵc thi giҧi thuұt, chúng ta sӁ tìm ra thӭ tӵ <P0, P2, P3, P1, P4> sӁ dүnÿӃn trong Finish[i] = true cho tҩt cҧ i

Bây giӡ giҧ sӱ rҵng quá trình P2 thӵc hiӋn yêu cҫu thêm thӇ hiӋn loҥi C Ma trұnyêu cҫu ÿѭӧc hiӋu chӍnh nhѭ sau:

VIII.3 Sӱ dөng giҧi thuұt phát hiӋn deadlock

Khi nào thì chúng ta nên nҥp giҧi thuұt phát hiӋn deadlock? Câu trҧ lӡi phө thuӝcvào hai yӃu tӕ:

1) Deadlock có khҧ năng xҧy ra thѭӡng xuyên nhѭ thӃ nào?

2) Bao nhiêu quá trình sӁ bӏ ҧnh hѭӣng bӣi deadlock khi nó sӁ ra?

NӃu deadlock xҧy ra thѭӡng xuyên thì giҧi thuұt phát hiӋn nên ÿѭӧc nҥp lên thѭӡng xuyên Nhӳng tài nguyên ÿѭӧc cҩp phát ÿӇ các quá trình bӏ deadlock sӁ rҧnhchoÿӃn khi deadlock có thӇ bӏ phá vӥ Ngoài ra, sӕ lѭӧng quá trình liên quan trong chu trình deadlock có thӇ tăng lên

Deadlock xҧy ra chӍ khi mӝt sӕ quá trình thӵc hiӋn yêu cҫu mà không ÿѭӧc cҩp tài nguyên tӭc thì Yêu cҫu này có thӇ là yêu cҫu cuӕi hoàn thành mӝt chuӛi các quá trình ÿang yêu cҫu Ngoài ra, chúng ta có thӇ nҥp giҧi thuұt phát hiӋn mӑi khi mӝt yêu cҫucho viӋc cҩp phát không thӇ ÿѭӧc cҩp tӭc thì Trong trѭӡng hӧp này, chúng ta không chӍ ÿӏnh nghƭa tұp hӧp các quá trình bӏ deadlock, mà còn xác ÿӏnh quá trình ÿã gây ra deadlock (Trong thӵc tӃ, mӛi quá trình trong suӕt quá trình bӏ deadlock là mӝt liên kӃt trong chu trình cӫa ÿӗ thӏ tài nguyên, vì thӃ tҩt cҧ chúng gây ra deadlock) NӃu có nhiӅu loҥi tài nguyên khác nhau, mӝt yêu cҫu có thӇ gây chu trình trong ÿӗ thӏ tài nguyên, mӛi chu trình hoàn thành bӣi yêu cҫu mӟi nhҩt và “ÿѭӧc gây ra” bӣi mӝt quá trình có thӇ xác ÿӏnh

Dƭ nhiên, nҥp giҧi thuұt phát hiӋn deadlock cho mӛi yêu cҫu có thӇ gây ra mӝtchi phí có thӇ xem xét trong thӡi gian tính toán Mӝt thay ÿәi ít ÿҳt hѫn là nҥp giҧithuұt tҥi thӡi ÿiӇm ít thѭӡng xuyên hѫn- thí dө, mӝt lҫn mӝt giӡ hay bҩt cӭ khi nào viӋc sӱ dөng CPU rѫi xuӕng thҩp hѫn 40% NӃu giҧi thuұt phát hiӋn deadlock ÿѭӧcnҥp trong nhӳng thӡi ÿiӇm bҩt kǤ, thì có nhiӅu chu trình trong ÿӗ thӏ tài nguyên Chúng ta không thӇ nói quá trình nào cӫa nhiӅu quá trình bӏ deadlock gây ra deadlock

Trang 18

IX Ph өc hӗi deadlock

Khi giҧi thuұt phát hiӋn xác ÿӏnh rҵng deadlock tӗn tҥi, nhiӅu thay ÿәi tӗn tҥi.Mӝt khҧ năng là thông báo ngѭӡi ÿiӅu hành rҵng deadlock xҧy ra và ÿӇ ngѭӡi ÿiӅuhành giҧi quyӃt deadlock bҵng thӫ công Mӝt khҧ năng khác là ÿӇ hӋ thӕng tӵ ÿӝngphөc hӗi Có hai tuǤ chӑn cho viӋc phá vӥ deadlock Mӝt giҧi pháp ÿѫn giҧn là huӹ bӓmӝt hay nhiӅu quá trình ÿӇ phá vӥ viӋc tӗn tҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên TuǤ chӑn thӭ hai là lҩy lҥi mӝt sӕ tài nguyên tӯ mӝt hay nhiӅu quá trình bӏdeadlock

IX.1 KӃt thúc quá trình

ĈӇ xóa deadlock bҵng cách hӫy bӓ quá trình, chúng ta dùng mӝt trong hai phѭѫngpháp Trong cҧ hai phѭѫng pháp, hӋ thӕng lҩy lҥi tài nguyên ÿѭӧc cҩp phát ÿӕi vӟiquá trình bӏ kӃt thúc

x Huӹ bӓ tҩt cҧ quá trình bӏ deadlock: phѭѫng pháp này rõ ràng sӁ phá vӥ chu

trình deadlock, nhѭng chi phí cao; các quá trình này có thӇ ÿã tính toán trong thӡi gian dài, và các kӃt quҧ cӫa các tính toán tӯng phҫn này phҧi bӏ bӓ ÿi và

có thӇ phҧi tính lҥi sau ÿó

x Hӫy bӓ mӝt quá trình tҥi thӡi ÿiӇm cho ÿӃn khi chu trình deadlock bӏ xóa:phѭѫng pháp này chӏu chi phí có thӇ xem xét vì sau khi mӛi quá trình bӏhӫy bӓ, mӝt giҧi thuұt phát hiӋn deadlock phҧi ÿѭӧc nҥp lên ÿӇ xác ÿӏnh có quá trình nào vүn ÿang bӏ deadlock

Hӫy bӓ quá trình có thӇ không dӉ NӃu mӝt quá trình ÿang ӣ giӳa giai ÿoҥn cұpnhұt mӝt tұp tin, kӃt thúc nó sӁ ÿӇ tұp tin ÿó trong trҥng thái không phù hӧp Tѭѫng

tӵ, nӃu quá trình ÿang ӣ giӳa giai ÿoҥn in dӳ liӋu ra máy in, hӋ thӕng phҧi khӣi ÿӝnglҥi trҥng thái ÿúng trѭӟc khi in công viӋc tiӃp theo

NӃu phѭѫng pháp kӃt thúc mӝt phҫn ÿѭӧc dùng thì vӟi mӝt tұp hӧp các quá trình deadlock ÿѭӧc cho, chúng ta phҧi xác ÿӏnh quá trình nào (hay các quá trình nào) nênÿѭӧc kӃt thúc trong sӵ cӕ gҳng ÿӇ phá vӥ deadlock ViӋc xác ÿӏnh này là mӝtquyӃt ÿӏnh chính sách tѭѫng tӵ nhѭ các vҩn ÿӅ lұp thӡi biӇu CPU Câu hӓi vӅ tính kinh tӃ là chúng ta nên hӫy bӓ quá trình nào thì sӵ kӃt thúc cӫa quá trình ÿó sӁ chӏuchi phí tӕi thiӇu Tuy nhiên, thuұt ngӳ chi phí tӕi thiӇu là không chính xác NhiӅu yӃu

tӕ có thӇ xác ÿӏnh quá trình nào ÿѭӧc chӑn bao gӗm:

1) Ĉӝ ѭu tiên cӫa quá trình là gì

2) Quá trình ÿã ÿѭӧc tính toán bao lâu và bao lâu nӳa quá trình sӁ tính toán trѭӟckhi hoàn thành tác vө ÿѭӧc chӍ ÿӏnh cӫa nó

3) Bao nhiêu và loҥi tài nguyên gì quá trình ÿang sӱ dөng

4) Bao nhiêu tài nguyên nӳa quá trình cҫn ÿӇ hoàn thành

5) Bao nhiêu quá trình sӁ cҫn ÿѭӧc kӃt thúc

6) Quá trình là giao tiӃp hay dҥng bó

Trang 19

IX.2 Lҩy lҥi tài nguyên

ĈӇ xóa deadlock sӱ dөng viӋc trҧ lҥi tài nguyên, sau khi chúng ta ÿòi mӝt sӕ tài nguyên tӯ các quá trình và cho các tài nguyên này tӟi các quá trình khác cho ÿӃn khi chu trình deadlock bӏ phá vӥ

NӃu viӋc ÿòi lҥi ÿѭӧc yêu cҫu ÿӇ giҧi quyӃt deadlock thì ba vҩn ÿӅ cҫn ÿѭӧc xác ÿӏnh:

x Chӑn nҥn nhân: nhӳng tài nguyên nào và nhӳng quá trình nào bӏ ÿòi lҥi?

Trong khi kӃt thúc quá trình, chúng ta phҧi xác ÿӏnh thӭ tӵ ÿòi lҥi ÿӇ tӕithiӇu chi phí Các yӃu tӕ chi phí có thӇ gӗm các tham sӕ nhѭ sӕ lѭӧng tài nguyên mӝt quá trình deadlock ÿang giӳ, và lѭӧng thӡi gian mӝt quá trình deadlock dùng trong sӵ thӵc thi cӫa nó

x Trӣ lҥi trҥng thái trѭӟc deadlock: NӃu chúng ta ÿòi lҥi tài nguyên tӯ mӝt

quá trình, ÿiӅu gì nên ÿѭӧc thӵc hiӋn vӟi quá trình ÿó? Rõ ràng, nó không thӇ tiӃp tөc viӋc thӵc thi bình thѭӡng; nó ÿang bӏ mҩt mӝt sӕ tài nguyên ÿѭӧc yêu cҫu Chúng ta phҧi phөc hӗi quá trình tӟi trҥng thái an toàn và khӣi ÿӝng lҥi tӯ trҥng thái gҫn nhҩt trѭӟc ÿó

Thông thѭӡng, rҩt khó ÿӇ xác ÿӏnh trҥng thái gì là an toàn vì thӃ giҧi pháp ÿѫngiҧn nhҩt là phөc hӗi toàn bӝ: hӫy quá trình và sau ÿó khӣi ÿӝng lҥi nó Tuy nhiên, hӳu hiӋu hѫn ÿӇ phөc hӗi quá trình chӍ ÿӫ xa cҫn thiӃt ÿӇ phá vӥ deadlock Ngoài ra, phѭѫng pháp này yêu cҫu hӋ thӕng giӳ nhiӅu thông tin hѫn vӅ trҥng thái cӫa tҩt cҧ các quá trình ÿang chҥy

Ĉói tài nguyên: chúng ta ÿҧm bҧo nhѭ thӃ nào viӋc ÿói tài nguyên không xҧy

ra? Nghƭa là, chúng ta có thӇ ÿҧm bҧo rҵng tài nguyên sӁ không luôn bӏ ÿòi lҥi tӯ cùng mӝt quá trình

Trong mӝt hӋ thӕng viӋc chӑn nҥn nhân ӣ ÿâu dӵa trên cѫ sӣ các yӃu tӕ chi phí,

nó có thӇ xҧy ra cùng quá trình luôn ÿѭӧc chӑn nhѭ là nҥn nhân Do ÿó, quá trình này không bao giӡ hoàn thành tác vө ÿѭӧc chӍ ÿӏnh cӫa nó, mӝt trѭӡng hӧp ÿói tài nguyên cҫn ÿѭӧc giҧi quyӃt trong bҩt kǤ hӋ thӕng thӵc tӃ Rõ ràng, chúng ta phҧi ÿҧm bҧomӝt quá trình có thӇ ÿѭӧc chӑn nhѭ mӝt nҥn nhân chӍ mӝt sӕ lҫn xác ÿӏnh (nhӓ) Giҧipháp chung nhҩt là bao gӗm sӕ lѭӧng phөc hӗi trong yӃu tӕ chi phí

Trҥng thái deadlock xҧy ra khi hai hay nhiӅu quá trình ÿang chӡ không xác ÿӏnhmӝt sӵ kiӋn mà có thӇ ÿѭӧc gây ra chӍ bӣi mӝt trong nhӳng quá trình ÿang chӡ VӅnguyên tҳc, có ba phѭѫng pháp giҧi quyӃt deadlock:

x Sӱ dөng mӝt sӕ giao thӭc ÿӇ ngăn chһn hay tránh deadlock, ÿҧm bҧo rҵng

hӋ thӕng sӁ không bao giӡ ÿi vào trҥng thái deadlock

x Cho phép hӋ thӕng ÿi vào trҥng thái deadlock, phát hiӋn và sau ÿó phөc hӗi

x Bӓ qua vҩn ÿӅ deadlock và giҧ vӡ deadlock chѭa bao giӡ xҧy ra trong hӋthӕng Giҧi pháp này là mӝt giҧi pháp ÿѭӧc dùng bӣi hҫu hӃt các hӋ ÿiӅuhành bao gӗm UNIX

Trѭӡng hӧp deadlock có thӇ xҧy ra nӃu và chӍ nӃu bӕn ÿiӅu kiӋn cҫn xҧy ra cùng mӝt lúc trong hӋ thӕng: loҥi trӯ hӛ tѭѫng, giӳ và chӡ cҩp thêm tài nguyên, khôngÿòi lҥi tài nguyên, và tӗn tҥi chu trình trong ÿӗ thӏ cҩp phát tài nguyên ĈӇ ngănchһn deadlock, chúng ta ÿҧm bҧo rҵng ít nhҩt mӝt ÿiӅu kiӋn cҫn không bao giӡ xҧy ra Mӝt phѭѫng pháp ÿӇ tránh deadlock mà ít nghiêm ngһt hѫn giҧi thuұt ngăn chһndeadlock là có thông tin trѭӟc vӅ mӛi quá trình sӁ ÿang dùng tài nguyên nhѭ thӃ nào Thí dө, giҧi thuұt Banker cҫn biӃt sӕ lѭӧng tӕi ÿa cӫa mӛi lӟp tài nguyên có thӇ ÿѭӧc

Trang 20

yêu cҫu bӣi mӛi quá trình Sӱ dөng thông tin này chúng ta có thӇ ÿӏnh nghƭa giҧi thuұttránh deadlock.

NӃu hӋ thӕng không thӵc hiӋn mӝt giao thӭc ÿӇ ÿҧm bҧo rҵng deadlock sӁkhông bao giӡ xҧy ra thì lѭӧc ÿӗ phát hiӋn và phөc hӗi phҧi ÿѭӧc thӵc hiӋn Giҧithuұt phát hiӋn deadlock phҧi ÿѭӧc nҥp lên ÿӇ xác ÿӏnh deadlock có thӇ xҧy ra hay không NӃu deadlock ÿѭӧc phát hiӋn hӋ thӕng phҧi phөc hӗi bҵng cách kӃt thúc mӝt

sӕ quá trình bӏ deadlock hay ÿòi lҥi tài nguyên tӯ mӝt sӕ quá trình bӏ deadlock

Trong mӝt hӋ thӕng mà nó chӑn các nҥn nhân ÿӇ phөv hӗi vӅ trҥng thái trѭӟc ÿóchӫ yӃu dӵa trên cѫ sӣ yӃu tӕ chi phí, viӋc ÿói tài nguyên có thӇ xҧy ra KӃt quҧ là quá trìnhÿѭӧc chӑn không bao giӡ hoàn thành tác vө ÿѭӧc chӍ ÿӏnh cӫa nó

Trang 21

QU ҦN LÝ BӜ NHӞ

Sau khi hӑc xong chѭѫng này, ngѭӡi hӑc nҳm ÿѭӧc nhӳng kiӃn thӭc sau:

x HiӇu các cách khác nhau ÿӇ quҧn lý bӝ nhӟ

x HiӇu tiӃp cұn quҧn lý bӝ phân trang và phân ÿoҥn

x Vұn dөng mӝt tiӃp cұn quҧn lý bӝ nhӟ phù hӧp vӟi hӋ thӕng xác ÿӏnh

Bӝ nhӟ là trung tâm ÿӇ ÿiӅu hành hӋ thӕng máy tính hiӋn ÿҥi Bӝ nhӟ chӭa mӝtmҧng lӟn các tӯ (words) hay các bytes, mӛi phҫn tӱ vӟi ÿӏa chӍ cӫa chính nó CPU lҩycác chӍ thӏ tӯ bӝ nhӟ dӵa theo giá trӏ cӫa thanh ÿӃm chѭѫng trình Các chӍ thӏ này có thӇ gây viӋc nҥp bә sung các tӯ và lѭu trӳ tӟi các ÿӏa chӍ bӝ nhӟ xác ÿӏnh

III.1 Liên kӃt ÿӏa chӍ

Thông thѭӡng, mӝt chѭѫng trình nҵm trên ÿƭa nhѭ mӝt tұp tin có thӇ thӵc thi dҥng nhӏ phân Chѭѫng trình này ÿѭӧc mang vào trong bӝ nhӟ và ÿѭӧc ÿһt trong mӝtquá trình ÿӇ nó ÿѭӧc thӵc thi Phө thuӝc vào viӋc quҧn lý bӝ nhӟ ÿang dùng, quá trình

có thӇ ÿѭӧc di chuyӇn giӳa ÿƭa và bӝ nhӟ trong khi thӵc thi Tұp hӧp các quá trình trênÿƭa ÿang chӡ ÿѭӧc mang vào bӝ nhӟ ÿӇ thӵc thi hình thành mӝt hàng ÿӧi nhұp

(input queue)

Thӫ tөc thông thѭӡng là chӑn mӝt trong nhӳng quá trình trong hàng ÿӧi nhұp và nҥp quá trình ÿó vào trong bӝ nhӟ Khi mӝt quá trình ÿѭӧc thӵc thi, nó truy xuҩt các chӍ thӏ và dӳ liӋu tӯ bӝ nhӟ Cuӕi cùng, mӝt quá trình kӃt thúc và không gian bӝ nhӟcӫa nó ÿѭӧc xác ÿӏnh là trӕng

Hҫu hӃt các hӋ thӕng cho phép mӝt quá trình ngѭӡi dùng nҵm ӣ bҩt cӭ phҫn nào cӫa bӝ nhӟ vұt lý Do ÿó, mһc dù không gian ÿӏa chӍ cӫa máy tính bҳt ÿҫu tҥi 00000, nhѭng ÿӏa chӍ ÿҫu tiên cӫa quá trình ngѭӡi dùng không cҫn tҥi 00000 Sҳp xӃp này ҧnh hѭӣng ÿӃn ÿӏa chӍ mà chѭѫng trình ngѭӡi dùng có thӇ dùng Trong hҫu hӃt các trѭӡng hӧp, mӝt chѭѫng trình ngѭӡi dùng sӁ ÿi qua mӝt sӕ bѭӟc- mӝt vài trong chúng

có thӇ là tuǤ chӑn-trѭӟc khi ÿѭӧc thӵc thi (hình VII-1) Các ÿӏa chӍ có thӇ ÿѭӧc hiӋndiӋn trong nhӳng cách khác trong nhӳng bѭӟc này Các ÿӏa chӍ trong chѭѫng trình nguӗn thѭӡng là nhӳng danh biӇu Mӝt trình biên dӏch sӁ liên kӃt các ÿӏa chӍ danh biӇu tӟi các ÿӏa chӍ có thӇ tái ÿӏnh vӏ (chҷng hҥn nhѭ 14 bytes tӯ vӏ trí bҳt ÿҫu cӫa

Trang 22

module này) Bӝ soҥn thҧo liên kӃt hay bӝ nҥp sӁ liên kӃt các ÿӏa chӍ có thӇ tái ÿӏnh vӏtӟi ÿӏa chӍ tuyӋt ÿӕi (chҷng hҥn 74014) Mӛi liên kӃt là mӝt ánh xҥ tӯ mӝt không gian ÿӏa chӍ này tӟi mӝt không gian ÿӏa chӍ khác

Hình 0-1 Xӱ lý nhiӅu bѭӟc cӫa chѭѫng trình ngѭӡi dùng

VӅ truyӅn thӕng, liên kӃt các chӍ thӏ và dӳ liӋu tӟi các ÿӏa chӍ có thӇ ÿѭӧc thӵchiӋn tҥi bҩt cӭ bѭӟc nào theo cách sau ÿây:

x Thӡi gian biên dӏch: nӃu tҥi thӡi ÿiӇm biên dӏch có thӇ biӃt quá trình nҵm

ӣ ÿâu trong bӝ nhӟ thì mã tuyӋt ÿӕi có thӇ ÿѭӧc phát sinh Thí dө, nӃu biӃttrѭӟc quá trình ngѭӡi dùng nҵm tҥi vӏ trí R thì mã trình biên dӏch ÿѭӧcphát sinh sӁ bҳt ÿҫu tҥi vӏ trí ÿó và mӣ rӝng tӯ ÿó NӃu tҥi thӡi ÿiӇm sau

ÿó, vӏ trí bҳt ÿҫu thay ÿәi thì sӁ cҫn biên dӏch lҥi mã này Các chѭѫng trình ÿӏnh dҥng COM cӫa MS-DOS là mã tuyӋt ÿӕi giӟi hҥn tҥi thӡi ÿiӇm biên dӏch

x Thӡi ÿiӇm nҥp: nӃu tҥi thӡi ÿiӇm biên dӏch chѭa biӃt nѫi quá trình sӁ nҵm

ӣ ÿâu trong bӝ nhӟ thì trình biên dӏch phҧi phát sinh mã có thӇ tái ÿӏnh vӏ

Trang 23

nҥp NӃu ÿӏa chӍ bҳt ÿҫu thay ÿәi, chúng ta chӍ cҫn nҥp lҥi mã ngѭӡi dùng

ÿӇ hӧp nhҩt giá trӏ ÿѭӧc thay ÿәi này

x Thӡi gian thӵc thi: nӃu quá trình có thӇ ÿѭӧc di chuyӇn trong thӡi gian

thӵc thi tӯ mӝt phân ÿoҥn bӝ nhӟ này tӟi mӝt phân ÿoҥn bӝ nhӟ khác thì viӋc liên kӃt phҧi bӏ trì hoãn cho tӟi thӡi gian chҥy Phҫn cӭng ÿһc biӋtphҧi sҷn dùng cho cѫ chӃ này ÿӇ thӵc hiӋn công viӋc Hҫu hӃt nhӳng hӋÿiӅu hành này dùng phѭѫng pháp này

Phҫn chӫ yӃu cӫa chѭѫng này ÿѭӧc dành hӃt ÿӇ hiӇn thӏ các liên kӃt khác nhau

có thӇ ÿѭӧc cài ÿһt hӳu hiӋu trong mӝt hӋ thӕng máy tính và thҧo luұn sӵ hӛ trӧ phҫncӭng tѭѫng ӭng

III.2 Không gian ÿӏa chӍ luұn lý và không gian ÿӏa chӍ vұt lý

Mӝt ÿӏa chӍ ÿѭӧc tҥo ra bӣi CPU thѭӡng ÿѭӧc gӑi là ÿӏa chӍ luұn lý (logical address), ngѭӧc lҥi mӝt ÿӏa chӍ ÿѭӧc xem bӣi ÿѫn vӏ bӝ nhӟ-nghƭa là, mӝt ÿӏa chӍ

ÿѭӧc nҥp vào thanh ghi ÿӏa chӍ bӝ nhӟ-thѭӡng ÿѭӧc gӑi là ÿӏa chӍ vұt lý (physical

address)

Các phѭѫng pháp liên kӃt ÿӏa chӍ thӡi ÿiӇm biên dӏch và thӡi ÿiӇm nҥp tҥo ra ÿӏa chӍ luұn lý và ÿӏa chӍ vұt lý xác ÿӏnh Tuy nhiên, cѫ chӃ liên kӃt ÿӏa chӍ tҥi thӡiÿiӇm thӵc thi dүn ÿӃn sӵ khác nhau giӳa ÿӏa chӍ luұn lý và ÿӏa chӍ vұt lý Trong trѭӡng hӧp này, chúng ta thѭӡng gӑi ÿӏa chӍ luұn lý nhѭ là ÿӏa chӍ ҧo (virtual

address) Tұp hӧp tҩt cҧ ÿӏa chӍ luұn lý ÿѭӧc tҥo ra bӣi chѭѫng trình là không gian

ÿӏa chӍ luұn lý ; tұp hӧp tҩt cҧ ÿӏa chӍ vұt lý tѭѫng ӭng ÿӏa chӍ luұn lý này là không gian ÿӏa chӍ vұt lý Do ÿó, trong cѫ chӃ liên kӃt ÿӏa chӍ tҥi thӡi ÿiӇm thӵc thi, không

gianÿӏa chӍ luұn lý và không gian ÿӏa chӍ vұt lý là khác nhau

ViӋc ánh xҥ tҥi thӡi ÿiӇm thӵc thi tӯ ÿӏa chӍ ҧo tӟi ÿӏa chӍ vұt lý ÿѭӧc thӵchiӋn bӣi mӝt thiӃt bӏ phҫn cӭng ÿѭӧc gӑi là bӝ quҧn lý bӝ nhӟ MMU (memory-management unit) Chúng ta có thӇ chӑn giӳa nhӳng phѭѫng pháp khác nhau ÿӇ thӵchiӋn viӋc ánh xҥ

Nhѭ ÿѭӧc hiӇn thӏ trong hình VII-2 ӣ trên, phѭѫng pháp này yêu cҫu sӵ hӛ trӧphҫn cӭng Thanh ghi nӅn bây giӡ ÿѭӧc gӑi là thanh ghi tái ÿӏnh vӏ Giá trӏ trong thanh ghi tái ÿӏnh vӏ ÿѭӧc cӝng vào mӛi ÿӏa chӍ ÿѭӧc tҥo ra bӣi quá trình ngѭӡi dùng tҥi thӡi ÿiӇm nó ÿѭӧc gӣi tӟi bӝ nhӟ Thí dө, nӃu giá trӏ nӅn là 14000, thì viӋc cӕ gҳngbӣi ngѭӡi dùng ÿӇ xác ÿӏnh vӏ trí 0 ÿѭӧc tӵ ÿӝng tái ÿӏnh vӏ tӟi vӏ trí 14000; mӝt truy xuҩt tӟi ÿӏa chӍ 346 ÿѭӧc ánh xҥ tӟi vӏ trí 14346

Hình 0-2 ÿӏnh vӏ tӵ ÿӝng dùng thanh ghi tái ÿӏnh vӏ

Trang 24

III.3 Nҥp ÿӝng

Trong thҧo luұn cӫa chúng ta gҫn ÿây, toàn bӝ chѭѫng trình và dӳ liӋu cӫamӝt quá trình phҧi ӣ trong bӝ nhӟ vұt lý ÿӇ quá trình thӵc thi Kích thѭӟc cӫa quá trình bӏ giӟi hҥn bӣi kích thѭӟc cӫa bӝ nhӟ vұt lý ĈӇ ÿҥt ÿѭӧc viӋc sӱ dөng không gian bӝ nhӟ tӕt hѫn, chúng ta có thӇ sӱ dөng nҥp ÿӝng (dynamic loading) Vӟi nҥpÿӝng, mӝt thӫ tөc không ÿѭӧc nҥp cho tӟi khi nó ÿѭӧc gӑi Tҩt cҧ thӫ tөc ÿѭӧc giӳtrênÿƭa trong ÿӏnh dҥng nҥp có thӇ tái ÿӏnh vӏ Chѭѫng trình chính ÿѭӧc nҥp vào bӝnhӟ và ÿѭӧc thӵc thi Khi mӝt thӫ tөc cҫn gӑi mӝt thӫ tөc khác, thӫ tөc gӑi trѭӟc hӃtkiӇm tra ÿӇ thҩy thӫ tөc khác ÿѭӧc nҥp hay không NӃu không, bӝ nҥp liên kӃt có thӇtáiÿӏnh vӏ ÿѭӧc gӑi ÿӇ nҥp thӫ tөc mong muӕn vào bӝ nhӟ và cұp nhұt các bҧng ÿӏachӍ cӫa chѭѫng trình ÿӇ phҧn ánh thay ÿәi này Sau ÿó, ÿiӅu khiӇn này ÿѭӧc truyӅn tӟithӫ tөc mӟi ÿѭӧc nҥp

Thuұn lӧi cӫa nҥp ÿӝng là ӣ ÿó mӝt thӫ tөc không ÿѭӧc dùng thì không bao giӡ ÿѭӧc nҥp Phѭѫng pháp này ÿһc biӋt có ích khi lѭӧng lӟn mã ÿѭӧc yêu cҫu quҧn

lý các trѭӡng hӧp xҧy ra không thѭӡng xuyên, chҷng hҥn nhѭ các thӫ tөc lӛi Trong trѭӡng hӧp này, mһc dù kích thѭӟc toàn bӝ chѭѫng trình có thӇ lӟn, nhѭng phҫn ÿѭӧcdùng (và do ÿó ÿѭӧc nҥp) có thӇ nhӓ hѫn nhiӅu

Nҥp ÿӝng không yêu cҫu hӛ trӧ ÿһc biӋt tӯ hӋ ÿiӅu hành NhiӋm vө cӫa ngѭӡidùng là thiӃt kӃ các chѭѫng trình cӫa hӑ ÿӇ ÿҥt ÿѭӧc sӵ thuұn lӧi ÿó Tuy nhiên, hӋÿiӅu hành có thӇ giúp ngѭӡi lұp trình bҵng cách cung cҩp các thӫ tөc thѭ viӋn ÿӇ cài ÿһt nҥp tӵ ÿӝng

III.4 Liên kӃt ÿӝng và các thѭ viӋn ÿѭӧc chia sҿ

Trong hình VII-1 cNJng hiӇn thӏ thѭ viӋn ÿѭӧc liên kӃt ÿӝng Mӝt sӕ hӋ ÿiӅuhành hӛ trӧ chӍ liên kӃt tƭnh mà trong ÿó các thѭ viӋn ngôn ngӳ hӋ thӕng ÿѭӧc ÿӕi xӱnhѭ bҩt kǤ module ÿӕi tѭӧng khác và ÿѭӧc kӃt hӧp bӣi bӝ nҥp thành hình ҧnh chѭѫngtrình nhӏ phân Khái niӋm liên kӃt ÿӝng là tѭѫng tӵ nhѭ khái niӋm nҥp ÿӝng Liên kӃt

bӏ trì hoãn hѫn là viӋc nҥp bӏ trì hoãn cho tӟi thӡi ÿiӇm thӵc thi Ĉһc ÿiӇm này thѭӡngÿѭӧc dùng vӟi các thѭ viӋn hӋ thӕng nhѭ các thѭ viӋn chѭѫng trình con cӫa các ngôn ngӳ Không có tiӋn ích này, tҩt cҧ chѭѫng trình trên mӝt hӋ thӕng cҫn có mӝt bҧn sao thѭ viӋn cӫa ngôn ngӳ cӫa chúng (hay ít nhҩt thѭ viӋn ÿѭӧc tham chiӃu bӣi chѭѫngtrình) ÿѭӧc chӭa trong hình ҧnh có thӇ thӵc thi Yêu cҫu này làm lãng phí cҧ không gianÿƭa và bӝ nhӟ chính Vӟi liên kӃt ÿӝng, mӝt stub là mӝt ÿoҥn mã hiӇn thӏ cách

ÿӏnh vӏ chѭѫng trình con trong thѭ viӋn cѭ trú trong bӝ nhӟ hay cách nҥp thѭ viӋn nӃuchѭѫng trình con chѭa hiӋn diӋn

Khi stub này ÿѭӧc thӵc thi, nó kiӇm tra ÿӇ thҩy chѭѫng trình con ÿѭӧc yêu cҫu

ÿã ӣ trong bӝ nhӟ hay chѭa NӃu chѭa, chѭѫng trình này sӁ nҥp chѭѫng trình con vào trong bӝ nhӟ Dù là cách nào, stub thay thӃ chính nó vӟi ÿӏa chӍ cӫa chѭѫng trình con

và thӵc thi chѭѫng trình con ÿó Do ÿó, thӡi ÿiӇm tiӃp theo phân ÿoҥn mã ÿҥt ÿѭӧc, chѭѫng trình con trong thѭ viӋn ÿѭӧc thӵc thi trӵc tiӃp mà không gây ra bҩt kǤ chi phí cho viӋc liên kӃt ÿӝng Dѭӟi cѫ chӃ này, tҩt cҧ các quá trình sӱ dөng mӝt thѭ viӋnngôn ngӳ thӵc thi chӍ mӝt bҧn sao cӫa mã thѭ viӋn

Trang 25

III.5 Phӫ lҳp

ĈӇ cho phép mӝt quá trình lӟn hѫn lѭӧng bӝ nhӟ ÿѭӧc cҩp phát cho nó, chúng

ta sӱ dөng cѫ chӃ phӫ lҳp (overlays) Ý tѭӣng phӫ lҳp là giӳ trong bӝ nhӟ nhӳng chӍthӏ và dӳ liӋu ÿѭӧc yêu cҫu tҥi bҩt kǤ thӡi ÿiӇm nào ÿѭӧc cho Khi nhӳng chӍ thӏ ÿóÿѭӧc yêu cҫu, chúng ÿѭӧc nҥp vào không gian ÿѭӧc chiӃm trѭӟc ÿó bӣi các chӍ thӏ

mà chúng không còn cҫn nӳa

Thí dө, xét trình dӏch hӧp ngӳ hai lҫn (two-pass assembler) Trong suӕt lҫn thӭ

1, nó xây dӵng bҧng danh biӇu; sau ÿó, trong lҫn thӭ 2, nó tҥo ra mã máy Chúng ta

có thӇ phân chia trình dӏch hӧp ngӳ thành mã lҫn 1, mã lҫn 2, bҧng danh biӇu, và nhӳng thӫ tөc hӛ trӧ chung ÿѭӧc dùng bӣi lҫn 1 và lҫn 2 Giҧ sӱ kích thѭӟc cӫa các thành phҫn này nhѭ sau:

Lҫn 1 70 KB Lҫn 2 80 KB Bҧng danh biӇu 20 KB Các thӫ tөc chung 30 KB

ĈӇ nҥp mӑi thӭ mӝt lҫn, chúng ta cҫn 200KB bӝ nhӟ NӃu chӍ có 150KB sҷn

có, chúng ta không thӇ chҥy quá trình cӫa chúng ta Tuy nhiên, chú ý rҵng lҫn 1 và lҫn

2 không cҫn ӣ trong bӝ nhӟ cùng mӝt lúc Do ÿó, chúng ta ÿӏnh nghƭa hai phӫ lҳp.Phӫ lҳp A là bҧng danh biӇu, các thӫ tөc chung, lҫn 1, và phӫ lҳp B là bҧng biӇutѭӧng, các thӫ tөc chung và lҫn 2

Chúng ta bә sung trình ÿiӅu khiӇn phӫ lҳp (10 KB) và bҳt ÿҫu vӟi phӫ lҳp A trong bӝ nhӟ Khi chúng ta kӃt thúc lҫn 1, chúng ta nhҧy tӟi trình ÿiӅu khiӇn phӫ lҳp,trìnhÿiӅu khiӇn này sӁ ÿӑc phӫ lҳp B vào trong bӝ nhӟ, viӃt chӗng lên phӫ lҳp B và sauÿó chuyӇn ÿiӅu khiӇn tӟi lҫn 2 Phӫ lҳp A chӍ cҫn 120KB, ngѭӧc lҥi phӫ lҳp B cҫn130KB (hình VII-3) Bây giӡ chúng ta có thӇ chҥy trình hӧp ngӳ trong 150KB bӝnhӟ Nó sӁ nҥp nhanh hѫn vì rҩt ít dӳ liӋu cҫn ÿѭӧc chuyӇn trѭӟc khi viӋc thӵc thi bҳtÿҫu Tuy nhiên, nó sӁ chҥy chұm hѫn do nhұp/xuҩt phө ÿӑc mã mã cho phӫ lҳp A qua

mã cho phӫ lҳp B

Hình 0-3- Các phӫ lҳp cho mӝt bӝ hӧp ngӳ dӏch hai lҫn

Trang 26

Mã cho phӫ lҳp A và mã cho phӫ lҳp B ÿѭӧc giӳ trên ÿƭa nhѭ nhӳng hình ҧnh

bӝ nhӟ tuyӋt ÿӕi, và ÿѭӧc ÿӑc bӣi trình ÿiӅu khiӇn phӫ lҳp khi cҫn Tái ÿӏnh vӏ ÿһcbiӋt và các giҧi thuұt liên kӃt ÿѭӧc yêu cҫu xây dӵng các phӫ lҳp

Mӝt quá trình cҫn ӣ trong bӝ nhӟ ÿӇ ÿѭӧc thӵc thi Tuy nhiên, mӝt quá trình có thӇ ÿѭӧc hoán vӏ (swapped) tҥm thӡi khӓi bӝ nhӟ tӟi vùng lѭu trӳ phө backing store,sauÿó mang trӣ lҥi bӝ nhӟ ÿӇ viӋc thӵc thi ÿѭӧc tiӃp tөc Thí dө, giҧ sӱ mӝt môi trѭӡng ÿa chѭѫng vӟi giҧi thuұt lұp thӡi biӇu CPU round-robin Khi ÿӏnh mӭc thӡigian hӃt, bӝ quҧn lý bӝ nhӟ sӁ bҳt ÿҫu hoán vӏ ra (swap out) vùng lѭu trӳ phө quá trình vӯa mӟi kӃt thúc và hoán vӏ vào (swap in) mӝt quá trình khác tӟi không gian bӝnhӟ ÿѭӧc trӕng (hình VII-4) Do ÿó, bӝ ÿӏnh thӡi biӇu CPU sӁ cҩp nhӳng phҫn thӡigian tӟi nhӳng quá trình khác trong bӝ nhӟ Lý tѭӣng, bӝ quҧn lý sӁ hoán vӏ các quá trìnhÿӫ nhanh ÿӇ mӝt vài quá trình sӁ ӣ trong bӝ nhӟ, sҷn sàng thӵc thi, khi bӝ ÿӏnhthӡi CPU muӕn ÿӏnh thӡi lҥi CPU Ĉӏnh mӭc cNJng phҧi ÿӫ lӟn ÿӇ phù hӧp lѭӧng tính toánÿѭӧc thӵc hiӋn giӳa các hoán vӏ

Hình 0-4- Hoán vӏ hai quá trình dùng ÿƭa nhѭ là backing store

Mӝt biӃn thӇ cӫa chính sách hoán vӏ này ÿѭӧc dùng cho các giҧi thuұt ÿӏnhthӡi trên cѫ sӣ ѭu tiên NӃu mӝt quá trình có ÿӝ ѭu tiên cao hѫn ÿӃn và muӕn phө vө,

bӝ quҧn lý bӝ nhӟ có thӇ hoán vӏ ra quá trình có ÿӝ ѭu tiên thҩp hѫn ÿӇ mà nó có thӇnҥp và thӵc thi quá trình có ÿӝ ѭu tiên cao hѫn Khi quá trình có ÿӝ ѭu tiên cao hѫnkӃt thúc, quá trình có ÿӝ ѭu tiên thҩp hѫn có thӇ ÿѭӧc hoán vӏ vào trӣ lҥi và ÿѭӧc tiӃptөc BiӃn thӇ cӫa hoán vӏ này thѭӡng ÿѭӧc gӑi là cuӝn ra (roll out), và cuӝn vào (roll in)

Thông thѭӡng, mӝt quá trình ÿѭӧc hoán vӏ ra sӁ ÿѭӧc hoán vӏ trӣ lҥi vào cùng không gian bӝ nhӟ mà nó ÿã chiӃm trѭӟc ÿó Sӵ giӟi hҥn này ÿѭӧc sai khiӃn bӣiphѭѫng pháp liên kӃt ÿӏa chӍ NӃu liên kӃt ÿӏa chӍ ÿѭӧc thӵc hiӋn tҥi thӡi ÿiӇm hӧpdӏch hay nҥp thì quá trình không thӇ ÿѭӧc di chuyӇn vào không gian bӝ nhӟ khác vì

Trang 27

Hoán vӏ yêu cҫu mӝt vùng lѭu trӳ phө (backing store) Vùng lѭu trӳ phө này thѭӡng là mӝt ÿƭa tӕc ÿӝ cao Nó phҧi ÿӫ lӟn ÿӇ chӭa các bҧn sao cӫa tҩt cҧ hình ҧnh

bӝ nhӟ cho tҩt cҧ ngѭӡi dùng, và nó phҧi cung cҩp truy xuҩt trӵc tiӃp tӟi các hình ҧnh

bӝ nhӟ này HӋ thӕng này duy trì mӝt hàng ÿӧi sҷn sàng chӭa tҩt cҧ quá trình mà các hìnhҧnh bӝ nhӟ cӫa nó ӣ trong vùng lѭu trӳ phө hay trong bӝ nhӟ và sҷn sàng ÿӇthӵc thi Bҩt cӭ khi nào bӝ ÿӏnh thӡi CPU quyӃt ÿӏnh thӵc thi mӝt quá trình, nó gӑi bӝ

phân phát (dispacher) Bӝ phân phát kiӇm tra ÿӇ thҩy quá trình tiӃp theo trong hàng ÿӧi ӣ trong bӝ nhӟ không NӃu không, và không có vùng bӝ nhӟ trӕng, bӝ phân phát hoán vӏ ra mӝt quá trình hiӋn hành trong bӝ nhӟ và hoán vӏ vào mӝt quá trình mong muӕn Sau ÿó, nó nҥp lҥi các thanh ghi và chuyӇn ÿiӅu khiӇn tӟi quá trình ÿѭӧc chӑn.Trong các hӋ hoán vӏ, thӡi gian chuyӇn ÿәi giӳa các tác vө cҫn ÿѭӧc quan tâm Mӛiquá trình cҫn ÿѭӧc phân chia mӝt khoҧng thӡi gian sӱ dөng CPU ÿӫ lӟn ÿӇ không thҩy rõ sӵ chұm trӉ do các thao tác hoán vӏ gây ra NӃu không, hӋ thӕng sӁ dùng phҫnlӟn thӡi gian ÿӇ hoán vӏ các quá trình vào ra bӝ nhӟ chính, CPU nhѭ vұy sӁ không sӱdөng hiӋu quҧ

Hoán vӏ cNJng bӏ ràng buӝc bӣi yӃu tӕ khác NӃu chúng ta muӕn hoán vӏ mӝtquá trình, chúng ta phҧi ÿҧm bҧo rҵng nó hoàn toàn rӛi Quan tâm ÿһc biӋt là viӋc chӡnhұp/xuҩt Mӝt quá trình có thӇ ÿang chӡ thao tác nhұp/xuҩt khi chúng ta hoán vӏ quá trìnhÿó tӟi nѫi trӕng bӝ nhӟ cӫa nó Tuy nhiên, nӃu nhұp/xuҩt ÿang truy xuҩt không ÿӗng bӝ bӝ nhӟ ngѭӡi dùng cho nhұp/xuҩt vùng ÿӋm, thì quá trình không thӇ ÿѭӧchoán vӏ Giҧ sӱ rҵng thao tác nhұp/xuҩt ÿang xӃp hàng chӡ vì thiӃt bӏ ÿang bұn Sau

ÿó, nӃu chúng ta hoán vӏ quá trình P1 ra và hoán vӏ P2 vào thì thao tác nhұp/xuҩt có thӇ cӕ gҳng sӱ dөng bӝ nhӟ hiӋn thuӝc vӅ quá trình P2 Hai giҧi pháp chӫ yӃu cho quá trình này là không bao giӡ hoán vӏ quá trình ÿang chӡ nhұp/xuҩt hay thӵc thi các thao tác nhұp/xuҩt chӍ ӣ trong vùng ÿӋm cӫa hӋ ÿiӅu hành ChuyӇn giӳa các vùng ÿӋm cӫa

hӋ ÿiӅu hành và bӝ nhӟ quá trình thì chӍ xҧy ra khi quá trình ÿѭӧc hoán vӏ vào

Bӝ nhӟ chính phҧi cung cҩp cho cҧ hӋ ÿiӅu hành và các quá trình ngѭӡi dùng khác nhau Do ÿó, chúng ta cҫn cҩp phát nhӳng phҫn khác nhau cӫa bӝ nhӟ chính trong nhӳng cách hiӋu quҧ nhҩt có thӇ Phҫn này chúng ta giҧi thích mӝt phѭѫng pháp thông dөng, cҩp phát bӝ nhӟ liên tөc

Bӝ nhӟ thѭӡng ÿѭӧc phân chia thành hai phân khu, mӝt cho hӋ ÿiӅu hành ÿӏnh

vӏ và mӝt cho các quá trình ngѭӡi dùng Chúng ta có thӇ ÿһt hӋ ÿiӅu hành ӣ bӝ nhӟcao hay bӝ nhӟ thҩp YӃu tӕ quan trӑng ҧnh hѭӣng tӟi quyӃt ÿӏnh này là vӏ trí cӫavector ngҳt Vì vector ngҳt thѭӡng ӣ trong bӝ nhӟ thҩp nên các lұp trình viên thѭӡngcNJng ÿһt hӋ ÿiӅu hành trong bӝ nhӟ thҩp Do ÿó, trong giáo trình này chúng ta sӁ thҧoluұn chӍ trѭӡng hӧp hӋ ÿiӅu hành ÿӏnh vӏ trong bӝ nhӟ thҩp Phát triӇn cӫa trѭӡng hӧpkhác là tѭѫng tӵ

Chúng ta thѭӡng muӕn nhiӅu quá trình ngѭӡi dùng ÿӏnh vӏ trong bӝ nhӟ tҥicùng thӡi ÿiӇm Do ÿó, chúng ta cҫn xem xét cách cҩp phát bӝ nhӟ trӕng tӟi nhӳngquá trình ӣ trong hàng ÿӧi nhұp ÿang chӡ ÿѭӧc mang vào bӝ nhӟ Trong cҩp phát bӝnhӟ liên tөc, mӛi quá trình ÿѭӧc chӭa trong mӝt phҫn bӝ nhӟ liên tөc

V.1 Bҧo vӋ bӝ nhӟ

Trѭӟc khi thҧo luұn cҩp phát bӝ nhӟ chúng ta phҧi thҧo luұn vҩn ÿӅ bҧo vӋ bӝnhӟ-bҧo vӋ hӋ ÿiӅu hành tӯ quá trình ngѭӡi dùng, và bҧo vӋ các quá trình tӯ mӝt quá trình khác Chúng ta có thӇ cung cҩp bҧo vӋ này bҵng cách dùng thanh ghi tái ÿӏnh vӏ

Trang 28

Thanh ghi tái ÿӏnh vӏ chӭa giá trӏ ÿӏa chӍ vұt lý nhӓ nhҩt; thanh ghi giӟi hҥn chӭa dãy cácÿӏnh chӍ luұn lý (thí dө: tái ÿӏnh vӏ = 100040 và giӟi hҥn = 74600) Vӟi các thanh ghi tái ÿӏnh vӏ và giӟi hҥn, mӛi ÿӏa chӍ luұn lý phҧi ít hѫn thanh ghi giӟi hҥn; MMU ánh xҥ ÿӏa chӍ luұn lý ÿӝng bҵng cách cӝng giá trӏ trong thanh ghi tái ÿӏnh vӏ Ĉӏa chӍÿѭӧc tái ÿӏnh vӏ này ÿѭӧc gӱi tӟi bӝ nhӟ (nhѭ hình VII-5)

Hình 0-5 Hӛ trӧ phҫn cӭng cho các thanh ghi tái ÿӏnh vӏ và các giӟi hҥn

Khi bӝ ÿӏnh thӡi CPU chӑn mӝt quá trình thӵc thi, bӝ phân phát nҥp thanh ghi táiÿӏnh vӏ và giӟi hҥn vӟi các giá trӏ ÿúng nhѭ mӝt phҫn cӫa chuyӇn ÿәi ngӳ cҧnh Vì mӑi ÿӏa chӍ ÿѭӧc phát sinh bӣi CPU ÿѭӧc kiӇm tra dӵa trên các thanh ghi này, chúng

ta có thӇ bҧo vӋ hӋ ÿiӅu hành và các chѭѫng trình và dӳ liӋu ngѭӡi dùng khác tӯ viӋcsӱa ÿәi bӣi quá trình ÿang chҥy này

Cѫ chӃ dùng thanh ghi tái ÿӏnh vӏ cung cҩp mӝt cách hiӋu quҧ ÿӇ cho phép kích thѭӟc hӋ ÿiӅu hành thay ÿәi ÿӝng Khҧ năng mӅm dӁo này có thӇ mong muӕn trong nhiӅu trѭӡng hӧp Thí dө, hӋ ÿiӅu hành chӭa mã và không gian vùng ÿӋm cho trình ÿiӅu khiӇn thiӃt bӏ NӃu mӝt trình ÿiӅu khiӇn thiӃt bӏ (hay dӏch vө hӋ ÿiӅu hành khác) khôngÿѭӧc dùng phә biӃn, nó không muӕn giӳ mã và dӳ liӋu trong bӝ nhӟ, khi chúng ta có thӇ dùng không gian ÿó cho mөc ÿích khác Nhӳng mã nhѭ thӃ thѭӡngÿѭӧc gӑi là mã hӋ ÿiӅu hành tҥm thӡi (transient operating system code); nó ÿӃn và ÿikhiÿѭӧc yêu cҫu Do ÿó, dùng mã này thay ÿәi kích thѭӟc cӫa hӋ ÿiӅu hành trong khi thӵc thi chѭѫng trình

Trang 29

V.2 HӋ thӕng ÿѫn chѭѫng

Trong phѭѫng pháp này bӝ nhӟ ÿѭӧc chia sҿ cho hӋ ÿiӅu hành và mӝt chѭѫngtrình duy nhҩt cӫa ngѭӡi sӱ dөng Tҥi mӝt thӡi ÿiӇm, mӝt phҫn cӫa bӝ nhӟ sӁ do hӋÿiӅu hành chiӃm giӳ, phҫn còn lҥi thuӝc vӅ quá trình ngѭӡi dùng duy nhҩt trong hӋthӕng (Hình VII-6) Quá trình này ÿѭӧc toàn quyӅn sӱ dөng bӝ nhӟ dành cho nó

User process

Operating system

V.3 HӋ thӕng ÿa chѭѫng vӟi phân khu cӕ ÿӏnh

Mӝt trong nhӳng phѭѫng pháp ÿѫn giҧn nhҩt ÿӇ cҩp phát bӝ nhӟ là chia bӝnhӟ thành nhӳng phân khu có kích thѭӟc cӕ ÿӏnh Mӛi phân khu có thӇ chӭa chính xác mӝt quá trình Do ÿó, cҩp ÿӝ ÿa chѭѫng ÿѭӧc giӟi hҥn bӣi sӕ lѭӧng phân khu Trong phѭѫng pháp ÿa phân khu, khi mӝt phân khu rҧnh, mӝt quá trình ÿѭӧc chӑn tӯhàngÿӧi nhұp và ÿѭӧc nҥp vào phân khu trӕng Khi quá trình kӃt thúc, phân khu trӣnên sҷn dùng cho mӝt quá trình khác Có hai tiӃp cұn ÿӇ tә chӭc hàng ÿӧi:

x Sӱ dөng nhiӅu hàng ÿӧi: mӛi phân khu sӁ có mӝt hàng ÿӧi tѭѫng ӭng

(hình VII-7a) Khi mӝt quá trình mӟi ÿѭӧc tҥo ra, nó ÿѭӧc ÿѭa vào hàng ÿӧi cӫa phân khu có kích thѭӟc nhӓ nhҩt thoҧ nhu cҫu chӭa nó Cách tәchӭc này có khuyӃt ÿiӇm trong trѭӡng hӧp các hàng ÿӧi cӫa mӝt sӕ phân khu trӕng trong khi các hàng ÿӧi cӫa các phân khu khác lҥi ÿҫy, buӝc các quá trình trong nhӳng hàng ÿӧi này phҧi chӡ ÿѭӧc cҩp phát bӝ nhӟ

x Sӱ dөng mӝt hàng ÿӧi: tҩt cҧ các quá trình ÿѭӧc ÿһt trong hàng ÿӧi duy

nhҩt (hình VII-7b) Khi có mӝt phân khu trӕng, quá trình ÿҫu tiên trong hàngÿӧi có kích thѭӟc phù hӧp sӁ ÿѭӧc ÿһt vào phân khu và cho xӱ lý

Trang 30

a Sӱ dөng nhiӅu hàng ÿӧi b Sӱ dөng mӝt hàng ÿӧi

Hình 0-7 Cҩp phát phân khu có kích thѭӟc cӕ ÿӏnh

Khi sӱ dөng giҧi thuұt này ngѭӡi ta muӕn tránh sӵ hao phí mӝt phân khu lӟncho mӝt công viӋc nhӓ, nhѭng lҥi xҧy ra bҩt bình ÿҷng, bҩt lӧi ÿӕi vӟi các công viӋcnhӓ ĈӇ giҧi quyӃt ngѭӡi ta thêm vào qui luұt là mӝt công viӋc sӁ không bӏ bӓ qua nӳa nӃu nó ÿã bӏ bӓ qua k lҫn qui ÿӏnh Mӛi lҫn mӝt công viӋc bӏ bӓ qua nó ÿѭӧcÿánh dҩu mӝt ÿiӇm Khi ÿҥt ÿѭӧc sӕ ÿiӇm qui ÿӏnh, nó sӁ không bӏ bӓ qua nӳa, sӁÿѭӧc nҥp vào và thӵc hiӋn mһc dҫu có thӇ trên mӝt phân khu lӟn hѫn

Phѭѫng pháp này ban ÿҫu ÿѭӧc sӱ dөng bӣi hӋ ÿiӅu hành IBM OS/360, nó ÿѭӧc gӑi là MFT (Multiprogramming with Fixed number of Tasks) HiӋn nay nó không còn sӱ dөng nӳa

V.4 HӋ thӕng ÿa chѭѫng vӟi phân khu ÿӝng

Cѫ chӃ này là tәng quát cӫa cѫ chӃ phân khu cӕ ÿӏnh Nó ÿѭӧc dùng chӫ yӃutrong môi trѭӡng xӱ lý theo lô NhiӅu ý tѭӣng ÿѭӧc trình bày ӣ ÿây cNJng có thӇ áp dөng tӟi môi trѭӡng chia thӡi mà trong ÿó phân ÿoҥn thuҫn ÿѭӧc dùng cho viӋc quҧn

lý bӝ nhӟ

HӋ ÿiӅu hành giӳ mӝt bҧng hiӇn thӏ nhӳng phҫn nào cӫa bӝ nhӟ là sҷn dùng và phҫn nào ÿang bұn Ban ÿҫu, tҩt cҧ bӝ nhӟ là sҷn dùng cho quá trình ngѭӡi dùng, và ÿѭӧc xem nhѭ mӝt khӕi lӟn bӝ nhӟ sҷn dùng hay mӝt lӛ Khi mӝt quá trình ÿӃn và cҫn bӝ nhӟ, chúng ta tìm kiӃm mӝt lӛ trӕng ÿӫ lӟn cho quá trình này NӃu chúng ta tìm thҩy, chúng ta cҩp phát chӍ phҫn bӝ nhӟ nhiӅu bҵng lѭӧng ÿѭӧc yêu cҫu, phҫn còn lҥi sҷn dùng ÿӇ thoҧ mãn nhӳng yêu cҫu tѭѫng lai (Hình VII-8)

Trang 31

Thӡi gian

D

CB

OSOS

BC

AOS

B

CB

OS

A

DC

OS

D

CE

OS

A

OS

Hình VIII-8 Cҩp phát các phân khu có kích thѭӟc thay ÿәi

Khi các quá trình ÿi vào hӋ thӕng, chúng ÿѭӧc ÿһt vào hàng ÿӧi nhұp HӋ ÿiӅuhành xem xét yêu cҫu bӝ nhӟ cӫa mӛi quá trình và lѭӧng không gian bӝ nhӟ sҷn có ÿӇxácÿӏnh các quá trình nào ÿѭӧc cҩp phát bӝ nhӟ Khi mӝt quá trình ÿѭӧc cҩp không gian, nó ÿѭӧc nҥp vào bӝ nhӟ và sau ÿó nó có thӇ cҥnh tranh CPU Khi mӝt quá trình kӃt thúc, nó giҧi phóng bӝ nhӟ cӫa nó, sau ÿó hӋ ÿiӅu hành có thӇ ÿһt mӝt quá trình khác tӯ hàng ÿӧi nhұp

Tҥi bҩt cӭ thӡi ÿiӇm ÿѭӧc cho, chúng ta có mӝt danh sách kích thѭӟc khӕitrӕng và hàng ÿӧi nhұp HӋ ÿiӅu hành có thӇ xӃp hàng ÿӧi nhұp dӵa theo giҧi thuұtÿӏnh thӡi Bӝ nhӟ ÿѭӧc cҩp phát tӟi quá trình cho ÿӃn khi các yêu cҫu bӝ nhӟ cӫa quá trình kӃ tiӃp không thӇ ÿѭӧc thoҧ; không có khӕi bӝ nhӟ trӕng (hay lӛ) ÿӫ lӟn ÿӇ quҧn

lý quá trình ÿó Sau ÿó, hӋ ÿiӅu hành có thӇ chӡ cho ÿӃn khi khӕi ÿӫ lӟn sҷn dùng hay

nó có thӇ di chuyӇn xuӕng hàng ÿӧi nhұp ÿӇ xem các yêu cҫu bӝ nhӟ nhӓ hѫn cӫa các quá trình khác có thӇ ÿѭӧc thoҧ hay không

Thông thѭӡng, mӝt tұp hӧp các lӛ có kích thѭӟc khác nhau ÿѭӧc phân tán khҳp bӝ nhӟ tҥi bҩt cӭ thӡi ÿiӇm ÿѭӧc cho Khi mӝt quá trình ÿӃn và yêu cҫu bӝ nhӟ,

hӋ thӕng tìm tұp hӧp này mӝt lӛ trӕng ÿӫ lӟn cho quá trình này NӃu lӛ trӕng quá lӟn,

nóÿѭӧc chia làm hai: mӝt phҫn ÿѭӧc cҩp tӟi quá trình ÿӃn; phҫn còn lҥi ÿѭӧc trҧ vӅtұp hӧp các lӛ NӃu lӛ mӟi nҵm kӅ vӟi các lӛ khác, các lӛ nҵm kӅ này ÿѭӧc gom lҥi ÿӇtҥo thành mӝt lӛ lӟn hѫn Tҥi thӡi ÿiӇm này, hӋ thӕng cҫn kiӇm tra có quá trình nào ÿang chӡ bӝ nhӟ và bӝ nhӟ trӕng mӟi hay bӝ nhӟ vӯa ÿѭӧc kӃt hӧp lҥi có thӇ thoҧyêu cҫu cӫa bҩt cӭ quá trình ÿang chӡ này không

Thӫ tөc này là mӝt trѭӡng hӧp ÿһc biӋt cӫa vҩn ÿӅ cҩp phát lѭu trӳ ÿӝng là làm cách nào ÿӇ thoҧ mãn mӝt yêu cҫu có kích thѭӟc n tӯ danh sách lӛ trӕng Có hai giҧipháp chӫ yӃu cho vҩn ÿӅ này

1) Qu ҧn lý bҵng bҧn ÿӗ bit: bӝ nhӟ ÿѭӧc chia thành các ÿѫn vӏ cҩp phát, mӛi

ÿѫn vӏ ÿѭӧc ánh xҥ tӟi mӝt bit trong bҧn ÿӗ bit (Hình VII-9) Giá trӏ bit này xácÿӏnh trҥng thái cӫa ÿѫn vӏ bӝ nhӟ ÿó: 0 ÿang tӵ do, 1 ÿã ÿѭӧc cҩp phát Khi cҫn nҥp mӝt quá trình có kích thѭӟc k ÿѫn vӏ, hӋ thӕng sӁ tìm trong bҧn

ÿӗ bit mӝt dãy k bit có giá trӏ 0

Kích thѭӟc cӫa ÿѫn vӏ cҩp phát là vҩn ÿӅ lӟn trong thiӃt kӃ NӃu kích thѭӟc ÿѫn

vӏ cҩp phát nhӓ sӁ làm tăng kích thѭӟc cӫa bҧn ÿӗ bit Ngѭӧc lҥ, nӃu kích thѭӟc ÿѫn

Trang 32

vӏ cҩp phát lӟn có thӇ gây hao phí cho ÿѫn vӏ cҩp phát sau cùng Ĉây là giҧi pháp ÿѫngiҧn nhѭng thӵc hiӋn chұm nên ít ÿѭӧc dùng

2) Qu ҧn lý bҵng danh sách liên kӃt: dùng mӝt danh sách liên kӃt ÿӇ quҧn lý các

phânÿoҥn bӝ nhӟ ÿã cҩp phát và phân ÿoҥn tӵ do, mӝt phân ÿoҥn có thӇ là mӝt quá trình hay mӝt vùng nhӟ trӕng giӳa hai quá trình Danh sách liên kӃtgӗm nhiӅu mөc tӯ liên tiӃp Mӛi mөc tӯ gӗm 1 bit ÿҫu ÿӇ xác ÿӏnh phân ÿoҥn

ÿó là lӛ trӕng (H) hay mӝt quá trình (P), sau ÿó là 3 tӯ ÿӇ chӍ ÿӏa chӍ bҳt ÿҫu,chiӅu dài và chӍ ÿiӇm tӟi mөc kӃ tiӃp ViӋc sҳp xӃp các phân ÿoҥn theo ÿӏa chӍhay theo kích thѭӟc tuǤ thuӝc vào giҧi thuұt quҧn lý bӝ nhӟ Sѫ ÿӗ quҧn lý bҵng danh sách liên kӃt tѭѫng ӭng vӟi sѫ ÿӗ quҧn lý bҵng bҧn ÿӗ bit ÿѭӧcminh hoҥ trong hình VII-10

3)

Hình 0-10 Quҧn lý bӝ nhӟ bҵng danh sách liên kӃt

Tұp hӧp các lӛ trӕng ÿѭӧc tìm thҩy ÿӇ xác ÿӏnh lӛ nào là tӕt nhҩt ÿӇ cҩp phát Các chiӃn lѭӧc first-fit, best-fit, worst-fit là nhӳng chiӃn lѭӧc phә biӃn nhҩt ÿѭӧcdùngÿӇ chӑn mӝt lӛ trӕng tӯ tұp hӧp các lӛ trӕng

x First-fit: cҩp phát lӛ trӕng ÿҫu tiên ÿӫ lӟn Tìm kiӃm có thӇ bҳt ÿҫu tҥi ÿҫutұp hӧp các lӛ trӕng hay tҥi ÿiӇm kӃt thúc cӫa tìm kiӃm first-fit trѭӟc ÿó.Chúng ta dӯng tìm kiӃm ngay khi chúng ta tìm thҩy mӝt lӛ trӕng ÿӫ lӟn

x Best-fit: cҩp phát lӛ trӕng nhӓ nhҩt ÿӫ lӟn Chúng ta phҧi tìm toàn bӝ danh sách, trӯ khi danh sách ÿѭӧc xӃp thӭ tӵ theo kích thѭӟc ChiӃn lѭӧc này tҥo ra lӛ trӕng nhӓ nhҩt còn thӯa lҥi

Trang 33

x Worst-fit: cҩp phát lӛ trӕng lӟn nhҩt Chúng ta phҧi tìm toàn danh sách trӯkhi nó ÿѭӧc xӃp theo thӭ tӵ kích thѭӟc ChiӃn lѭӧc này tҥo ra lӛ trӕng còn lҥi lӟn nhҩt mà có thӇ có ích hѫn lӛ trӕng nhӓ tӯ tiӃp cұn best-fit

Các mô phӓng hiӇn thӏ rҵng cҧ first-fit và best-fit là tӕt hѫn worst-fit vӅ viӋc

giҧm thӡi gian và sӱ dөng lѭu trӳ Giӳa first-fit và best-fit không thӇ xác ÿӏnh rõ

chiӃn lѭӧc nào tӕt hѫn vӅ sӱ dөng lѭu trӳ, nhѭng first-fit có tӕc ÿӝ nhanh hѫn

Tuy nhiên, các giҧi thuұt này gһp phҧi vҩn ÿӅ phân mãnh ngoài (external

fragmentation) Khi các quá trình ÿѭӧc nҥp và ÿѭӧc xoá khӓi bӝ nhӟ, không gian bӝ

nhӟ trӕng bӏ phân rã thành nhӳng mãnh nhӓ Phân mãnh ngoài tӗn tҥi khi tәng không gian bӝ nhӟ ÿӫ ÿӇ thoҧ mãn mӝt yêu cҫu, nhѭng nó không liên tөc; vùng lѭu trӳ bӏ

phân mãnh thành mӝt sӕ lѭӧng lӟn các lӛ nhӓ Vҩn ÿӅ phân mãnh này có thӇ rҩt lӟn

Trong trѭӡng hӧp xҩu nhҩt, chúng có thӇ có mӝt khӕi bӝ nhӟ trӕng nҵm giӳa mӛi hai quá trình NӃu tҩt cҧ bӝ nhӟ này nҵm trong mӝt khӕi trӕng lӟn, chúng ta có thӇ chҥy

nhiӅu quá trình hѫn

Chӑn lӵa first-fit so vӟi best-fit có thӇ ҧnh hѭӣng tӟi lѭӧng phân mãnh fit là tӕt hѫn ÿӕi vӟi mӝt sӕ hӋ thӕng, ngѭӧc lҥi best fit là tӕt hѫn cho mӝt sӕ hӋ thӕngkhác) Mӝt yӃu tӕ khác là phҫn cuӕi cӫa khӕi trӕng nào ÿѭӧc cҩp phát (phҫn còn dѭ

(First-nào-phҫn trên ÿӍnh, hay phҫn ӣ dѭӟi ÿáy?) Vҩn ÿӅ không do giҧi thuұt nào ÿѭӧc dùng

mà do phân mãnh ngoài

V.5 Quҧn lý bӝ nhӟ vӟi hӋ thӕng bҥn thân

Nhѭ ta ÿã thҩy trong phҫn trѭӟc, viӋc quҧn lý các lӛ hәng trên nhӳng bҧng liӋt

kêÿѭӧc sҳp xӃp theo kích thѭӟc làm cho viӋc cҩp phát bӝ nhӟ rҩt nhanh, nhѭng lҥi

làm chұm cho viӋc ngѭng cҩp phát bӣi vì ta phҧi chú ý ÿӃn các láng giӅng HӋ thӕng

bҥn thân (Buddy System) là mӝt giҧi thuұt quҧn lý bӝ nhӟ tұn dөng thuұn lӧi cӫa

viӋc máy tính dùng nhӳng sӕ nhӏ phân cho viӋc ÿánh ÿӏa chӍ ÿӇ tăng tӕc ÿӝ kӃt hӧp

nhӳng lӛ hәng sát nhau khi mӝt quá trình hoàn thành hoһc ÿѭӧc hoán vӏ ra ngoài

Vӟi phѭѫng pháp này, bӝ quҧn lý bӝ nhӟ sӁ có mӝt bҧng liӋt kê nhӳng khӕi

còn tӵ do có kích thѭӟc 1, 2, 4, 16 bytes ÿӃn kích thѭӟc cӫa bӝ nhӟ, tӭc là có kích

thѭӟc bҵng lNJy thӯa cӫa 2 Khi có mӝt quá trình cҫn cҩp phát bӝ nhӟ, mӝt lӛ hәng có kích thѭӟc bҵng luӻ thӯa cӫa 2 ÿӫ chӭa quá trình sӁ ÿѭӧc cҩp phát NӃu không có lӛ

hәng yêu cҫu, các lӛ hәng sӁ ÿѭӧc phân ÿôi cho ÿӃn khi có ÿѭӧc lӛ hӛng cҫn thiӃt

Khi mӝt quá trình chҩm dӭt, các lӛ hәng kӃ nhau có kích thѭӟc bҵng nhau sӁ ÿѭӧc

nhұp lҥi ÿӇ tҥo thành lӛ hәng lӟn hѫn Do ÿó, giҧi thuұt này ÿѭӧc gӑi là hӋ thӕng bҥn

thân

Thí du: vӟi bӝ nhӟ 1M, cҫn phҧi có 21 bҧng liӋt kê nhѭ thӃ sҳp tӯ 1 bytes (20

)ÿӃn 1 byte (220) Khӣi ÿҫu toàn bӝ bӝ nhӟ còn tӵ do và bҧng liӋt kê 1M có mӝt mөc tӯÿӝc nhҩt chӭa ÿӵng mӝt lӛ hәng 1M, tҩt cҧ các bҧng liӋt kê khác ÿӅu rӛng Cҩu hình

bӝ nhӟ lúc khӣi ÿҫu ÿѭӧc chӍ ra trong hình VII-11

Trang 34

KӃ ÿӃn, mӝt quá trình 35K ÿѭӧc hoán vӏ vào Khi ÿó ta cҫn khӕi 64K, nhѭngcNJng không có sҹn, vì thӃ phҧi phân phӕi khӕi 128K thành hai khӕi bҥn thân 64K, mӝttҥi ÿӏa chӍ 128K, mӝt tҥi 192K Khӕi tҥi 128K ÿѭӧc cҩp cho quá trình, trong hình là B Yêu cҫu thӭ ba là 80K

Bây giӡ ta hãy xem nhӳng gì xҧy ra khi mӝt khӕi ÿѭӧc trҧ lҥi Giҧ sӱ tҥi thӡiÿiӇm này khӕi 128K (mà chӍ dùng có 70K) ÿѭӧc tӵ do Khi ÿó khӕi 128K sӁ ÿѭӧcÿѭa vào bҧng tӵ do Bây giӡ cҫn mӝt khӕi 60K Sau khi kiӇm tra, khӕi 64K tҥi 192K ÿѭӧc cҩp phát và nó ÿѭӧc ÿánh dҩu là C

Bây giӡ khӕi B ÿѭӧc trҧ lҥi Tҥi thӡi ÿiӇm này có hai khӕi 128K tӵ do nhѭngchúng không ÿѭӧc kӃt hӧp lҥi Chú ý rҵng ngay cҧ khi khӕi 128K tҥi 0 ÿѭӧc phân ra làm 2, khӕi tҥi 9 ÿѭӧc dùng và khӕi tҥi 84K còn tӵ do, sӵ kӃt hӧp cNJng không xãy ra Khi D ÿѭӧc trҧ lҥi, sӁ có sӵ kӃt hӧp lҥi thành khӕi 256K tҥi 0 Cuӕi cùng, khi C ÿѭӧctrҧ lҥi, sӁ có kӃt hӧp tҥo thành 1 lӛ hәng 1M nhѭ ban ÿҫu

HӋ thӕng bҥn thân có sӵ thuұn lӧi so vӟi nhӳng giҧi thuұt cùng sҳp xӃp theo kích thѭӟc cӫa khӕi Sӵ thuұn lӧi này là khi có mӝt khӕi 2k bytes tӵ do, bӝ quҧn lý bӝnhӟ chӍ cҫn tìm trong bҧng liӋt kê lӛ hәng có kích thѭӟc 2kÿӇ xem chúng có khҧ năngkӃt hӧp ÿѭӧc hay không Vӟi nhӳng giҧi thuұt khác mà trong ÿó cho phép các khӕi bӝnhӟ ÿѭӧc phân chia mӝt cách tùy ý, viӋc tìm kiӃm phҧi diӉn ra trên tҩt cҧ các bҧng liӋt

kê Do dó, hӋ thӕng bҥn thân làm viӋc nhanh hѫn

Ĉáng tiӃc, nó lҥi cӵc kǤ kém hiӋu quҧ trong viӋc sӱ dөng bӝ nhӟ Mӝt quá trình 35K phҧi ÿѭӧc cҩp phát ÿӃn 64K, hao phí ÿӃn 29K Sӵ hao phí này ÿѭӧc gӑi là

sӵ phân mҧnh trong (internal fragmentation), bӣi vì phҫn bӝ nhӟ hao phí nҵm bên trongÿoҥn ÿѭӧc cҩp phát Còn trong các phҫn trѭӟc ta thҩy nhӳng lӛ hәng ӣ giӳa các ÿoҥn, nhѭng không có sӵ hao phí bên trong các ÿoҥn, do ÿó kiӇu này ÿѭӧc coi là sӵphân mҧnh ngoài

Trang 35

V.6 Phân mãnh

Phân mãnh bӝ nhӟ có thӇ là phân mãnh trong hoһc phân mãnh ngoài Xét cѫchӃ cҩp phát nhiӅu phân khu vӟi mӝt lӛ trӕng có kích thѭӟc 18,464 bytes Giҧ sӱ rҵngquá trình tiӃp theo yêu cҫu 18,462 bytes NӃu chúng ta cҩp phát chính xác khӕi ÿѭӧcyêu cҫu, chúng ta ÿӇ lҥi mӝt lӛ trӕng có kích thѭӟc 2 bytes Chi phí ÿӇ giӳ vӃt cӫa lӛnày sӁ lӟn hѫn kích thѭӟc cӫa lӛ trӕng TiӃp cұn thông thѭӡng là chia bӝ nhӟ vұt lý thành nhӳng khӕi có kích thѭӟc cӕ ÿӏnh, và cҩp phát bӝ nhӟ dӵa theo ÿѫn vӏ cӫa kích thѭӟc khӕi Vӟi tiӃp cұn này, bӝ nhӟ ÿѭӧc cҩp phát tӟi mӝt quá trình có thӇ là lӟn hѫnmӝt chút so vӟi khӕi ÿѭӧc yêu cҫu Sӵ chênh lӋnh giӳa hai sӕ này là phân mãnh trong-bӝ nhӟ bӏ phân mãnh trong ÿӕi vӟi mӝt phân khu thì không thӇ ÿѭӧc dùng

Mӝt giҧi pháp ÿӕi vӟi phân mãnh ngoài là kӃt lҥi thành khӕi (compaction) Mөc tiêu là di chuyӇn nӝi dung bӝ nhӟ ÿӇ ÿһt tҩt cҧ bӝ nhӟ trӕng vӟi nhau trong mӝtkhӕi lӟn KӃt khӕi không phҧi luôn thӵc hiӋn ÿѭӧc NӃu viӋc tái ÿӏnh vӏ là tƭnh và ÿѭӧc thӵc hiӋn tҥi thӡi ÿiӇm hӧp dӏch và nҥp thì viӋc kӃt khӕi là không thӇ thӵc hiӋnÿѭӧc KӃt khӕi chӍ có thӇ thӵc hiӋn ÿѭӧc chӍ nӃu tái ÿӏnh vӏ là ÿӝng và ÿѭӧc thӵc hiӋntҥi thӡi ÿiӇm thӵc thi NӃu ÿӏa chӍ ÿѭӧc tái ÿӏnh vӏ ÿӝng, tái ÿӏnh vӏ yêu cҫu chӍ di chuyӇn chѭѫng trình và dӳ liӋu, sau ÿó thay ÿәi thanh ghi nӅn ÿӇ phҧn ánh ÿӏa chӍ nӅnmӟi Khi kӃt khӕi là có thӇ, chúng ta phҧi xác ÿӏnh chi phí cӫa nó Giҧi thuұt kӃt khӕiÿѫn giҧn nhҩt là di chuyӇn tҩt cҧ quá trình tӟi cuӕi bӝ nhӟ; tҩt cҧ lӛ trӕng di chuyӇntheo hѭӟng ngѭӧc lҥi, tҥo ra mӝt lӛ trӕng lӟn cӫa bӝ nhӟ sҷn dùng Cѫ chӃ này có thӇÿҳt

Mӝt giҧi pháp khác cho vҩn ÿӅ phân mãnh ngoài là cho phép không gian ÿӏachӍ luұn lý cӫa mӝt quá trình là không liên tөc, do ÿó cho phép mӝt quá trình ÿѭӧc cҩpphát bӝ nhӟ vұt lý bҩt cӭ ÿâu sau khi sҷn dùng Hai kӻ thuұt bù trӯ ÿӇ ÿҥt giҧi pháp này là phân trang và phân ÿoҥn

VI.1 Phân trang

Phân trang là cѫ chӃ quҧn lý bӝ nhӟ cho phép không gian ÿӏa chӍ vұt lý cӫa quá trình là không kӅ nhau Phân trang tránh vҩn ÿӅ ÿһt vӯa khít nhóm bӝ nhӟ có kích thѭӟc thay ÿәi vào vùng lѭu trӳ phө (backing store) mà hҫu hӃt các cѫ chӃ quҧn lý bӝnhӟ trѭӟc ÿó gһp phҧi Khi phân ÿoҥn mã và dӳ liӋu nҵm trong bӝ nhӟ ÿѭӧc hoán vӏ

ra, không gian phҧi ÿѭӧc tìm thҩy trên vùng lѭu trӳ phө Vҩn ÿӅ phân mãnh ÿѭӧc thҧoluұn trong sӵ kӃt nӕi vӟi bӝ nhӟ chính cNJng thông dөng nhѭ vӟi vùng lѭu trӳ phө,ngoҥi trӯ truy xuҩt thҩp hѫn nhiӅu, vì thӃ kӃt khӕi là không thӇ Vì lӧi ÿiӇm cӫa nó so vӟi các phѭѫng pháp trѭӟc ÿó nên phân trang trong nhӳng dҥng khác nhau ÿѭӧc dùng phә biӃn trong hҫu hӃt các hӋ ÿiӅu hành

VӅ truyӅn thӕng, hӛ trӧ phân trang ÿѭӧc quҧn lý bӣi phҫn cӭng Tuy nhiên, nhӳng thiӃt kӃ gҫn ÿây cài ÿһt phân trang bҵng cách tích hӧp chһt chҿ phҫn cӭng và

hӋ ÿiӅu hành, ÿһc biӋt trên các bӝ vi xӱ lý 64-bit

Trang 36

VI.1.1 Phѭѫng pháp cѫ bҧn

Hình 0-12 Phҫn cӭng phân trang

Bӝ nhӟ vұt lý ÿѭӧc chia thành các khӕi có kích thѭӟc cӕ ÿӏnh ÿѭӧc gӑi là các

khung (frames) Bӝ nhӟ luұn lý cNJng ÿѭӧc chia thành các khӕi có cùng kích thѭӟc

ÿѭӧc gӑi là các trang (pages) Khi mӝt quá trình ÿѭӧc thӵc thi, các trang cӫa nó ÿѭӧc

nҥp vào các khung bӝ nhӟ sҷn dùng tӯ vùng lѭu trӳ phө Vùng lѭu trӳ phө ÿѭӧc chia thành các khӕi có kích thѭӟc cӕ ÿӏnh và có cùng kích thѭӟc nhѭ các khung bӝ nhӟ

Hӛ trӧ phҫn cӭng cho phân trang ÿѭӧc hiӇn thӏ trong hình VII-12 Mӛi ÿӏa chӍÿѭӧc tҥo ra bӣi CPU ÿѭӧc chia thành hai phҫn: sӕ trang (p) và ÿӝ dӡi trang (d) Sӕtrangÿѭӧc dùng nhѭ chӍ mөc vào bҧng trang Bҧng trang chӭa ÿӏa chӍ nӅn cӫa mӛitrang trong bӝ nhӟ vұt lý Ĉӏa chӍ nӅn này ÿѭӧc kӃt hӧp vӟi ÿӝ dӡi trang ÿӇ ÿӏnhnghƭa ÿӏa chӍ bӝ nhӟ vұt lý mà nó ÿѭӧc gӣi ÿӃn ÿѫn vӏ bӝ nhӟ Mô hình phân trang bӝnhӟ ÿѭӧc hiӇn thӏ nhѭ hình VII-13

Kích thѭӟc trang (giӕng nhѭ kích thѭӟc khung) ÿѭӧc ÿӏnh nghƭa bӣi phҫn cӭng.Kích thѭӟc cӫa mӝt trang ÿiӇn hình là luӻ thӯa cӫa 2, tӯ 512 bytes ÿӃn 16MB trên trang, phө thuӝc vào kiӃn trúc máy tính Chӑn luӻ thӯa 2 cho kích thѭӟc trang thӵchiӋn viӋc dӏch ÿӏa chӍ luұn lý thành sӕ trang và ÿӝ dӡi trang rҩt dӉ dàng NӃu kích thѭӟc không gian ÿӏa chӍ là 2m, và kích thѭӟc trang là 2nÿѫn vӏ ÿӏa chӍ (byte hay tӯ)thì m-n bits cao cӫa ÿӏa chӍ luұn lý chӍ sӕ trang, n bits thҩp chӍ ÿӝ dӡi trang Do ÿó,ÿӏa chӍ luұn lý nhѭ sau:

Sӕ trang Ĉӝ dӡi trang

ӣ ÿây p là chӍ mөc trong bҧng trang và d là ÿӝ dӡi trong trang

Trang 37

Hình 0-13 Mô hình phân trang cӫa bӝ nhӟ luұn lý và vұt lý

Thí dө: xét bӝ nhӟ trong hình VII-14 Sӱ dөng kích thѭӟc trang 4 bytes và bӝnhӟ vұt lý 32 bytes (có 8 trang), chúng ta hiӇn thӏ cách nhìn bӝ nhӟ cӫa ngѭӡi dùng có thӇ ÿѭӧc ánh xҥ tӟi bӝ nhӟ vұt lý nhѭ thӃ nào Ĉӏa chӍ luұn lý 0 là trang 0, ÿӝ dӡi 0 ChӍ mөc trong bҧng trang, chúng ta thҩy rҵng trang 0 ӣ trong khung 5 Do ÿó, ÿӏa chӍluұn lý 0 ánh xҥ tӟi ÿӏa chӍ vұt lý 20 (=(5x4)+0) Ĉӏa chӍ luұn lý 3 (trang 0, ÿӝ dӡi 3) ánh xҥ tӟi ÿӏa chӍ vұt lý 23 (=(5x4)+3) Ĉӏa chӍ luұn lý 4 ӣ trang 1, ÿӝ dӡi 0; dӵa theo bҧng trang, trang 1 ÿѭӧc ánh xҥ tӟi khung 6 Do ÿó, ÿӏa chӍ luұn lý 4 ánh xҥ tӟi ÿӏa chӍ24(=(6x4)+0).Ĉӏa chӍ luұn lý 13 ánh xҥ tӟi ÿӏa chӍ vұt lý 9

Có thӇ chú ý rҵng phân trang là mӝt dҥng cӫa tái ÿӏnh vӏ ÿӝng Mӛi ÿӏa chӍluұn lý ÿѭӧc giӟi hҥn bӣi phҫn cӭng phân trang tӟi ÿӏa chӍ vұt lý Sӱ dөng phân trang tѭѫng tӵ sӱ dөng mӝt bҧng các thanh ghi nӅn (hay tái ÿӏnh vӏ), mӝt thanh ghi cho mӛikhung bӝ nhӟ

Khi chúng ta sӱ dөng mӝt cѫ chӃ phân trang, chúng ta không có phân mãnh bên ngoài: bҩt kǤ khung trӕng có thӇ ÿѭӧc cҩp phát tӟi mӝt quá trình cҫn nó Tuy nhiên, chúng ta có thӇ có phân mãnh trong Chú ý rҵng các khung ÿѭӧc cҩp phát nhѭcácÿѫn vӏ NӃu các yêu cҫu bӝ nhӟ cӫa mӝt quá trình không xҧy ra ÿӇ rѫi trên giӟihҥn cӫa trang, thì khung cuӕi cùng ÿѭӧc cҩp phát có thӇ không ÿҫy hoàn toàn Thí dө,nӃu các trang là 2048 bytes, mӝt quá trình 72,766 bytes sӁ cҫn 35 trang cӝng vӟi 1086 bytes Nó ÿѭӧc cҩp phát 36 khung, do ÿó phân mãnh trong là 2048 - 1086 = 962 bytes Trong trѭӡng hӧp xҩu nhҩt, mӝt quá trình cҫn n trang cӝng vӟi 1 byte Nó sӁÿѭӧc cҩp phát n+1 khung, dүn ÿӃn phân mãnh trong gҫn nhѭ toàn bӝ khung

NӃu kích thѭӟc quá trình ÿӝc lұp vӟi kích thѭӟc cӫa trang, thì chúng ta mong muӕn phân mãnh trong trung bình là ½ trang trên mӝt quá trình Xem xét này ÿӅ nghӏrҵng kích thѭӟc trang nhӓ là mong muӕn Tuy nhiên, chi phí liên quan tӟi mӛi mөc tӯbҧng trang và chi phí này giҧm khi kích thѭӟc trang tăng Vì thӃ nhұp/xuҩt ÿƭa là hiӋuquҧ hѫn khi sӕ lѭӧng dӳ liӋu ÿѭӧc truyӅn lӟn hѫn Thѭӡng thì kích thѭӟc trang lӟnlên theo thӡi gian khi các quá trình, tұp hӧp dӳ liӋu, bӝ nhӟ chính trӣ nên lӟn hѫn.Ngày nay, các trang ÿiӇn hình nҵm trong khoҧng 4 KB tӟi 8 KB, và mӝt sӕ hӋ thӕng

hӛ trӧ kích thѭӟc trang lӟn hѫn CPU và nhân thұm chí hӛ trӧ nhiӅu kích thѭӟc khác

Trang 38

nhau Thí dө, Solaris dùng 8 KB và 4 MB kích thѭӟc trang, phө thuӝc dӳ liӋu ÿѭӧclѭu bӣi trang HiӋn nay, các nhà nghiên cӭu ÿang phát triӇn viӋc hӛ trӧ kích thѭӟctrang khác nhau

Mӛi mөc tӯ bҧng trang thѭӡng dài 4 bytes, nhѭng kích thѭӟc có thӇ thay ÿәi.Mӝt mөc tӯ 32-bit có thӇ chӍ tӟi mӝt khung trang vұt lý 232 NӃu mӝt khung là 4 KB, thì hӋ thӕng vӟi nhӳng mөc tӯ 4 bytes có thӇ ÿánh ÿӏa chӍ cho 244 bytes (hay 16 TB)

Hình 0-14 Thí dө phân trang cho bӝ nhӟ 32 bytes vӟi các trang có kích thӭc 4 bytes

Mӝt khía cҥnh quan trӑng cӫa phân trang là sӵ phân chia rõ ràng giӳa tҫm nhìn

bӝ nhӟ cӫa ngѭӡi dùng và bӝ nhӟ vұt lý thұt sӵ Chѭѫng trình ngѭӡi dùng nhìn bӝnhӟ nhѭ mӝt không gian liên tөc, chӭa chӍ mӝt chѭѫng trình Sӵ thұt, chѭѫng trình ngѭӡi dùng ÿѭӧc phân bӕ khҳp bӝ nhӟ vұt lý mà nó cNJng quҧn lý các quá trình khác

Sӵ khác nhau giӳa tҫm nhìn bӝ nhӟ cӫa ngѭӡi dùng và bӝ nhӟ vұt lý thұt sӵ ÿѭӧc làm cho tѭѫng thích bӣi phҫn cӭng dӏch ÿӏa chӍ Ĉӏa chӍ luұn lý ÿѭӧc dӏch thành ÿӏa chӍvұt lý Ánh xҥ này ÿѭӧc che giҩu tӯ ngѭӡi dùng và ÿѭӧc ÿiӅu khiӇn bӣi hӋ ÿiӅu hành

Trang 39

không sӣ hӳu Không có cách ÿӏnh ÿӏa chӍ bӝ nhӟ bên ngoài bҧng trang cӫa nó và bҧng chӭa chӍ nhӳng trang mà quá trình sӣ hӳu.

Vì hӋ ÿiӅu hành ÿang quҧn lý bӝ nhӟ vұt lý nên nó phҧi hiӇu nhӳng chi tiӃt cҩpphát bӝ nhӟ vұt lý; khung nào ÿѭӧc cҩp phát, khung nào còn trӕng, tәng khung hiӋn

có là bao nhiêu,…Thông tin này ÿѭӧc giӳ trong mӝt cҩu trúc dӳ liӋu ÿѭӧc gӑi là bҧngkhung Bҧng khung chӍ có mӝt mөc tӯ cho mӛi khung trang vұt lý, hiӇn thӏ khung trangÿó ÿang rҧnh hay ÿѭӧc cҩp phát NӃu khung trang ÿѭӧc cҩp phát, thì xác ÿӏnhtrang nào cӫa quá trình nào ÿѭӧc cҩp

Hình 0-15 các khung trӕng (a) trѭӟc khi cҩp phát (b) sau khi cҩp phát

Ngoài ra, hӋ ÿiӅu hành phҧi biӃt rҵng quá trình ngѭӡi dùng hoҥt ÿӝng trong không gian ngѭӡi dùng, và tҩt cҧ ÿӏa chӍ luұn lý phҧi ÿѭӧc ánh xҥ ÿӇ phát sinh ÿӏa chӍvұt lý NӃu ngѭӡi dùng thӵc hiӋn lӡi gӑi hӋ thӕng (thí dө: ÿӇ thӵc hiӋn nhұp/xuҩt) và cung cҩp ÿӏa chӍ nhѭ mӝt tham sӕ (thí dө: vùng ÿӋm), ÿӏa chӍ ÿó phҧi ÿѭӧc ánh xҥ ÿӇsinh ra ÿӏa chӍ vұt lý ÿúng HӋ ÿiӅu hành duy trì mӝt bҧn sao cӫa bҧng trang cho mӛiquá trình, nhѭ nó duy trì bҧn sao cӫa bӝ ÿӃm chӍ thӏ lӋnh và nӝi dung thanh ghi Bҧnsao này ÿѭӧc dùng ÿӇ dӏch ÿӏa chӍ luұn lý thành ÿӏa chӍ vұt lý bҩt cӭ khi nào hӋ ÿiӅuhành phҧi ánh xҥ ÿӏa chӍ luұn lý tӟi ÿӏa chӍ vұt lý dҥng thӫ công Nó cNJng ÿѭӧc dùng bӣi bӝ phân phát CPU ÿӇ ÿӏa chӍ bҧng trang phҫn cӭng khi mӝt quá trình ÿѭӧc cҩpphát CPU Do ÿó, trang gia tăng thӡi gian chuyӇn ÿәi ngӳ cҧnh

VI.1.2 Hӛ trӧ phҫn cӭng

Mӛi hӋ ÿiӅu hành có phѭѫng pháp riêng ÿӇ lѭu trӳ các bҧng trang Hҫu hӃt ÿӅucҩp phát mӝt bҧng trang cho mӛi quá trình Mӝt con trӓ chӍ tӟi mӝt bҧng trang ÿѭӧclѭu trӳ vӟi nhӳng giá trӏ thanh ghi thanh ghi khác nhau (giӕng nhѭ bӝ ÿӃm chӍ thӏlӋnh) trong khӕi ÿiӅu khiӇn quá trình Khi bӝ phân phát ÿѭӧc yêu cҫu bҳt ÿҫu mӝt quá trình, nó phҧi nҥp lҥi các thanh ghi ngѭӡi dùng và ÿӏnh nghƭa các giá trӏ bҧng trang phҫn cӭng phù hӧp tӯ bҧng trang ngѭӡi dùng ÿѭӧc lѭu trӳ

Trang 40

Càiÿһt phҫn cӭng cӫa bҧng trang có thӇ ÿѭӧc thӵc hiӋn trong nhiӅu cách Cáchÿѫn giҧn nhҩt, bҧng trang ÿѭӧc cài ÿһt nhѭ tұp hӧp các thanh ghi tұn hiӃn Các thanh ghi này nên ÿѭӧc xây dӵng vӟi tính logic tӕc ÿӝ rҩt cao ÿӇ thӵc hiӋn viӋc dӏchÿӏa chӍ trang hiӋu quҧ Mӑi truy xuҩt tӟi bӝ nhӟ phҧi kiӇm tra kӻ lѭӥng bҧng ÿӗ trang,

vì vұy tính hiӋu quҧ là vҩn ÿӅ xem xét chӫ yӃu Bӝ phân phát CPU nҥp lҥi các thanh ghi này chӍ khi nó nҥp lҥi các thanh ghi khác Dƭ nhiên, các chӍ thӏ ÿӇ nҥp hay hiӋuchӍnh các thanh ghi bҧng trang phҧi ÿѭӧc cҩp quyӅn ÿӇ mà chӍ hӋ ÿiӅu hành có thӇthayÿәi bҧn ÿӗ bӝ nhӟ DEC PDP-11 là mӝt thí dө vӅ kiӃn trúc nhѭ thӃ Ĉӏa chӍ chӭa

16 bits, và kích thѭӟc trang là 8 KB Do ÿó, bҧng trang chӭa 8 mөc tӯ mà chúng ÿѭӧcgiӳ trong các thanh ghi nhanh

Sӱ dөng các thanh ghi cho bҧng trang chӍ phù hӧp nӃu bҧng trang có kích thѭӟc nhӓ (thí dө: 256 mөc tӯ) Tuy nhiên, hҫu hӃt các máy tính tѭѫng thӡi cho phép bҧng trang rҩt lӟn (thí dө, 1 triӋu mөc tӯ) Ĉӕi vӟi nhӳng máy này, viӋc sӱ dөng các thanh ghi nhanh ÿӇ cài ÿһt bҧng trang là không khҧ thi Hay ÿúng hѫn là, bҧng trang ÿѭӧc giӳ trong bӝ nhӟ chính, và thanh ghi nӅn bҧng trang (page-table base register-PTBR) chӍ tӟi thanh ghi bҧng trang Thay ÿәi các bҧng trang yêu cҫu thay ÿәi chӍ mӝtthanh ghi, vӅ căn bҧn cҳt giҧm thӡi gian chuyӇn ngӳ cҧnh

Vҩn ÿӅ vӟi tiӃp cұn này là thӡi gian ÿѭӧc yêu cҫu ÿӇ truy xuҩt vӏ trí bӝ nhӟ ngѭӡidùng NӃu chúng ta muӕn truy xuҩt vӏ trí i, ÿҫu tiên chúng ta phҧi xác ÿӏnh chӍ mөctrong bҧng trang, sӱ dөng giá trӏ trong ÿӝ dӡi PTBR bӣi sӕ trang cho i Tác vө này yêu cҫu mӝt truy xuҩt bӝ nhӟ Nó cung cҩp chúng ta sӕ khung ÿѭӧc nӕi kӃt vӟi ÿӝ dӡitrangÿӇ sinh ra ÿӏa chӍ thӵc Sau ÿó, chúng ta có thӇ truy xuҩt tӟi nѫi ÿѭӧc mong muӕn trong bӝ nhӟ Vӟi cѫ chӃ này, hai truy xuҩt bӝ nhӟ ÿѭӧc yêu cҫu ÿӇ truy xuҩtmӝt byte (mӝt cho mөc tӯ bҧng trang, mӝt cho byte ÿó) Do ÿó, truy xuҩt bӝ nhӟ bӏchұm bӣi mӝt trong hai yӃu tӕ ÿó Sӵ trì hoãn này không thӇ chҩp nhұn dѭӟi hҫu hӃttrѭӡng hӧp vì thӃ chúng ta phҧi sӱ dөng ÿӃn hoán vӏ!

Giҧi pháp chuҭn cho vҩn ÿӅ này là dùng bӝ lѭu trӳ (cache) phҫn cӭng ÿһc biӋt,nhӓ, tìm kiӃm nhanh ÿѭӧc gӑi là translation look-aside buffer (TLB) TLB là bӝ nhӟkӃt hӧp tӕc ÿӝ cao Mӛi mөc tӯ trong TLB chӭa hai phҫn: mӝt khoá (key) và mӝt giá trӏ (value) Khi bӝ nhӟ kӃt hӧp ÿѭӧc biӇu diӉn vӟi mӝt thành phҫn, nó ÿѭӧc so sánh vӟi tҩt cҧ khoá cùng mӝt lúc NӃu thành phҫn ÿѭӧc tìm thҩy, trѭӡng giá trӏ tѭѫng ӭngÿѭӧc trҧ vӅ Tìm kiӃm nhanh nhѭng phҫn cӭng ÿҳt ĈiӇn hình, sӕ lѭӧng mөc tӯ trong TLB nhӓ, thѭӡng tӯ 64 ÿӃn 1024

TLBÿѭӧc dùng vӟi các bҧng trang trong cách sau TLB chӭa chӍ mӝt vài mөc

tӯ bҧng trang Khi mӝt ÿӏa chӍ luұn lý ÿѭӧc phát sinh bӣi CPU, sӕ trang cӫa nó ÿѭӧchiӋn diӋn trong TLB NӃu sӕ trang ÿѭӧc tìm thҩy, khung cӫa nó lұp tӭc sҷn dùng và ÿѭӧc dùng ÿӇ truy xuҩt bӝ nhӟ Toàn bӝ tác vө có thӇ mҩt ít hѫn 10% thӡi gian nӃudùng tham chiӃu bӝ nhӟ không ÿѭӧc ánh xҥ

NӃu sӕ trang không ӣ trong TLB (còn gӑi là mҩt TLB), tham chiӃu bӝ nhӟ tӟibҧng trang phҧi ÿѭӧc thӵc hiӋn Khi sӕ khung ÿҥt ÿѭӧc, chúng ta có thӇ dùng nó ÿӇtruy xuҩt bӝ nhӟ (nhѭ hình VII-16) Ngoài ra, chúng ta thêm sӕ trang và sӕ khung tӟiTLBÿӇ mà chúng có thӇ ÿѭӧc tìm thҩy nhanh trên tham chiӃu tiӃp theo NӃu mӝtTLBÿã ÿҫy các mөc tӯ, hӋ ÿiӅu hành phҧi chӑn mӝt mөc tӯ ÿӇ thay thӃ Các chính sách thay thӃ rҩt ÿa dҥng tӯ ít ÿѭӧc sӱ dөng gҫn ÿây nhҩt (least recently used-LRU) tӟi chӑn ngүu nhiên Ngoài ra, mӝt sӕ TLB cho phép các mөc tӯ ÿѭӧc wired down.Nghƭa là, chúng không thӇ ÿѭӧc xoá khӓi TLB ĈiӇn hình, các mөc tӯ cho nhân thѭӡng ÿѭӧc wired down

Mӝt sӕ TLB lѭu trӳ các ÿӏnh danh không gian ÿӏa chӍ (address-space ASID) trong mӛi mөc tӯ cӫa TLB Mӝt ASID ÿӏnh danh duy nhҩt mӛi quá trình và

Ngày đăng: 30/01/2020, 01:24

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm