hdh tom tat bai giang 2 slides per page
TRANSCRIPT
6/17/2009 Operating System 1
HỆ ðIỀU HÀNH
6/17/2009 Operating System 2
Taøi lieäu tham khaûo He:� Slide bài giảng
�http://fit.hcmup.edu.vn/~haits
�http://www.box.net/shared/2v0t4sqeot
� Lê Khắc Nhiên Ân, giáo trình “Hệ ñiều hànhcơ bản”, ðHKHTN TPHCM
� Trần Hạnh Nhi, giáo trình “Hệ ñiều hànhnâng cao”, ðHKHTN TPHCM
�� Slide Slide bbààii gigiảảngng
�� http://fit.hcmup.edu.vn/~haitshttp://fit.hcmup.edu.vn/~haits
�� httphttp://www.box.net/shared/2v0t4sqeot://www.box.net/shared/2v0t4sqeot
�� LêLê KhKhắắcc NhiênNhiênÂnÂn, , gigiááoo trtrììnhnh ““ HHệệ ñiñiềềuu hhàànhnhcơcơ bbảảnn”” , , ðHKHTN TPHCMðHKHTN TPHCM
�� TrTrầầnn HHạạnhnh NhiNhi, , gigiááoo trtrììnhnh ““ HHệệ ñiñiềềuu hhàànhnhnângnângcaocao”” , , ðHKHTN TPHCMðHKHTN TPHCM
6/17/2009 Operating System 3
* Toång quan veà heä thoáng maùy tính* Toång quan veà heä thoáng maùy tính
+ HSA (Kieán truùc heä thoáng phaàn cöùng)
+ ISA (Kieán truùc boä leänh)
KieKieáánn trutruùùcc mamaùùyy ttíínhnh gogoààmm 2 2 phaphaàànn chchíínhnh::
6/17/2009 Operating System 4
Ñeå coù theå hoaït ñoäng, baét buoäc phaûi coù:Ñeå coù theå hoaït ñoäng, baét buoäc phaûi coù:
• - Heä thoáng xöû lyù
* Caùc thaønh phaàn chínhcuûa heä thoáng maùy tính:
* Caùc thaønh phaàn chínhcuûa heä thoáng maùy tính:
+ HSA (Kieán truùc heä thoáng phaàn cöùng)
Kieán truùc maùy tính
• - Heä thoáng löu tröõ
• - Heä thoáng nhaäp xuaát
6/17/2009 Operating System 5
� Boä nhôù trong
� Boä nhôù ngoaøi
Heä thoáng löu tröõHeä thoáng löu tröõ
(RAM, ROM, Registers, Cache, Port)
(HD, FD, CD, DVD, USB disk, ...)
Kieán truùc maùy tính
6/17/2009 Operating System 6
• - Kieåu döõ lieäu
* Caùc thaønh phaàn chínhcuûa heä thoáng maùy tính:
* Caùc thaønh phaàn chínhcuûa heä thoáng maùy tính:
+ HSA (Kieán truùc heä thoáng phaàn cöùng)
Kieán truùc maùy tính
• - Taäp thanh ghi
• - Taäp leänh
+ ISA (Kieán truùc boä leänh)
6/17/2009 Operating System 7
HSA
Heä thoáng xöû lyù
Heä thoáng löu tröõ
Heä thoáng nhaäp xuaát
Boä nhôù trong
Boä nhôù ngoaøi
CPU
Caùc chip xöû lyù khaùc
Kieåu Döõ Lieäu
Taäp Thanh Ghi
Taäp Leänh
ISA
(RAM, ROM, Thanh ghi, Cache, ..)
(Baøn phím, maøn hình, chuoät, loa, micro, modem, maùy in, ..)
(HD, FD, CD, DVD, USB disk, ...)
6/17/2009 Operating System 8
- Heä nhò phaân (cô soá 2): Hình thöùc theå hieän: 01001b, 11111001b, 11100b..
* Caùc heä thoáng soá* Caùc heä thoáng soá
- Heä thaäp phaân (cô soá 10): Hình thöùc theå hieän: 9, 249, 28d, ..
- Heä thaäp luïc phaân (cô soá 16): Hình thöùc theå hieän: 9h, 0F9h, 1Ch, ..
6/17/2009 Operating System 9
- bit: ñôn vò löu tröõ nhoû nhaát
* Caùc kieåu döõ lieäu trong maùy tính* Caùc kieåu döõ lieäu trong maùy tính
- Byte: ñôn vò truy xuaát cuûa chöông trình
- Word: ñôn vò truy xuaát cuûa maùy tính(coù kích thöôùc phuï thuoäc vaøo CPU & löu ngöôïc theoñôn vò Byte – xem ví duï)
- Chuoãi kyù töï: löu tröõ theo thöù töï bình thöôøng
- Soá BCD: löu tröõ moãi chöõ soá cuûa 1 soá thaäp phaânbaèng moät (hoaëc nöûa) Byte
6/17/2009 Operating System 10
* Toå chöùc döõ lieäu treân boä nhôù trong* Toå chöùc döõ lieäu treân boä nhôù trong
- Byte: ñôn vò truy xuaát boä nhôù trong cuûa phaàn meàm(goàm 8 bit - bit phaûi nhaát laø bit 0 & bit traùi nhaát laø bit 7)
- Word: ñôn vò truy xuaát cuûa phaàn cöùng (coù kích thöôùc
phuï thuoäc vaøo CPU) hoaëc 1 kieåu döõ lieäu cuûa phaànmeàm (coù kích thöôùc phuï thuoäc vaøo phaàn meàm töông öùng)
- Chuoãi kyù töï: löu tröõ theo thöù töï bình thöôøng
- Soá nguyeân: löu ngöôïc theo ñôn vò Byte (khaûo saùtcaùc ví duï cuï theå)
6/17/2009 Operating System 11
* Toå chöùc thanh ghi:* Toå chöùc thanh ghi:
+ Khaùi nieäm thanh ghi:
Caùc thanh ghi trong CPU 8bit coù kích thöôùc 8bit, trong CPU 16bit coùkích thöôùc 16bit, trong CPU 32bit coù kích thöôùc 32bit ñoàng thôøi coù luoâncaùc thanh ghi cuûa CPU 16 bit
- Laø caùc vuøng nhôù nhoû löu döõ lieäu trong caùc chip xöû lyù
+ Kích thöôùc thanh ghi:
Tính theo ñôn vò bit – tuøy thuoäc chöùc naêng cuûa chip
- Coù toác ñoä truy xuaát raát nhanh & taàn suaát söû duïng cao
+ Soá löôïng thanh ghi:
Thöôøng raát ít, tuøy thuoäc möùc ñoä xöû lyù & thieát keá cuûa chip
CPU Intel 16 bit coù 14 thanh ghi, phaân thaønh 5 nhoùm
6/17/2009 Operating System 12
* Toå chöùc thanh ghi cuûa CPU 16 bit:* Toå chöùc thanh ghi cuûa CPU 16 bit:
+ Nhoùm thanh ghi ñoaïn (Segment register):
- CS (Code Segment): löu chæ soá cuûa segment chöùa CT ngoân ngöõ maùy.
- DS (Data Segment): löu chæ soá segment chöùa döõ lieäu cuûa CT.
- ES (Extra Segment): löu chæ soá segment chöùa döõ lieäu boå sung cuûa CT.
- SS (Stack Segment): löu chæ soá segment chöùa ngaên xeáp cuûa CT.
(Treân CPU 32bit coù theâm 2 thanh ghi FS, GS coù chöùc naêng töông töï nhö ES)
CT muoán truy xuaát 1 vuøng nhôù thì phaûi
ñöa chæ soá segment cuûa vuøng nhôù ñoù vaøo moät thanh ghi ñoaïn
6/17/2009 Operating System 13
* Toå chöùc thanh ghi cuûa CPU 16 bit:* Toå chöùc thanh ghi cuûa CPU 16 bit:
+ Nhoùm thanh ghi con troû & chæ muïc (Pointer & Index Reg.)
- IP (Instruction Pointer): löu offset cuûa oâ nhôù chöùa leänh keá tieáp.
- BP (Base Pointer): löu offset cuûa oâ nhôù caàn truy xuaát.
- SP (Stack Pointer): löu offset ñænh ngaên xeáp.
- SI (Source Index): löu offset vuøng nhôù nguoàn caàn ñoïc leân.
- DI (Destination Index): löu offset vuøng nhôù ñích caàn ghi xuoáng.
Moãi thanh ghi trong nhoùm naøy phaûi ñi keøm vôùi 1 thanh ghi trongnhoùm thanh ghi ñoaïn môùi bieåu thò ñöôïc vuøng nhôù /oâ nhôù caàn truy xuaát.
6/17/2009 Operating System 14
* Toå chöùc thanh ghi cuûa CPU 16 bit:* Toå chöùc thanh ghi cuûa CPU 16 bit:
+ Nhoùm thanh ghi ña duïng (General Register)
- AX (Accumulator Register): löu caùc döõ lieäu soá, giaù trò maëc ñònh, …
- BX (Base Register): ñoùng vai troø chæ soá maûng,, cuõng coù theå löu döõ lieäu
- CX (Count Register): coù theå duøng ñeå ñònh soá laàn laëp.
- DX (Data Register): löu döõ lieäu /keát quaû tính toaùn (~AX).
Moãi thanh ghi trong nhoùm naøy ñeàu cho pheùp söû duïng ñeántöøng Byte, baèng caùch thay chöõ ‘X’ thaønh chöõ ‘H’ ñeå chæByte cao, hoaëc ‘L’ ñeå chæ Byte thaáp (AH, BL, CL)
Xem nhö coù theâm 8 thanh ghi môùi
6/17/2009 Operating System 15
* Toå chöùc thanh ghi cuûa CPU 16 bit:* Toå chöùc thanh ghi cuûa CPU 16 bit:
+ Thanh ghi côø (Flag Register)
Khoâng coù teân, moãi bit laø 1 côø, bieåu dieãn traïng traùi cuûaleänh vöøa thöïc hieän, hoaëc ñaët traïng traùi cho leänh thöïc hieän
6/17/2009 Operating System 16
* Heä thoáng ngaét (Interrupt):* Heä thoáng ngaét (Interrupt):
+ Khaùi nieäm:
- Laø caùc chöông trình con (thuû tuïc /haøm) coù saün trong maùy
- Caùc haøm ngaét khoâng chæ coù saün trong ROM BIOS maø coønñöôïc Heä Ñieàu Haønh boå sung theâm
- Haøm ngaét khoâng coù teân maø thay vaøo ñoù laø 1 con soá (0..FF)
- Moãi haøm ngaét laïi chöùa beân trong noù nhieàu haøm con
- Tham soá in./output cuûa haøm ngaét ñöôïc truyeàn qua thanh ghi
6/17/2009 Operating System 17
* Heä thoáng ngaét (Interrupt):* Heä thoáng ngaét (Interrupt):
+ Phaân loaïi:
Ngaét cöùng Ngaét meàm
Ngaét
trong
Ngaét
ngoaøi
Ngaét do
ngöôøi duøng taïo
Ngaét cuûa
heä thoáng
Ngaét cuûa
BIOS
Ngaét cuûa
HÑH
6/17/2009 Operating System 18
* Heä thoáng ngaét (Interrupt):* Heä thoáng ngaét (Interrupt):
+ Chöông trình ngaét:
Thöôøng goàm nhieàu ñoaïn chöông trình con beân trong, moãiñoaïn thöïc hieän 1 coâng vieäc cuï theå naøo ñoù, chæ soá cuûa ñoaïn theåhieän trong AH. Khi ñoù thaân haøm ngaét coù daïng (maõ giaû):
switch (AH) {case 0:
.. .. .. // haøm con 0break;
case 1:.. .. .. // haøm con 1break;
.. .. ..case N:
.. .. .. // haøm con Nbreak;
}
6/17/2009 Operating System 19
Một Số Thiết Bị
�� ððĩĩaa mmềềmm
�� ððĩĩaa ccứứngng
�� Card Card mmàànn hhììnhnh
6/17/2009 Operating System 20
* Toå chöùc döõ lieäu treân ñóa töø* Toå chöùc döõ lieäu treân ñóa töø
+ Caáu truùc vaät lyù :
- Hình troøn, goàm nhieàu maët, moãi maët coù nhieàu ñöôøng troønñoàng taâm, treân caùc ñöôøng troøn coù caùc cung troøn, thoângthöôøng moãi cung chöùa 4096 ñieåm töø (=4096bit = 512 byte)
- Moãi maët coù töông öùng 1 ñaàu ñoïc ñeå ñoïc hoaëc ghi döõ lieäu.
- Moãi laàn ñoïc /ghi ít nhaát 1 cung troøn (512 B)
- Caùc cung troøn, ñöôøng troøn & ñaàu ñoïc (hoaëc maët) coù caùc töøgoác töông öùng laø sector, track (hoaëc cylinder) & head.
- Moãi laàn truy xuaát (ñoïc hoaëc ghi ñóa) chæ coù theå thöïc hieäntreân N sector lieân tieáp (N>=1)
6/17/2009 Operating System 21
* Toå chöùc döõ lieäu treân ñóa töø* Toå chöùc döõ lieäu treân ñóa töø
+ Caáu truùc vaät lyù :
- Ñeå truy xuaát 1 sector caàn phaûi chæ ra vò trí cuûa sector ñoù. Vò trí sector ñöôïc theå hieän baèng 3 thoâng soá: chæ soá sector, track & head
- Head ñöôïc ñaùnh soá theo thöù töï töø treân xuoáng baét ñaàu töø 0, Track ñöôïc ñaùnh soá theo thöù töï töø ngoaøi vaøo baét ñaàu töø 0, Sector ñöôïc ñaùnh chæ soá theo thöù töï baét ñaàu töø 1 theo chieàungöôïc vôùi chieàu quay cuûa ñóa.
- Ñòa chæ cuûa sector vaät lyù coù kyù hieäu : (sector, track, head)
6/17/2009 Operating System 22
* Toå chöùc döõ lieäu treân ñóa töø* Toå chöùc döõ lieäu treân ñóa töø
+ Toå chöùc ñóa logic:
- Laø 1 daõy caùc sector ñöôïc ñaùnh chæ soá theo thöù töï taêng daànbaét ñaàu töø 0
- Ñóa thaät söï laø ñóa vaät lyù nhöng vì truy xuaát phaûi duøng ñeán 3 tham soá raát baát tieän neân khaùi nieäm ñóa logic ñöôïc ñöa ra ñeådeã hieåu, deã thao taùc /tính toaùn hôn.
NN--114433221100
…………
- Moãi sector treân ñóa logic töông öùng vôùi 1 sector duy nhaáttreân ñóa vaät lyù sao cho sau khi truy xuaát sector K thì truyxuaát tieáp sang sector K+1 laø nhanh hôn so vôùi taát caû caùcsector khaùc.
6/17/2009 Operating System 23
ðĩa cứng
�� ỔỔ ññĩĩaa ccứứngng, hay , hay còncònggọọii llàà ổổ ccứứngng ((HHard ard DDisk isk DDriverive--HDDHDD) ) llàà thithiếếtt bbịị ddùùngng ññểể lưulưu trtrữữddữữ lili ệệuu trêntrênbbềề mmặặtt ccáácc ttấấmm ññĩĩaa hhììnhnh tròntrònphphủủ vvậậtt lili ệệuu ttừừ ttíínhnh. .
6/17/2009 Operating System 24
ðĩa cứng
6/17/2009 Operating System 25
ðĩa cứng
�� TrênTrênmmộộtt track track chiachia llààmm nhinhiềềuu cungcungbbằằngngnhaunhaullàà 1 sector 1 sector vvàà ñưñượợcc ññáánhnh ssốố ttừừ mmộộtt. . Qua track Qua track mmớớii ññáánhnh ssốố llạạii . . SSốố sector sector trêntrênmmỗỗii track track llàà bbằằngng nhaunhau..
�� Cylinder Cylinder llàà ttậậpp hhợợpp ccáácc track track ccóó ccùùngng ssốốhihiệệuu trêntrên ttấấtt ccảả ccáácc mmặặtt..
�� Cluster Cluster llàà ttậậpp hhợợpp ccáácc sector (sector (ññĩĩaa mmềềmm 1 1 cluster = 1 sector)cluster = 1 sector)
6/17/2009 Operating System 26
ðĩa cứng
�� ðơnðơn vvịị cơcơ ssởở ccủủaa ññĩĩaa llàà sector (sector (thưthườờngng = 512 = 512 byte)byte)��ððĩĩaa llàà thithiếếtt bbịị xuxuấấtt nhnhậậpp theotheokhkhốốii ..
�� MMộộtt sector sector ñưñượợcc xxáácc ññịịnhnh bbằằngng 2 2 ccááchch::�� Sector Sector tươngtương ññốốii : sector : sector vvậậtt lýlý xxáácc ññịịnhnh bbởởii
head (head (ññáánhnh ssốố ttừừ 0), track (0), track (ññáánhnh ssốố ttừừ 0) 0) trêntrênhead head vvàà sector sector trêntrên track (track (ññáánhnh ssốố ttừừ 1). 1).
�� Sector Sector tuytuyệệtt ññốốii : sector logic : sector logic xxáácc ññịịnhnh bbởởii mmộộttthôngthôngtin. tin. CCááchch ññáánhnh ssốố xxáácc ññịịnhnh sector sector tuytuyệệttññốốii nhưnhư sausau: : ññáánhnh ssốố hhếếtt trêntrênmmộộtt cylinder cylinder sausauññóó trtrởở vvềề mmặặtt 0 0 ññểể ññáánhnh ssốố titiếếpp theotheochochommặặtt 0 0 ccủủaa cylinder cylinder titiếếpp theotheo..
6/17/2009 Operating System 27
ðĩa cứng
�� VVíí ddụụ: : chochommộộtt ññĩĩaa ccứứngng ccóó 160 160 mmặặtt, 640 cylinder , 640 cylinder vvàà 80 sector/track. 80 sector/track. HHỏỏii ổổ ccứứngng ccóó dung dung lưlượợngng baobaonhiêunhiêuMB?MB?
�� Dung Dung lưlượợngng = = SSốố sector/sector/ññĩĩaa * 512 (byte)* 512 (byte)
�� DL = DL = SSốố sector/cylinder * 640 * 512 (byte)sector/cylinder * 640 * 512 (byte)
�� DL = DL = SSốố sector/track * 160 * sector/track * 160 * 640640* 512 (byte)* 512 (byte)
�� DL = (80 * 160 * 640 * 5120) : (1024DL = (80 * 160 * 640 * 5120) : (102422) (MB)) (MB)
6/17/2009 Operating System 28
Card Màn Hình
�� ChChấấtt lưlượợngng mmàànn hhììnhnh phphụụ thuthuộộcc vvààoo card card mmàànnhhììnhnh. . CCóó 3 3 yyếếuu ttốố ññểể xxáácc ññịịnhnh chchấấtt lưlượợngng ccủủaa card card mmàànn hhììnhnh::�� ððộộ phânphângigiảảii vvíí ddụụ 800x600800x600�� SSốố mmààuu = = ssốố mmààuu ccủủaa 1 pixel 1 pixel ñưñượợcc quyquy ññịịnhnh bbởởii
ssốố bit bit mmààuu ququảảnn lýlý chocho1 pixel.1 pixel.�� KKííchch thưthướớcc bbộộ nhnhớớ = 1p * = 1p * ssốố trangtrang. . TrongTrongññóó 1p 1p
= = ññộộ phânphângigiảảii * * ssốố byte byte mmààuu. (1p . (1p llàà mmộộtt trangtrangmmàànn hhììnhnh).).
6/17/2009 Operating System 29
Card màn hình
�� VVíí ddụụ: 1 card : 1 card mmàànn hhììnhnh ssửử ddụụngng ññộộ phânphângigiảảii800x600 800x600 ccóó ththểể hihiểểnn ñưñượợcc 65536 65536 mmààuu. . TTốốcc ññộộload load hhììnhnh llàà 24 frame/s. 24 frame/s. HHỏỏii card card mmàànn hhììnhnh nnààyy ccóódung dung lưlượợngng llàà baobaonhiêunhiêuMb.Mb.
�� 65536 65536 mmààuu = 2= 21616 mmààuu = 2 byte = 2 byte mmààuu�� TTốốcc ññộộ load load hhììnhnh 24 frame/s 24 frame/s �� ssốố trangtrangllàà 2424�� KKííchch ththứứơcơc bbộộ nhnhớớ = 1p * = 1p * ssốố trangtrang= 1p * 24 = 1p * 24 �� KKííchch thưthướớcc = = ññộộ phânphângigiảảii * * ssốố byte byte mmààuu * 24* 24�� KKííchch thưthướớcc = 800*600*2*24 (byte) = 800*600*2*24 (byte) ≈≈ 22 (MB)22 (MB)
6/17/2009 Operating System 30
Câu hỏi ôn tập
�� 1/ 1/ ChoChommộộtt ññĩĩaa ccứứngng ccóó dung dung lưlượợngng 640 MB, 640 MB, ññĩĩaannààyy ssửử ddụụngng 640 640 mmặặtt. . BiBiếếtt ssốố sector sector trêntrên1 track 1 track ggấấpp ñôiñôi ssốố track track trêntrênmmộộtt mmặặtt. . HHỏỏii ssốố sector sector trêntrênmmộộtt cylinder cylinder llàà baobaonhiêunhiêu??
�� 2/ 2/ ChoChommộộtt card card mmàànn hhììnhnh ccóó dung dung lưlượợngng 8 MB, 8 MB, ssửử ddụụngng 24 frame/s. 24 frame/s. HHỏỏii card card mmàànn hhììnhnh nnààyy ccóó ththểểssửử ddụụngng ñưñượợcc nhnhữữngng ññộộ phânphângigiảảii thôngthôngthưthườờngngnnààoo khikhi ssốố mmààuu hihiểểnn ththịị llàà 256 256 mmààuu..
�� 3/T3/Tììm m côngcôngththứứcc xxáácc ññịịnhnh ssốố hihiệệuu sector sector tuytuyệệtt ññốốiittừừ sector sector tươngtương ññốốii vvàà ngưngượợcc llạạii ..
6/17/2009 Operating System 31
�� DL = SDL = Sốố Sec Sec//ððĩĩa * 512 (byte)a * 512 (byte)�� DL = SDL = Sốố Sec/mSec/mặặt * St * Sốố MMặặtt//ððĩĩa * 512a * 512�� DL = SDL = Sốố Sec/mSec/mặặt * St * Sốố MMặặt * 512t * 512�� DL = DL = SSốố Sec/Track * SSec/Track * Sốố Track/mTrack/mặặt * St * Sốố MMặặt * 512t * 512
�� DL = x * x/2 * 640 * 512 (byte) = 640 (MB) = DL = x * x/2 * 640 * 512 (byte) = 640 (MB) = 640*1024*1024 640*1024*1024 �� x?x?
�� SSốố Sec/Cyl = SSec/Cyl = Sốố Sec/Track * SSec/Track * Sốố Track/CylTrack/Cyl�� SSốố Sec/Cyl = x * SSec/Cyl = x * Sốố Track/CylTrack/Cyl�� SSốố Sec/Cyl = x * SSec/Cyl = x * Sốố mmặặtt//ððĩĩaa
6/17/2009 Operating System 1
Tổng quan về Hệ ñiều hành
Trần Sơn HảiKhoa Toán – Tin học
ðại học Sư phạm TPHCM
Heavily reference to Operating System Slide of Hoang Than AnhTuan, University of Pedagogy, HCMC
6/17/2009 Operating System 2
Nội dung
• Hệ ñiều hành là gì?• Vai trò và ñặc ñiểm của hệ ñiều hành• Lịch sử phát triển của hệ ñiều hành• Các chức năng cơ bản của hệ ñiều hành
6/17/2009 Operating System 3
Hệ ñiều hành là gì?
• Là một chương trình (phần mềm)!• Chương trình ñầu tiên ñược chạy sau khi
khởi ñộng.• ðiều phối việc thi hành các phần mềm
khác• Cung cấp các dịch vụ thông dụng sử dụng
bởi người dùng và các chương trình ứngdụng khác
6/17/2009 Operating System 4
ðịnh nghĩa HðH•HðH là một chương trìnhhoạt ñộng như là mộttrung gian giữa người dùng và phần cứng máytính.
•Mục ñích của HðH:–Kiểm soát và thực thi các chương trìnhứng dụng.
–Quản lý tiến trình
–Quản lý CPU
–Giúp người sử dụng dễ sử dụng máy vi tính.
–Sử dụng tài nguyên phần cứng máy tính một cáchhiệu quả
–Quản lý ñĩa cứng
–Quản lý bộ nhớ
6/17/2009 Operating System 5
Vai trò của HðH
Người dùng
Ứng dụng
HðH
Phần cứng
OS Kernel
Hardware
gcc gdb
emacs
vi date
grep
xterm
netscape
diff
6/17/2009 Operating System 6
Vai trò của HðH (trạng thái tĩnh) (tt)
6/17/2009 Operating System 7
Vai trò của HðH (trạng thái ñộng) (tt)
6/17/2009 Operating System 8
Phân lớp trong một hệ thống
Ngườidùng
Lập trình viên
Kỹ sưthiết kế HðH
Phần cứng
Hệ ñiều hành
Chức năng hỗ trợ
Ứng dụng Thaotácdễdần
ðộphứctạp
tăngdần
6/17/2009 Operating System 9
Mô hình khác
Phần cứng
HðH
Lệnhñặc quyền
Systemcalls
Lệnhcủa máy
Ứng dụng
MộtPhần cứng
MộtHðH
Nhiềuứng dụng
6/17/2009 Operating System 10
HðH là một PM có tính phảnứng
• Nó chờ ñợi các sự kiện (event).• Khi một sự kiện xảy ra, HðH phản ứng.
– HðH xử lý sự kiện ñó.• Có thêm một chương trình muốn chạy.• Có thêm thiết bị mới gắn vào
• Việc xử lý sự kiện phải tốn càng ít thời giancàng tốt.
• Loại sự kiện– Ngắt (interrupts)– Lời gọi hệ thống (System calls)
6/17/2009 Operating System 11
Ngắt
• Ng�t là một cách thức mà phần cứngthông báo cho HðH về các tình huống ñặcbiệt ñòi hỏi HðH phải lưu ý
• Ngắt làm cho CPU tạm dừng thi hành chỉthị kế tiếp
• Thay vì ñó, quyền ñiều khiển ñược chuyểnsang cho HðH
6/17/2009 Operating System 12
Minh họa ngắt
MOV Bx, 5
ADD Ax, Ax, Bx
STORE [DS+120], Ax
LOAD Ax, [DS+120]
Chương trình A
Có thiết bị mớiNgắt HðH
xử lý ngắt
6/17/2009 Operating System 13
Xử lý ngắt
• Bộ xử lý ngắt là một phần của mã lệnh HðH dùng ñể thao tác liên quan ñến hoàncảnh phát sinh ra ngắt– Các con trỏ trỏ ñến các bộ xử lý ngắt ñược
lưu trong vector ngắt (interrupt vector)– Vector ngắt ñược lưu trong một vị trí bộ nhớ
ñược ñịnh trước
6/17/2009 Operating System 14
Xử lý ngắt (tt)
• Khi một ngắt xảy ra:– CPU chuyển sang chế ñộ Kernel– Chuyển quyền ñiều khiển cho bộ xử lý ngắt
thích hợp– ðịa chỉ của bộ xử lý ngắt ñược tìm thấy bằng
cách sử dụng số thứ tự của ngắt như là mộtchỉ số ñề vector ngắt:
• Jump &int[interrupt#]
6/17/2009 Operating System 15
Vector ngắt
• ðịa chỉ vector ngắt và số thứ tự ngắt làmột phần trong ñặc tả phần cứng
• HðH tải các ñịa chỉ ngắt vào trong vector ngắt trong quá trình khởi ñộng
6/17/2009 Operating System 16
Các loại ngắt
• Ngắt không ñồng bộ ñược tạo ra bởi cácthiết bị ngoại vi tại những thời ñiểm khôngthể biết trước
• Ngắt bên trong (ñồng bộ) ñược tạo ra bởiCPU do một tình huống có thể lườngtrước– Tình huống gây lỗi– Vấn ñề có tính tạm thời
6/17/2009 Operating System 17
Lời gọi hệ thống
• Hệ ñiều hành cung cấp một tập hợp các dịch vụ hệthống (các chức năng mà hệ ñiều hành cung cấp, thường liên quan ñến phần cứng).– Nhằm giúp cho các chương trình ứng dụng không cần quan tâm
ñến chi tiết phần cứng– Tập hợp các lời gọi hệ thống ñược gọi là API của HðH (OS API)– ðược ñóng gói thành một thư viện
• Khi một chương trình muốn sử dụng một dịch vụ nào ñócủa HðH chúng sẽ phát sinh m�t l�i g�i h� th�ng(system call) .
• Các lời gọi hệ thống thường thấy– Mở/ñọc/ghi/ñóng file– Lấy ngày giờ hiện tại– Tạo tiến trình mới– Yêu cầu thêm bộ nhớ
6/17/2009 Operating System 18
�Chương trình người dùng không thể truy cậpvào các cấu trúc nội tại của HðH; chỉ có thểthông qua lời gọi hệ thống (protection!)�Cơ chế bảo vệ phân lớp
Ứng dụng
Các dịch vụCấu trúc
bên trong HðH
Phần cứng
Chế ñộuser
system calls
Chế ñộkernel
HðH
6/17/2009 Operating System 19
Chế ñộ thi hành CPU
• CPU hỗ trợ ít nhất là 2 chế ñộ thi hành (dual mode):
• User mode (chế ñộ người dùng)– Mã lệnh của chương trình người dùng
• Kernel (supervisor, privileged, monitor, system) mode– Mã lệnh của HðH
• Chế ñộ thi hành ñược chỉ ra bởi một bit trongword trạng thái xử lý (processor status word) (PSW)
6/17/2009 Operating System 20
Kernel Mode
• Gần như kiểm soát hoàn toàn phần cứng:– Các chỉ thị CPU ñặc biệt– Truy cập không giới hạn ñến bộ nhớ, ñĩa, …
6/17/2009 Operating System 21
Các chỉ thị chỉ có trong Kernel mode
• Tải/lưu các thanh ghi ñặc biệt• VD: các thanh ghi dùng ñể ñịnh nghĩa các ñịa chỉ
vùng nhớ có thể truy cập ñược
• Ánh xạ các trang bộ nhớ ñến không gianñịa chỉ của một tiến trình xác ñịnh
• Chỉ thị ñặc mức ñộ ưu tiên của ngắt• Chỉ thị ñể kích hoạt thiết bị I/O
6/17/2009 Operating System 22
Bảo vệ Kernel mode
• ðoạn mã của HðH thi hành ở chế ñộKernel– Ngắt, lời gọi hệ thống
• Chỉ ñoạn mã của HðH mới ñược thi hànhở chế ñộ Kernel
• ðoạn mã của người dùng không bao giờñược thi hành trong chế ñộ Kernel
6/17/2009 Operating System 23
Các lời gọi hệ thống trong Unix
•Process control–fork(), exec(), wait(), abort()
•File manipulation–chmod(), link(), stat(), create()
•Device manipulation–open(), close(), ioctl(), select()
•Information maintenance–time(), acct(), gettimeofday()
•Communications–socket(), accept(), send(), recv()
6/17/2009 Operating System 24
Câu hỏi
�HðH ñọc dữ liệu vào, thi hành tính toán, xuất rakết quả và thoát.
ðúng hay sai?
SAI!!!
�HðH là một chương trình cótính phản ứng(reactive program)
6/17/2009 Operating System 25
Câu hỏi
• Hệ ñiều hành là gì. Ví dụ các hệ ñiều hànhmà bạn biết.
• Ngắt là gì? • Vẽ mô hình phân lớp trong một hệ thống
và trình bày vai trò của hệ ñiều hành trongñó.
• Tìm hiểu các lệnh trong MS-DOS. (dir, copy, copy con, del, ipconfig, netstat, ipconfg /all, nslookup,
6/17/2009 Operating System 26
Lịch sử phát triển của HðH
6/17/2009 1
Lịch sử phát triển HðH
Trần Sơn HảiKhoa Toán – Tin học
ðại học Sư phạm TPHCM
Heavily reference to Operating System Slide of Hoang Than AnhTuan, University of Pedagogy, HCMC
6/17/2009 2
Hệ ñiều hành là gì?
• Thế nào là m ột hệ ñiều hành?
– Một nhà cung cấp sự trừu tượng hóa– Một nhà cấp phát tài nguyên– Ngoài ra:
• Một ñiều phối viên• Một người bạn: giúp máy tính dễ sử dụng• Một phù thủy: làm cho hệ thống có vẻ có nhiều hơn cái
thật sự nó có (nhiều vi xử lý, nhiều bộ nhớ hơn)
– Công việc của hệ ñiều hành dựa theo phần cứng.
6/17/2009 3
HðH bao gồm những gì?
�File systems
�Device drivers
�Networking protocols
�System utilities
�Shells
�Libraries
�Accessories
�Browser
�……………..
6/17/2009 4
Thời kỳ khởi ñầu ENIAC: (1945—1955)
2. Dự án chế tạo máyENIAC (ElectronicNumerical Integrator and Computer) ñược BRL (Ballistics Research Laboratory – Phòng nghiêncứu ñạn ñạo quânñội Mỹ) bắt ñầu vào năm1943 dùng cho việc tính toán chính xác vànhanh chóng các bảng số liệu ñạn ñạo cho từngloại vũ khí mới.
Các thông số:
-18000 bóngñèn chân không
- nặng hơn 30 tấn
- Tiêu thụ một lượngñiện năng vào khoảng140kW và chiếm một diện tích xấp xỉ 1393 m2 .
- 5000 phép cộng/ 1s
- ðặc biệt sử dụng hệ ñếm thập phân
6/17/2009 5
Lịch sử HðH : L ịch sử pháttriển phần cứng
• Khởi ñầu: Không có HðH » Máy tính là thiết bị thực nghiệm kỳ lạ.
» Lập trình bằng ngôn ngữ máy.
» Dùng các bảng tổngñài ñể ñiều khiển máy tính.
» Người sử dụng ngồi trước bảngñiều khiển.
» Không có sự chồng nhau giữa việc tính toán, I/O và thờigian suy nghĩa của người dùng.
» Lập trình bằng cáchñưa phiếu ñục lỗ vào bằng tay.
» ðã có thư viện ñược viết dùng chung cho mọi người �tiền thân của hệ ñiều hành.
» Vấn ñề: chờ ñợi quá lâu, quá nhiều.
6/17/2009 6
Giai ñoạn 1: máy tính ñắt, nhân công r ẻ.(1948 – 1975)
• Sử dụng máy tính hiệu quả hơn: tách rời máy
và người.
• HðH hỗ trợ làm vi �c theo lô : một chương trìnhtải công việc của người dùng vào, thi hành nóvà làm tiếp công việc kế tiếp.
• Nếu chương trình lỗi, HðH ghi lại nội dung củabộ nhớ và lưu lại ở ñâu ñó.
• Sử dụng tài nguyên hiệu quả hơn, nhưng khó
debug!
6/17/2009 7
Các kênh dữ liệu và ngắt cho phép I/O và tính toán chồngnhau.� Vùng ñệm và xử lý ngắt ñược hỗ trợ bởi hệ ñiều hành. � Xuất hiện công việc spool.
Vấn ñề� Tiện ích còn thấp; mỗi thời ñiểm chỉ chạy một công việc. � Không có sự bảo vệ giữa các công việc khác nhau. � Công việc có thời gian thi hành ngắn sẽ phải ñợi rất lâu nếu nó ñược
sắp sau công việc có thời gian thi hành dài hơn.
Giải pháp� Bảo vệ phần cứng: bảo vệ vùng nhớ và tái ñịnh vị vùng nhớ. � Lập trình ña chương (Multiprogramming): nhiều người dùng có thể
chia sẻ cùng một hệ thống. � Công việc nhỏ có thể nhanh chóng ñược hoàn thành.
� HðH phải quản lý tương tác giữa các công việc ñồng thời.
� HðH trở nên một khoa học quan trọng.
•OS/360: HðH ñầu tiên thiết kế cho một họ các máy tính: từ máy tính
nhỏ nhất ñến máy tính lớn nhất.
6/17/2009 8
Vấn ñề•OS/360 ñược giới thiệu vào năm 1963; vàñến năm 1968 nó mới thật sự hoạtñộng.
Hơn 1000 lỗi khi phát hành•Hệ thống cực kỳ phức tạp. •Tất cả ñều là mã hợp ngữ (assembly
code).
6/17/2009 9
Giai ñoạn 2:Máy tính r ẻ hơn - nhâncông ñắt! (1975-1985)
Giúp con người tăng năng suất.
Chia sẻ thời gian: cho phép nhiều người sử dụng máy tínhcùng một lúc.
•Thiết bị cuối rẻ: mọi người ñều có thể mua. •Dữ liệu ñược lưu trữ: dùng các hệ thống file. •Thử nghiệm cung cấp thời gian phản hồi chấp nhận ñược(tránh tình trạng tranh chấp tài nguyên; sự ñổ vỡ(thrashing)).
Thị trườngñược ñịnh hướng bởi cácứng dụng theo chiều dọc. CTSS:
•Phát triển tại MIT. •Một trong những hệ thống chia sẻ thời gianñầu tiên. •Tiên phong trong việc lập lịch•Khởi nguồn cho MULTICS.
6/17/2009 10
MULTICS:•Hợp tác phát triển bởi MIT, Bell Labs,
General Electric. •Viễn cảnh: một máy tính hỗ trợ cho
mọi người. Mọi người sẽ mua dịchvụ tính toán như là muañiện.
•Rất nhiều ý tưởng! •Xây dựng rất khó so với dự tính. •Công nghệ ñã bắt kịp.
6/17/2009 11
UNIX:– Ken Thompson và Dennis Ritchie xây dựng một hệ thống “do
Lập trình viên vì lập trình viên”. – Ban ñầu ñược cài ñặt bằng hợp ngữ. ðược viết lại bằng C sau
này. – Ý tưởng mới: HðH có thể di chuyển ñược! – Các trường ðH ñược cung cấp ñoạn mã ñể tham khảo. – ðH Berkeley thêm vào hỗ trợ bộ nhớ ảo cho VAX. – DARPA chọn UNIX làm nền tảng mạng (arpanet).
– UNIX trở thành HðH thương mại.– Các ý tưởng quan trọng ñược phổ biến thông qua UNIX– HðH ñược viết trên ngôn ngữ cấp cao. – HðH có thể di chuyển ñược không phụ thuộc vào nền tảng phần
cứng. – Cơ chế ñường ống (pipe)
– Hệ thống file có thể ñược nạp.
6/17/2009 12
Giai ñoạn 3: Máy tính r ất rẻ - nhân côngrất ñắt. (1981 - ...)
ðưa máy tính ñến từng trạm ñầu cuối!
CP/M: HðH thương mại ñầu tiên. IBM cần một phần mềm cho PC mới của họ, nhưng CP/M
không nắm bắt ñược thời cơ. Tiếp cận Bill Gates (Microsoft) ñể xem họ có thể xây dựng
một cái vậy không. Bill Gates mua 86-DOS, và tạo nên MS-DOS. Mục ñích chính: hoàn thành nhanh và chạy ñược các
chương trình CP/M hiện hành. HðH tr� thành m �t th vi�n gm các th � t�c
con và các l �nh có th thi hành ñ�c.
6/17/2009 13
Personal workstations– The PERQ – The Xerox Alto – The SUN Workstation (Stanford University Network)
Personal computers– The Apple II – The IBM PC – The Macintosh
Ứng dụng trong công nghiệp– Word processors – Spreadsheets – Databases
Thị trường chia theo chiều ngang– Hardware – Operating systems
– Applications
6/17/2009 14
Graphical User Interfaces• Xerox Star: 1981
– Chuột, windows• Apple Lisa/Machintosh: 1984
– “Look and Feel” suit 1988• Microsoft Windows:
– Win 1.0 (1985)– Win 3.1 (1990)– Win 95 (1995)– Win NT (1993)– Win 2000 (2000)– Win XP (2001)
Xerox
Star
Wind
ows 3
.1SingleLevel
HAL/Protection
No HAL/Full Prot
6/17/2009 15
Giai ñoạn 4: Mạng xu ất hiện!Việc kết nối trở nên quan trọng, bức thiết. Người ta muốn chia sẻ dữ liệu chứ không phải phần cứng. Ứng dụng mạng ñẩy ñến cho nền công nghiệp.
•WWW•Email •News
Việc bảo vệ và lập trình ña ch�ng trở nên kém quan trọng cho cácmáy tính cá nhân. Nó quan trọng hơn cho các máy tính chủ(server )
Thị trường tiếp tục phân hóa theo chiều ngang:•Cung cấp dịch vụ Internet•Thông tin trở thành một phương tiện
•Quảng cáo trên máy tính.
6/17/2009 16
HðH ngày nay
Hệ thống lớn và phức tạp với vô số vấn ñề.– hàng triệu dòng lệnh. – hàng trăm, hàng ngàn người phát triển.
Tương tác phức tạp– Không ñồng bộ. – Chạy trên mọi nền tảng. – Phân lớp người dùng theo nhu cầu. – Hiệu năng sử dụng!
Khó hiểu– Không còn như nguyên bản ñược tạo ra. – Quá lớn ñể cho một người có thể nắm bắt ñược. – Không ñược kiểm lỗi ñầy ñủ (OS/360 phát hành với 1000 lỗi). – Khó dự ñoán hành ñộng; tối ưu chủ yếu dựa vào cảm tính
(ñoán).
6/17/2009 17
6/17/2009 18
Phân loại hệ ñiều hành
• Theo số người dùng– Single và Multi user
• Theo số tác vụ– Single và Mutil task
• Theo giao diện– Command line và Graphic
6/17/2009 19
Câu Hỏi
• Trình bày ngắn gọn về các giai ñoạn pháttriển của hệ ñiều hành.
• Liệt kê các hệ ñiều hành nhiều dùng vànhiều tác vụ. Win XP là hệ ñiều hành mutiluser- mutil task như Linux ñúng không?
• Liệt kê các lệnh cơ bản trong hệ ñiều hànhLinux.
6/17/2009 20
Tóm lại
• Không hệ ñiều hành• Batch monitor
� Multiprogramming• Time sharing
� Graphical UI• Thư viện API của Hệ ðiều Hành (như Windows
API)• Network• PDA• Kiến trúc của hệ ñiều hành MS-DOS?• Bài tập nghiên cứu: tìm hiểu và so sánh tập lệnh
trong MS-DOS và LINUX.
16/17/2009 Operating System 1
Tiến trình
Trần Sơn HảiKhoa Toán – Tin học
ðại học Sư phạm TPHCM
Heavily reference to Operating System Slide of Hoang Than AnhTuan, University of Pedagogy, HCMC
26/17/2009 Operating System 2
Nội dung
• Khái niệm ña chương• Tiến trình• Luồng (tiểu trình)• Không gian ñịa chỉ
• Sự liên quan giữa tiến trình, tiểu trình vàkhông gian ñịa chỉ
• Lập lịch tiến trình
36/17/2009 Operating System 3
Tiến trình là gì?
• Ti�n trình = một thể hiện của việc thi hành mộtchương trình– Thường gọi là “HeavyWeight Process”
• Tiến trình là một sự trừu tượng hóa cung cấpbởi HðH, chỉ ra những gì là cần thiết ñể thi hànhmột chương trình– Một ngữ cảnh tính toán tách biệt cho mỗi ứng dụng
• Ngữ cảnh tính toán– Trạng thái CPU + không gian ñịa chỉ + môi trường
46/17/2009 Operating System 4
Tiến trình là gì? (tt)
• Tiến trình thường gồm có hai phần:– Một dãy các lệnh mà nó cần phải thi hành
• Code• Trạng thái CPU
– Các tài nguyên của riêng nó• Trạng thái bộ nhớ chính (không gian ñịa chỉ)• Trạng thái nhập xuất (file ñang thao tác)
56/17/2009 Operating System 5
Trạng thái CPU=Nội dung các thanhghi
• Word trạng thái tiến trình (PSW)– chế ñộ thi hành, kết quả lệnh cuối cùng, mức
ngắt
• Thanh ghi lệnh (IR)– Chỉ thị hiện tại ñang ñược thi hành
• Bộ ñếm chương trình (PC)• Con trỏ ngăn xếp (SP)• Các thanh ghi công dụng chung
66/17/2009 Operating System 6
Không gian ñịa chỉ
• Data– Dữ liệu ñịnh trước (thời ñiểm biên dịch)
• Code– ðoạn mã chương trình
• Heap– Dữ liệu ñược cấp phát ñộng
• Stack– Hỗ trợ lời gọi hàm
76/17/2009 Operating System 7
Môi trường
• Các thực thể bên ngoài– Thiết bị ñầu cuối– File ñang mở
– Kênh kết nối• Cục bộ
• Với các máy khác
86/17/2009 Operating System 8
Khối ñiều khiển tiến trình (PCB)
• Ngữ cảnh tính toán củamỗi tiến trình ñược lưutrong một kh�i ñi�ukhi n ti�n trình(Process Control Block: PCB)
ProcessControlBlock
96/17/2009 Operating System 9
Process control block (PCB)
state
memory
files
accounting
priority
user
CPU registersstorage
code
data
heap
stack
PSW
IR
PC
SP
generalpurposeregisters
PCB CPUkernel user
106/17/2009 Operating System 10
Process StatePriorityProcess numberProgram CounterStack Pointer<registers>I/O Status InformationMemory Information
BaseLimits
File InformationAccounting Information
PCB 12PCB 12PrioPrio: 200: 200 PCB 42PCB 42
PrioPrio 200200 PCB 3PCB 3PrioPrio 100100 PCB 41PCB 41
PrioPrio 33PCB 0PCB 0
<NULL><NULL>PrioPrio 00
headheadtailtail
116/17/2009 Operating System 11
Chuyển ñổi ngữ cảnh tiến trình
• CPU chuyển ñổitiến trình này sang tiến trình khác
• Chuy n ñ�i ng�c�nh (context switching) ����
overhead• Trạng thái của
tiến trình luôn thayñổi
126/17/2009 Operating System 12
Chuyển ñổi trạng thái của tiến trình
• Tr�ng thái c �a ti�n trình– new : Tiến trình vừa ñược tạo (chạy chương trình)– ready : Tiến trình sẵn sàng ñể chạy– running : Tiến trình ñang chạy (thi hành lệnh)– waiting : Tiến trình chờ ñợi một sự kiện– terminated : Tiến trình kết thúc thi hành lệnh
136/17/2009 Operating System 13
Trạng thái của tiến trình (khác)
running
ready blocked
created
schedule
preempt
event done
wait for event
terminated
146/17/2009 Operating System 14
Môi trường UNIXrunning
user
runningkernel
readyuser
readykernel blocked
zombie
sys. callinterrupt
schedule
created
return
terminated
wait for event
event done
schedule
preempt
interrupt
156/17/2009 Operating System 15
ðiều phối tiến trình
• Có nhiều hàng ñợi:– ready queue: hàng ñợi chứa các tiến trình sẵn sàng chạy
– I/O queue: hàng ñợi chứa các tiến trình sẵn sàng thi hành I/O• Lựa chọn tiến trình nào � ñi�u ph�i ti�n trình
166/17/2009 Operating System 16
Tiến trình = Chương trình ?
• Một chương trình có thể có nhiều tiến trình– Mở Notepad.exe xem file a.txt � 1 tiến trình.– Mở Notepad.exe xem file b.txt � 1 tiến trình.
• Chương trình nhìn từ góc ñộ mã lệnh chỉ làmột phần của tiến trình.
main () {
…;
}
A() {
…
}
main () {
…;
}
A() {
…
}
Heap
Stack
Amain
Program Process
176/17/2009 Operating System 17
Nhiều tiến trình hợp tác
• Có những công việc cần có nhiều tiến trình hợp tác vớinhau ñể hoàn thành.
• Thời gian ñể tạo tiến trình– Tạo khối PCB– Tạo không gian ñịa chỉ
• Thời gian chuyển ñổi các tiến trình• Cần có một cơ chế giao tiếp:
– Tách biệt không gian ñịa chỉ của các tiến trình với nhau– Ánh xạ vùng nhớ chia sẻ– Truyền thông ñiệp
• send() và receive()
Proc 1 Proc 2 Proc 3
186/17/2009 Operating System 18
Giao tiếp bằng Shared-Mem
Prog 1VirtualAddressSpace 1
Prog 2VirtualAddressSpace 2
Data 2
Stack 1
Heap 1
Code 1
Stack 2
Data 1
Heap 2
Code 2
Shared
• Giao tiếp thông qua thao tác ñọc/ghi trênvùng nhớ chung
Code
Data
Heap
Stack
Shared
Code
Data
Heap
Stack
Shared
196/17/2009 Operating System 19
Giao tiếp giữa các tiến trình(IPC)
• (Inter-Process Communication) Cơ chế cho phép cáctiến trình giao tiếp với nhau và ñồng bộ hóa hành ñộngcủa chúng
• Hệ thống thông ñiệp – các tiến trình giao tiếp với nhaukhông cần phải qua các biến dùng chung
• IPC cung cấp hai thao tác cơ bản:– send ( message)
– receive ( message)
• Nếu tiến trình P và Q muốn giao tiếp với nhau, chúngphải:– tạo một ñường giao tiếp giữa chúng– trao ñổi các thông ñiệp thông qua send/receive
206/17/2009 Operating System 20
Tiểu trình(Thread = LightWeight Process)
• Tiểu trình (luồng): một sự thi hành (hoạt ñộng) bên trong một tiến trình
• Một tiến trình ña luồng bao gồm nhiều họat ñộngcùng tồn tại và thi hành
• Tách biệt:– Trạng thái CPU, ngăn xếp
• Chia sẻ:– Mọi thứ khác
• Data, Code, Heap, môi trường
– ðặc biệt: Không gian ñịa chỉ (Tại sao?)
216/17/2009 Operating System 21
Tiểu trình (tt)
• MultiThreading = một chương trình ñượctạo ra bằng một số các họat ñộng ñồngthời.
• HeaveWeight Process = Tiến trình với duynhất một tiểu trình
226/17/2009 Operating System 22
ðơn tiểu trình và ña tiểu trình
236/17/2009 Operating System 23
Một số ví dụ về chương trình ñatiểu trình
• Database server:– Nhiều kết nối và cơ sở dữ liệu cùng một lúc
• Network Server:– Truy cập ñồng thời từ môi trường mạng– Một tiến trình – nhiều thao tác ñồng thời– File Server, Web server, ...
• Paralell Programming (có nhiều CPU)– Chia chương trình thành nhiều thread ñể tận dụng
nhiều CPU– Còn gọi là Multi - Processing
246/17/2009 Operating System 24
Hỗ trợ tiểu trình
• HðH– Ưu ñiểm: lập lịch tiểu trình ñược thực hiện
bởi OS• Tối ưu hóa CPU
– Khuyết ñiểm: nhiều tiểu trình � overhead
• Mức người dùng– Ưu ñiểm: overhead thấp– Khuyết ñiểm: OS không nhận ra cụ thể
• VD: một tiểu trình bị block do I/O sẽ block tất cảcác tiểu trình khác cùng một tiến trình
256/17/2009 Operating System 25
Chuyển ñổi trạng thái của Thread
• Tương tự như tiến trình:– new: Tiểu trình ñược tạo mới– ready: Tiểu trình ñang chờ ñể chạy– running: Tiểu trình ñang ñược thi hành– waiting: Tiểu trình ñang chờ sự kiện– terminated: Tiểu trình kết thúc thi hành
• Thông tin tiểu trình lưu trong TCB
266/17/2009 Operating System 26
Lập trình ña chương
• Lập trình ña chương: Có nhiều công việc (tiếntrình, tiểu trình) trong hệ thống– Tận dụng thời gian chồng nhau của CPU và I/O– Chia sẻ thời gian trên một CPU– Thi hành ñồng thời trên nhiều CPU– Kết hợp cả hai
• Ưu ñiểm?– Tính phản hồi nhanh, tối ưu hóa, thi hành ñồng thời
• Khuyết ñiểm?– Overhead, phức tạp
276/17/2009 Operating System 27
Lập lịch các tiến trình (STS)
• Tình huống:– Có nhiều tiến trình
nhưng tại một thờiñiểm chỉ có một tiếntrình có thể ñượcthực thi (trạng thái làrunning)
– Vấn ñề: chọn tiếntrình nào ñể thực thiở bước kế tiếp (từtrạng thái ready chuyển sang trạngthái running)
• L�p l �ch là thao tácquyết ñịnh tiến trìnhnào ñược quyềnthực thi.
286/17/2009 Operating System 28
Lập lịch (tt)
• Giả sử:– Một tiến trình chỉ có một tiểu trình (HeaveWeight
Process)• Lưu ý: Hệ ñiều hành lập lịch ở mức tiểu trình
– Các tiến trình là ñộc lập với nhau• Không có hợp tác, chia sẻ tài nguyên với nhau• Các tiến trình hợp tác � ñồng bộ hóa tiến trình (chương sau)
– Mô hình thực thi của các tiến trình là một chuỗi thờigian sử dụng CPU và I/O xen kẽ nhau
• Chỉ tập trung vào lập lịch cho thời gian CPU
296/17/2009 Operating System 29
Lập lịch (tt)
• Chương trình sẽ sửdụng CPU trong mộtkhoảng thời gian.
• Sau ñó thi hành thao tácI/O
• Tiếp tục sử dụng CPU,...
306/17/2009 Operating System 30
Tính chất khối việc!
? Có phụ thuộc khối lượng công việc không?Có:
– Nếu mọi công việc ñều sử dụng CPU hoặc I/O nhưnhau thì lập trình ña chương không cải tiến tính tối ưuhọat ñộng
• Một bộ công việc hỗn hợp sẽ ñược tạo bởi b�l�p l �ch dài h �n (long-time scheduling)– Công việc sẽ ñược phân ñịnh là sử dụng nhiều CPU
hoặc nhiều I/O tùy thuộc vào quá trình thi hành trướcñó của nó
• Quan tâm vào b� l�p l �ch ng �n h�n (Short-Time Scheduling)
316/17/2009 Operating System 31
Tiêu chuẩn ñánh giá việc lậplịch
• Tối thiểu hóa th�i gian ph �n hi (response time)
• Tối thiểu hóa th�i gian l u l�i trong h � th�ng(turnaround time)– Tturn around = Tkết thúc – Tbắt ñầu
• Tối ña hóa throughput– Throughput = số công việc xử lý trong một ñơn vị thời
gian• S� công b �ng (Fairness)
– Các tiến trình ñều ñược ñối xử công bằng. Không cótiến trình nào phải chờ quá lâu
• Tối ưu hóa CPU (Efficient)
326/17/2009 Operating System 32
Turn around timeJob 1arrives
Job 1terminates
Job1 Job2 Job3
Job 2terminates
Job 3terminates
Job 2arrives
Job 3arrives
Job1Job3
Job2
Job 1 terminates Job 3 terminates
Job 2 terminates
336/17/2009 Operating System 33
Thời gian chạy (Trun)
• Thời gian chạy = thời gian sử dụng CPU– Không tính thời gian chờ IO dù thật sự lúc ñó
chương trình vẫn “ñang chạy”
• Bởi vì theo STS: các tiến trình phụ thuộcnhiều vào I/O thường có thời gian khángắn– Trình soạn thảo!!!
346/17/2009 Operating System 34
Các ñộ ño thông dụng
ðưa vào hàng ñợiBắt ñầu chạy
Kết thúc (Tturn)
hoặc chờ IO (Tresp)
TwaitTrun
Tresp
Tresp= Twait + Trun
• Thời gian phản hồi (response time) <> Thời gian lưu lại hệthống (turnaround time)
• Tỉ số phản hồi slowdown=Tturn / Trun
356/17/2009 Operating System 35
Các ñộ ño khác
• Thời gian chờ ñợi: giá trị trung bình củaTwait
• Tỉ số phản hồi (slowdown)slowdown=Tresp / Trun
• Throughput: cực ñại hóa số tiến trình hoànthành trong một ñơn vị thời gian � phụthuộc vào chi tiết cụ thể của tiến trình � íthữu dụng.
366/17/2009 Operating System 36
Tối ưu hóa CPU
idle
idle
idle
idle
idle
idle
1st I/Ooperation
I/Oends
2nd I/Ooperation
I/Oends
3rd I/Ooperation
CPU
Disk
CPU
Disk idle idle
idle
idleJob1 Job1
Job1 Job1Job2
Job2
Job2
376/17/2009 Operating System 37
Chi phí cho lập trình ña chương
• Overhead cho sự chuyển ñổi– Lưu và phục hồi ngữ cảnh sẽ làm lãnh phí
CPU
• Giảm hiệu năng– Tạm bằng lòng với tài nguyên (ít hơn mong
muốn)– Cache � không hiệu quả
• Phức tạp– Sự ñồng bộ hóa, ñiều khiển song song, tránh
deadlock, cơ chế bảo vệ
386/17/2009 Operating System 38
Lập lịch ngắn hạn (STS)
running
ready blocked
created
schedule
preempt
event done
wait for event
terminated
396/17/2009 Operating System 39
Lập lịch ngắn hạn (STS) (tt)
• Mẫu thi hành tiến trình bao gồm sựchuyển ñổi liên tiếp giữa sử dụng CPU vàchờ ñợi IO
• CPU – I/O – CPU – I/O...
• Các tiến trình sẵn sàng ñể thi hành ñượclưu trong một hàng ñợi sẵn sàng (chạy) (ready (run) queue)
• STS lập lịch cho các tiến trình từ hành ñợisẵn sàng một khi CPU chuyển sang trạngthái rảnh.
4040
Lập lịch Off-line vs. On-line
• Thuật toán Off-line– Lấy tất cả thông tin về tất cả các công việc
cần phải lập lịch (biết trước tương lai)– Cho ra trình tự ñã ñược lập lịch– Không cần cơ chế cưỡng ép
• Thuật toán On-line– Công việc xuất hiện vào những thời ñiểm
không thể ñoán trước (không biết trướctương lai).
– Rất ít thông tin– Cần cơ chế cưỡng ép
416/17/2009 Operating System 41
First-Come, First-Served (FCFS)
• Lập lịch các công việc theo thứ tự xuất hiện củachúng.– Off-line FCFS lập lịch theo thứ tự xuất hiện trong dữ
liệu ñầu vào của nó• Thi hành lần lượt mỗi công việc cho ñến khi
hoàn thành– Nguyên thủy: hoàn thành kể cả tính I/O– Hiện ñại: dừng lại khi bị block (gặp I/O)
• Có cả on-line lẫn off-line• ðơn giản, dùng làm cơ sở ñể phân tích các pp
khác• Thời gian phản hồi kém
4242
First-Come, First-Served
• Ví dụ: Process Burst TimeP1 24P2 3P3 3
– VD: 3 tiến trình vào hàng ñợi theo thứ tự: P1 , P2 , P3 Sơ ñồ Gantt:
– Thời gian chờ P1 = 0; P2 = 24; P3 = 27– Thời gian chờ trung bình: (0 + 24 + 27)/3 = 17– Thời gian hoàn thành trung bình: (24 + 27 + 30)/3 = 27
• ðiểm yếu: Các tiến trình có thời gian CPU ngắnvào sau tiến trình có thời gian CPU dài.
P1 P2 P3
24 27 300
436/17/2009 Operating System 43
• ðiểm yếu:– Giả sử vào hàng ñợi theo thứ tự: P2 , P3 , P1
Sơ ñồ Gantt:
– Thời gian chờ P1 = 6; P2 = 0; P3 = 3– Thời gian chờ trung bình: (6 + 0 + 3)/3 = 3– Thời gian hoàn thành trung bình: (3 + 6 + 30)/3 = 13
• Trường hợp 2:– Thời gian chờ trung bình tốt hơn (3 < 17)– Thời gian hoàn thành trung bình tốt hơn (13 < 27)
P1P3P2
63 300
First-Come, First-Served
446/17/2009 Operating System 44
• Mô hình FCFS: Không tốt cho những tiến trình thời gianngắn!– Phụ thuộc hoàn toàn vào thứ tự
• Mô hình Round Robin– Mỗi tiến trình sẽ nhận ñược một khoảng thời gian sử dụng CPU khá
nhỏ(time quantum), thường là 10-100 milli giây
– Sau khi khoảng thời gian này kết thúc, tiến trình sẽ bị cưỡng chếchuyển vào hàng ñợi sẵn sàng (không cho dùng CPU nữa).
– Giả sử có n tiến trình trong hàng ñợi và time quantum là q ⇒• Mỗi lần chạy tiến trình sẽ có tối ña q ñơn vị thời gian• Không có tiến trình nào phải ñợi quá (n-1)q ñơn vị thời gian
• ðánh giá hiệu năng– q lớn ⇒ FCFS– q nhỏ ⇒ thời gian overhead lớn � không hiệu quả
Round Robin (RR)
4545
• Ví dụ: Process Burst TimeP1 53P2 8P3 68P4 24
– Sơ ñồ Gantt:
– Thời gian chờ P1=(68-20)+(112-88)=72P2=(20-0)=20P3=(28-0)+(88-48)+(125-108)=85P4=(48-0)+(108-68)=88
– Thời gian chờ trung bình = (72+20+85+88)/4=66¼– Thời gian hoàn thành trung bình = (125+28+153+112)/4 = 104½
• ðánh giá:– Tốt cho các tiến trình có thời gian CPU ngắn– Thêm thời gian chuyển ñổi ngữ cảnh cho các tiến trình có thời gian
CPU dài
Round Robin (q=20)
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 28 48 68 88 108 112 125 145 153
466/17/2009 Operating System 46
• Ví dụ: Process Burst TimeP1 53P2 8P3 68P4 24
– Sơ ñồ Gantt?– Thời gian chờ P1?
P2 ?P3?P4?
– Thời gian chờ trung bình ?– Thời gian hoàn thành trung bình ?
• Khi dùng Round Robin với q =40, First Come- First Service và FCFS trong trườnghợp xấu nhất với 4 process trên.
Câu Hỏi
476/17/2009 Operating System 47
So sánh FCFS và Round Robin
• Giả sử thời gian chuyển ñổi ngữ cảnh không ñáng kể, RR hay FCFS tốt hơn?
• Xét ví dụ: 10 tiến trình, mỗi tiến trình sử dụng 100s CPUq = 1sTất cả tiến trình vào hàng ñợi cùng 1 thời ñiểm
• Thời gian hoàn thành:
– Cả RR và FCFS ñều hoàn thành 10 tiến trình tại cùng 1 thời ñiểm– Thời gian phản hồi của RR rất tệ!
• Không nên dùng trong trường hợp các tiến trình có thời gian sử dụngCPU gần nhau
P # FIFO RR
1 100 991
2 200 992
… … …
9 900 999
10 1000 1000
486/17/2009 Operating System 48
Quantum
Completion
Time
WaitTime
AverageP4P3P2P1
Round Robin với q khác nhauP2[8]
P4[24]
P1[53]
P3[68]
0 8 32 85 153
Best FCFS:
6257852284Q = 1
104½11215328125Q = 20
100½8115330137Q = 1
66¼88852072Q = 20
31¼885032Best FCFS
121¾14568153121Worst FCFS
69½32153885Best FCFS83½121014568Worst FCFS
95½8015316133Q = 8
57¼5685880Q = 8
99½9215318135Q = 10
99½8215328135Q = 5
61¼68851082Q = 10
61¼58852082Q = 5
496/17/2009 Operating System 49
Sự cưỡng chế (Pre-emptive)
• S� c�ng ch � là hành ñộng dừng mộtcông việc ñang chạy ñể lập lịch cho côngviệc khác
• � chuyển ñổi ngữ cảnh– Ví dụ: Tiến trình P1 ñang chạy (sử dụng
CPU)� dừng tiến trình P1 lại (chuyển ra hàngñợi ready) và giao CPU cho tiến trình P2 nàoñó.
– Lưu ý: Tiến trình P1 không bị dừng bởi thaotác I/O hoặc các sự kiện khác
506/17/2009 Operating System 50
Sử dụng sự cưỡng chế
• Thuật toán SST on-line– Tương thích với sự thay ñổi ñiều kiện
• Vd: có công việc mới
– Bổ sung cho việc thiếu thông tin• Vd: thời gian chạy
• Sự cưỡng chế theo chu kỳ giúp hệ thốngnằm trong tầm kiểm soát
• Cải thiện tính công bằng
516/17/2009 Operating System 51
Các thuật tóan cải tiến FCFS• Xét trường hợp tốt nhất của FCFS: tiến trình thời gian ngắn vào trước,
tiến trình thời gian dài vào sau• Shortest Job First (SJF) :
– Chọn tiến trình có thời gian chạy là ít nhất (không phụ thuộc thứ tự vào)– Còn gọi là “Shortest Time to
Completion First” (STCF)• Shortest Remaining Time First (SRTF) :
– Là một phiên bản SJF có cưỡng chế (Preemptive version of SJF): nếu cótiến trình mới vào và thời gian sử dụng CPU ít hơn thời gian còn lại của tiếntrình ñang chiếm CPU thì dừng tiến trình ñang chạy và chuyển quyền chotiến trình mới vào.
– Còn gọi là “Shortest Remaining Time to Completion First” (SRTCF)• Ý tưởng chính
– Cho phép công việc có thời gian thi hành CPU ngắn ra ngoài CPU càngnhanh càng tốt
– Kết quả là thời gian phản hồi trung bình sẽ tốt hơn
526/17/2009 Operating System 52
Shortest Job First (SJF)• Công việc có thời gian ít nhất sẽ ñược thi hành trước• ðộ ño thời gian phàn hồi là tốt nhất
Short Long job
Long job Short
• Chỉ có off-line– Tất cả các công việc và thời gian thi hành phải
ñược biết trước
536/17/2009 Operating System 53
Shortest Remaining Time first (SRT)
• Biết: thời gian thi hành công việc• Không biết: thời ñiểm công việc bắt ñầu (ñược
nạp vào hàng ñợi)• Khi có một công việc mới:
Nếu thời gian thi hành của nó nhỏ hơn thời gian thihành còn lại của công việc ñang ñược thi hành hiệntại thì:cưỡng chế dừng công việc ñang thi hành hiện tại vàlập lịch cho công việc vừa ñược tạo ra
Ngược lại, tiếp tục công việc hiện tại và chèn côngviệc mới vào hàng ñợi theo thứ tự thời gian còn lạiphải thi hành
• Khi công việc hiện tại kết thúc, chọn công việcnằm ở ñầu hàng ñợi ñể thi hành
546/17/2009 Operating System 54
So sánh SJF, SRTF, FCFS, RR
• SJF vs SRTF– Tốt nhất ñể tối thiểu hóa thời gian phản hồi
trung bình. (SJF: non-preemptive, SRTF: preemptive)
– SRTF ít nhất là tương ñương với SJF
• SRTF vs FCFS và RR– Nếu thời gian sử dụng của các tiến trình là
như nhau � SRTF = FCFS– Nếu thời gian sử dụng của các tiến trình là
biến ñộng lớn � SRTF, RR giúp cho các tiếntrình có thời gian ngắn không chờ quá lâu.
556/17/2009 Operating System 55
So sánh SJF, SRTF, FCFS, RR (tt)
• SRTF có thể làm phát sinh trường hợp“ñói CPU” (starvation) cho các tiến trìnhcó thời gian sử dụng CPU tương ñối lâu– Ví dụ: Trường hợp các tiến trình có thời gian
sử dụng ngắn liên tục ñược ñưa vào. � tiếntrình có thời gian sử dụng dài sẽ không ñượcphép sử dụng CPU � tình tr �ng ñói CPU (starvation).
• Cả 4 phương pháp ñều yêu cầu phải biếtthời gian mà một tiến trình sẽ dùng CPU.– Làm sao biết?
566/17/2009 Operating System 56
So sánh SJF, SRTF, FCFS, RR (tt)
• Dùng SRTF ñể làm cơ sở ñánh giá các phươngpháp khác (vì là phương pháp tối ưu) về thờigian phản hồi trung bình.
• Ưu ñiểm– Thời gian phản hồi trung bình của SRTF là tốt nhất.
• Khuyết ñiểm– Phải dự ñoán thời gian sử dụng CPU của tiến trình– Không công bằng
576/17/2009 Operating System 57
Dự ñoán thời gian sử dụngCPU
• Yêu cầu người dùng nhập vào– Khó khả thi: người dùng không biết– Người dùng có thể ñưa vào thời gian thi hành ngắn
ñể mong kết thúc công việc sớm• Adaptive (thích �ng) : Dự ñoán tương lai bằng
cách quan sát quá khứ.– Nếu trong quá khứ tiến trình (chương trình) thường
dùng CPU nhiều (CPU-bound) thì có thể trong tươnglai nó sẽ sử dụng nhiều.
– Nếu trong quá khứ tiến trình (chương trình) thườngthao tác I/O (I/O bound) thì có thể trong tương lai nósẽ sử dụng CPU ít.
586/17/2009 Operating System 58
Dự ñoán thời gian sử dụng CPU (tt)
• Gọi ti là thời gian sử dụng CPU tại lần thứi.
• Ý tưởng thời gian sử dụng CPU tại lần thứn là:– Tn = f(tn-1, tn-2, ...)
– Tn = αtn-1 + (1-α)Tn-1 (α∈[0,1])
596/17/2009 Operating System 59
Hàng ñợi phản hồi ña mức(Multilevel feedback queues)
quantum=10
quantum=20
quantum=40
FCFS
new jobsterminated
606/17/2009 Operating System 60
Multilevel feedback queues
• ðộ ưu tiên ñược ngầm ñịnh trong mô hình này• Rất linh hoạt• Tình trạng ñói CPU có thể cóNhiều công việc ngắn vào => công việc dài sẽ bị
“ñói”
• Giải pháp:– ðể nguyên– Lão hóa (aging)
616/17/2009 Operating System 61
FCFS Hiện ðại• Một tiến trình sẽ chấm dứt hoạt ñộng và
chuyển sang trạng thái mới khi hết thời gianhoặc ñến thời ñiểm truy xuất.
• Ví dụ cho 2 tiến trình A(10,2,2) (thời gian hoạtñộng là 10, thời ñiểm bắt ñầu IO là 2 sau khibắt ñầu tiến trình; trong ñó thời gian IO là 2) và B(8,2,2). Hỏi A B ở trạng thái nào theoFCFS lúc 9,32?
• A running và B ready1 2 3 4 5 6 7 8 9 10
AR AR AIO
BR
AIO
BR
AR
BIO
AR
BIO
AR AR AR AR
626/17/2009 Operating System 62
Round Robin Hiện ðại• Tại thời ñiểm m có 2 tiến trình: A running
xong q và B IO xong thì thứ tự ñưa vào hàngñợi là B trước A sau.
• Tại thời ñiểm m A running xong q và A ñếnthời ñiểm bắt ñầu IO thì thời ñiểm IO sẽ ñưavào chu kỳ sau.
• Ví dụ cho 2 tiến trình A(10,2,2) (thời gian 10 hoạt ñộng, thời ñiểm bắt ñầu IO là 2 sau khibắt ñầu tiến trình; trong ñó thời gian IO là 2 vàbắt ñầu IO) và B(9,3,2). Hỏi A B ở trạng tháinào theo RR với q=2 lúc 9,82?
63
AR
BRBR
AR
BIO
AR
BIO
AIO
BR
AIO
BRBR
ARAR
10987654321
A running xong q và B IO xong thì thứ tự ñưa vào hàng ñợi là B trước A sau. A running xong q và A ñến thời ñiểm bắt ñầu IO thì thời ñiểm IO sẽ ñưavào chu kỳ sau.Ví dụ A(10,2,2) và B(9,3,2). Trạng thái nào theo RR với q=2 lúc 9,82? B running và A ready
646/17/2009 Operating System 64
Tóm tắt
• Tiến trình = một thể hiện của việc thi hànhmột chương trình.
• ða chương = nhiều tiến trình có thể cùngñược thi hành. Tại mỗi thời ñiểm chỉ cómột tiến trình ở trạng thái ñược thi hành.
• Lập lịch = quyết ñịnh tiến trình nào sẽñược chuyển trạng thái từ sẵn sàng sang chạy.
656/17/2009 Operating System 65
Tóm tắt (tt)• FCFS: Vào trước sẽ ñược cấp phát CPU
trước– Ưu: ñơn giản– Khuyết: tiến trình ngắn sẽ chờ tiến trình dài.
• Round Robin: Cấp mỗi tiến trình mộtkhoảng thời gian ñịnh trước (quantumn) khi nó nhận ñược CPU.– Ưu: Các tiến trình ngắn sẽ kết thúc nhanh
chóng– Khuyết: tiến trình có thời gian sử dụng CPU
gần nhau � không hiệu quả.
666/17/2009 Operating System 66
Tóm tắt
• SJF/SRTF: Cấp phát cho tiến trình có thờigian thi hành/thời gian còn lại là ít nhất.– Ưu: thời gian phản hồi trung bình là tốt nhất.– Khuyết: khó dự ñoán thời gian sử dụng CPU,
không công bằng.
• Multi-level feedback: sử dụng nhiều hàngñợi với ñộ ưu tiên khác nhau. Tự ñộngchuyển ñổi mức ñộ ưu tiên của các tiếntrình.
676/17/2009 Operating System 67
Câu Hỏi
• 1/ Cho A (10,0,4) B(8,2,1) và C(9,1,2). Hỏi khiT=11,32 thì A B C ở trạng thái nào theo FCFS.
• 2/ Cho A (10,1,2) B(10,3,2) và C(10,0,2). Hỏi khiT=9,82 thì A B C ở trạng thái nào theo RR vớiq=2.
• 3/ Bài tập về nhà:viết chương trình input vào sốtiến trình, thông tin của từng tiến trình. Output ratrạng thái của các tiến trình tại thời ñiểm bất kỳvẽ sơ ñồ.
1
Giao tiếp giữa các tiến trình
1-23,..3886
2
Nội dung
• Tổng quan về giao tiếp tiến trình (tiểu trình)
• Vấn ñề Producer/Consumer (sản xuất / tiêu thụ)• Miền găng
• ðồng bộ bằng giải pháp phần cứng• Semaphores
• Monitors• Truyền thông ñiệp
• Các bài toán cổ ñiển về ñồng bộ hóa
3
Tổng quan về giao tiếp tiến trình• Tiến trình ñộc lập không ảnh hưởng và không bị
ảnh hưởng bởi việc thực thi của các tiến trình khác.
• Tiến trình hợp tác (không ñộc lập) có thể ảnh hưởng và bị ảnh hưởng bởi việc thực thi của các tiến trình khác.
• Ưu ñiểm của việc hợp tác tiến trình:– Chia sẻ thông tin
– Tăng tốc tính toán (xử lý song song): thời gian I/O vàthời gian CPU
– Tính module hóa– Tiện lợi
4
Hợp tác bằng việc chia sẻ
• Các tiến trình sử dụng và cập nhập dữ liệu chia sẻ như các biến, file và cơ sở dữ liệu dùng chung.
• Thao tác ghi phải ñộc lập từng ñôi một ñể ngăn ngừa tình trạng ñụng ñộ, có thể dẫn ñến tính không toàn vẹn dữ liệu.
• Các miền găng dùng ñể cung cấp sự toàn vẹn dữ liệu.
• Một tiến trình ñòi hỏi miền găng phải không bị chờ mãi mãi: deadlock hoặc starvation.
5
Hợp tác bằng việc giao tiếp
• Giao tiếp cung cấp phương cách ñể ñồng bộ hóa nhiều hoạt ñộng.
• Có khả năng deadlock – Mỗi tiến trình ñều chờ thông ñiệp từ một tiến
trình khác.
• Có khả năng xảy ra tình trạng ñói (starvation)– Hai tiến trình gởi thông ñiệp cho nhau trong
khi một tiến trình khác chờ thông ñiệp.
6
Ví dụ 1: hợp tác tiểu trình
• Các tiểu trình ñộc lập:Thread A Thread B
x = 1; y = 2;
• Các tiểu trình có hợp tác với nhau (y=0):Thread A Thread B
x = 1; y = 2;x = y+1; y = y*2;
– x=?
• Một cách ñơn giản: x = bao nhiêu trong ví dụ sauThread A Thread B
x = 1; x = 2;
7
Khái niệm cơ bản trong ñồng bộhóa
• Thao tác nguyên t � (Atomic Operation) : là thao tác một khi chạy là luôn luôn hoàn thành, không bị cắt ngang nửa chừng.– Là khái niệm cơ bản ñể tạo nên nguyên lý lập
trình ña chương
– Ví dụ: phép load, store là thao tác nguyên tố– Ví dụ: phép nhân 3*4.5 ???
• Lưu ý: Trong các bài toán ñồng bộ hóa, cần chú ý rằng một tiểu trình (tiến trình) cóthể bị ngắt tại bất cứ thời ñiểm nào.
8
Ví dụ 2: ñồng bộ hóa tiến trình• Giả sử có 2 tiểu trình:
Thread A Thread Br1=0 load r1, M[i]
r1=0 load r1, M[i]r1=1 add r1, r1, 1
r1=-1 sub r1, r1, 1M[i]=1 store r1, M[i]
M[i]=-1store r1, M[i]
• Vấn ñề:
9
Vấn ñề của ñồng bộ hóa
• Tiến trình (tiểu trình) có thể bị lấy lại CPU bất cứ lúc nào (bị cưỡng chế hoặc không bị cưỡng chế).
• Dữ liệu (biến) có thể ñược chia sẻ bởi nhiều tiến trình (tiểu trình)– Không bảo ñảm sự toàn vẹn dữ liệu
– Giá trị của các biến dùng chung không thể ñịnh trước, phụ thuộc vào quá trình thực thi của các tiến trình.
10
Ví dụ 3: Mua sữa
VợChồngThời ñiểm
Nhìn vào tủ lạnh. Thấy hết sữa cho con
3:00
ði ra cửa hàng3:05
Nhìn vào tủ lạnh. Thấy hết sữa cho con
ðến cửa hàng3:10
ði ra cửa hàngMua sữa cho con3:15
ðến cửa hàngMang sữa về bỏ trong tủ
3:20
Mua sữa cho con3:25
Mang sữa về bỏ trong tủ3:30
11
Một vài khái niệm
• ð�ng ñ� (Race condition) : tình huống mà nhiều tiến trình (tiểu trình) cùng truy cập và thao tác dữ liệu chia sẻ một cách ñồng thời. Giá trị dữ liệu cuối cùng phụ thuộc vào sự luân phiên thi hành của các tiến trình.
• Giải quyết ñụng ñộ � ñng b� hóa
12
Một vài khái niệm
• ðng b� hóa (synchronization) : là công việcsử dụng các thao tác nguyên tố ñể bảo ñảm sựhợp tác giữa các tiến trình ñạt ñược kết quảmong muốn.
• Lo�i tr� h� t�ng (ñ�c quy �n truy xu �t) (mutual exclusion) : bảo ñảm rằng chỉ có mộttiểu trình (tiến trình) ñược quyền thao tác tại mộtvùng nhớ tại một thời ñiểm.– Loại trừ các tiến trình khác làm việc như mình
• Mi�n găng (critical section) : ñoạn mã chỉ chophép một tiểu trình (tiến trình) thi hành tại mộtthời ñiểm.– Tiểu trình (tiến trình) ñược gọi là ñi vào miền găng.– Loại trừ hỗ tương và miền găng là hai khái niệm cùng
một mục ñích.
13
Giải pháp 1 cho việc mua sữa
• ðưa ra một qui ñịnh (dùng miếng giấy thôngbáo):– Trước khi ñi mua sữa dán miếng giấy thông báo– Mua sữa về gỡ bỏ miếng giấy thông báo– Nếu thấy miếng giấy thì không cần phải ñi mua
(chờ)• ðưa cho máy tính thực hiện
if (noMilk) {if (noNote) {leave Note;buy Milk;remove Note;}
}
14
Giải pháp 1 cho việc mua sữa
if (noMilk) {
if (noNote) {
leave Note;
buy Milk;
remove Note;
}
}
� vẫn có khả năngsai
if (noMilk) {
if (noNote) {
leave Note;
buy Milk;
remove Note;
}
}
15
Giải pháp 2 cho việc mua sữa
• Giải pháp 1 có vẻ “dán giấy thông báo”quá trễ
Thread A Thread Bleave note A; leave note B;if (noNote B) { if (noNoteA) {
if (noMilk) { if (noMilk) {buy Milk; buy Milk;
} }} }remove note A; remove note B;
� có khả năng cả hai người không ai ñimua sữa
16
Giải pháp 3 cho việc mua sữa
Thread A Thread Bleave note A; leave note B;while (note B) { if (noNote A) {
do nothing; if (noMilk) {} buy milk;if (noMilk) { }
buy milk; }} remove note B;remove note A;
• A: nếu thấy B ñã dán giấy thì chờ (vòng while), ngượclại mua sữa.
• B: nếu thấy A ñã dán giấy thì gỡ bỏ giấy báo của mình, nhường cho A mua. Ngược lại thì ñi mua.
17
Phân tích giải pháp 3
if (noMilk) {
buy milk;
}
ñược gọi là miền găng. Mục ñích của cả 3 giải pháp là bảovệ miền găng này. Tại một thời ñiểm bất kỳ chỉ có thể cónhiều nhất là một tiến trình, tiểu trình vào miền găng.
Phân tích• Rất phức tạp dù ví dụ rất ñơn giản• ðoạn mã của A và B khác nhau dù hai người cùng làm
một việc. Nếu có rất nhiều tiểu trình thì sao???• Trong khi A chờ ñợi, nó vẫn sử dụng CPU � busy-
waiting
18
Miền găng (critical section)
•Lập trìnhña chương cho phép song song theo lý thuyết ñể sửdụng các thiết bị hiệu quả hơn. Nhưng chúng tañã trả giá bởi tínhñúngñắn không còn.
• Do ñó chấp nhận gỡ bỏ tính song song� tínhñúngñắn
19
Vấn ñề miền găng
• n tiến trình ñấu tranh với nhau ñể sửdụng một số dữ liệu nào ñó.
• Mỗi tiến trình có một ñoạn mã, gọi làmiền găng (critical section (CS)), tạiñó dữ liệu chia sẻ ñược truy cập.
• Vấn ñề: bảo ñảm rằng khi một tiếntrình ñang thực thi trong miền găngcủa nó, không có tiến trình nào khácñược quyền thực thi trong miền găngcủa nó.
20
Ngữ cảnh miền găng (1)
• Khi một tiến trình thi hành ñoạn mã thaotác trên dữ liệu chia sẻ (hay tài nguyên), chúng ta nói rằng tiến trình ñó ñang trongmiền găng của nó.
• Việc thực thi các miền găng phải có tínhduy nhất: tại bất kỳ thời ñiểm nào, chỉ códuy nhất một tiến trình ñược quyền thựcthi trong miền găng của nó (ngay cả vớinhiều bộ xử lý).
• Vì vậy mỗi tiến trình phải yêu cầu quyềntrước khi vào miền găng.
21
Ngữ cảnh miền găng (2)
• ðoạn mã thể hiện yêu cầu này ñược gọi làEntrySection (ES).
• Miền găng (CS) có thể theo sau là Leave/Exit Section (LS).
• Phần ñoạn mã còn lại là Remainder Section (RS).
• Vấn ñề của miền găng là thiết kế một giao thứcmà các tiến trình có thể sử dụng ñể hành ñộngcủa chúng sẽ không phụ thuộc vào thứ tự mà sựthi hành của chúng ñược chen vào.
22
Ngữ cảnh miền găng (3)
• Giải pháp = cầnphải chỉ ra các lệnhñược thực thi củaentry section vàexit section
• Không có bất cứsự giả sử nào vềtốc ñộ CPU và thứtự thi hành của cáctiến trình
repeatentry section
critical sectionexit section
remainder sectionforever
23
Giải pháp cho vấn ñề miềngăng
• Có 3 yêu cầu mà một giải pháp ñúng cần phảithỏa mãn:
1. Mutual Exclusion : không có 2 tiến trình cùng ởtrong miền găng một lúc
2. Progress : Một tiến trình bên ngoài miền găngkhông ñược ngăn cản các tiến trình khác vàomiền găng
3. Bounded Waiting : không có tiến trình nào phảichờ vô hạn ñể vào miền găng
• Chỉ cần một trong ba ñiều kiện trên sai thì giảipháp ñưa ra là sai.
24
Phân loại các giải pháp cho CS
• Giải pháp phần mềm– Các thuật toán mà tính ñúng ñắn của nó
không dựa trên bất kỳ một giả thuyết nàokhác.
• Giải pháp phần cứng– Dựa trên các mã lệnh máy ñặc biệt.
• Giải pháp HðH– Cung cấp các hàm và cấu trúc dữ liệu cho lập
trình viên thông qua lời gọi hệ thống.
• Giải pháp ngôn ngữ lập trình –– Là một phần của ngôn ngữ.
25
Giải pháp phần mềm
• Xét trường hợp có 2 tiến trình:– Thuật toán 1, 2, 3 � sai.
– Thuật toán 4 � ñúng (Peterson’s algorithm).
• Tổng quát hóa cho trường hợp n tiến trình:– Thuật toán Bakery.
• Qui ước:– 2 tiến trình: P0 và P1
– Hoặc Pi, Pj
– Hoặc Larry và Jim
26
Cấu trúc của các tiến trình
• Cấu trúc tổng quát của tiến trình Pi (Pj)do {
entry sectioncritical section
leave sectionremainder section
} while (1) ;• Lưu ý: Các tiến trình có thể chia sẻ các
biến dùng chung ñể ñồng bộ hóa hoạt ñộngcủa chúng.
27
Thuật toán 1
• Ý tưởng: sử dụng một biến luân phiên.– Biến luân phiên mang giá trị nào thì tiến trình
tương ứng ñược phép vào miền găng.– Sau khi ra khỏi miền găng thì ñặt giá trị biến
luân phiên cho phép tiến trình còn lại vàomiền găng.
28
Thuật toán 1- Larry/Jim version
• Biến dùng chung: – string turn ; khởi tạo turn = “Larry” ho ặc “Jim”– turn = “Larry” ⇒ Larry có thể vào trong miền găng
• Tiến trình Larrydo {
while (turn != “Larry”) ;critical section
turn =“Jim” ;remainder section
} while (1) ;• Tiến trình Jim tương tự nhưng hoán ñổi Larry và
Jim.
29
Thuật toán 1- Pi/Pj version
• Biến dùng chung: – int turn ; khởi tạo turn = 0– turn = i ⇒ Pi có thể vào miền găng
• Tiến trình Pido {
while (turn != i) ;critical section
turn = j ;remainder section
} while (1) ;• Thỏa “mutual exclusion” và “bounded waiting”,
nhưng không thỏa “progress” (???).
30
Thuật toán 1: không thỏa tínhprogress
• Giả sử Pi vào miền găng ñược (turn = i).• Pi ra khỏi miền găng � nhường quyền
vào miền găng cho Pj � turn = j• Xét trường hợp Pj không thích vào miền
găng (do bận xử lý một việc gì ñó) và Pimuốn vào miền găng trở lại. Nhưng turn = j � Pi không vào miền găng ñược.
• � Pj ở ngòai miền găng nhưng ñã ngăncản không cho Pi vào miền găng
31
Thuật toán 2
• Ý tưởng: dùng hai biến cho hai tiến trình– Một tiến trình A trước khi vào miền găng cần
bảo ñảm tiến trình B còn lại không muốn vàomiền găng.
– Nếu tiến trình B không muốn vào miền găng, thì tiến trình A ñặt cờ báo hiệu nó muốn vàomiền găng. Ngược lại phải chờ.
– Khi ra khỏi miền găng, tiến trình A ñặt giá trịbiến báo hiệu cho biến là nó không muốn vàomiền găng nữa
32
Thuật toán 2 - Larry/Jim version
• Biến dùng chung– boolean flag-larry, flag-jim ;
khởi tạo flag-larry = flag-jim = false– flag-larry= true ⇒ Larry sẵn sàng ñể vào miền găng
• Tiến trình Larrydo {
while (flag-jim);flag-larry = true;
critical sectionflag-larry = false;
remainder section} while (1);
33
Thuật toán 2 - Pi/Pj version
• Biến dùng chung– boolean flag[2] ; khởi tạo flag [0] = flag [1] = false– flag [i] = true ⇒ Pi sẵn sàng vào miền găng
• Tiến trình Pido {
while (flag[j]);flag[i] = true;
critical sectionflag [i] = false;
remainder section} while (1);
• Thỏa mãn tính “progress”, nhưng không thỏamãn “mutual exclusion” và “bounded waiting”(???).
34
Thuật toán 2: không thỏa mãnmutual exclusion
Ti�n trình 1:
do {
while (flag-jim);
flag-larry = true;critical section
flag-larry = false;
remainder section} while (1);
Ti�n trình 2:
do {
while (flag-larry);
flag-jim = true;critical section
flag-jim = false;
remainder section} while (1);
35
Thuật toán 3
• Ý tưởng: dùng hai biến như thuật toán 2 nhưng thể hiện mong muốn vào miềngăng trước khi quan tâm ñến mong muốncủa tiến trình khác.– Nhằm loại bỏ sự vi phạm mutual exclusion
36
Thuật toán 3 - Larry/Jim version
• Biến dùng chung– boolean flag-larry, flag-jim ;
khởi tạo flag-larry = flag-jim = false– flag-larry= true ⇒ Larry sẵn sàng vào miền găng
• Tiến trình Larrydo {flag-larry = true;while (flag-jim); critical section
flag-larry = false;remainder section
} while (1);
37
Thuật toán 3 - Pi/Pj version
• Biến dùng chung– boolean flag[2] ; khởi tạo flag [0] = flag [1] = false– flag [i] = true ⇒ Pi muốn vào miền găng
• Tiến trình Pido {
flag[i] = true;while (flag[j]);
critical sectionflag [i] = false;
remainder section} while (1);
• Thỏa mãn “mutual exclusion”, nhưng không thỏamãn “progress” và “bounded waiting”(???).
38
Thuật toán 4
• Ý tưởng: kết hợp ý tưởng của thuật toán1, 2 và 3. Dùng một biến luân phiên và haibiến ñại diện cho hai tiến trình.– Thể hiện mong muốn vào miền găng của
mình trước (ñặt giá trị tương ứng với tiếntrình)
– Nhường quyền vào miền găng cho tiến trìnhcòn lại (ñặt giá trị biến luân phiên)
– Một tiến trình chỉ ñược vào miền găng khi cómong muốn vào miền găng và ñến lượt mìnhñược vào miền găng.
39
Thuật toán 4 - Larry/Jim version
• Kết hợp biến dùng chung của thuật toán 1 và 2/3.• Tiến trình Larry
do {flag-larry = true;turn = “Jim”;while (flag-jim and turn = “Jim”);
critical sectionflag-larry = false;
remainder section} while (1);
40
Thuật toán 4 - Pi/Pj version
• Kết hợp biến dùng chung của thuật toán 1 và 2/3.• Tiến trình Pi
do {flag [i]:= true;turn = j;while (flag [j] and turn = j);
critical sectionflag [i] = false;
remainder section} while (1);
• Thỏa mãn cả ba ñiều kiện � giải quyết vấn ñềmiền găng cho 2 tiến trình.
41
Thuật toán 5 - Larry/Jim version
• Như thuật toán 4, nhưng hoán ñổi 2 câu lệnh ñầutiên cho nhau.
• Tiến trình Larrydo {
turn = “Jim”;flag-larry = true;while (flag-jim and turn = “Jim”);
critical sectionflag-larry = false;
remainder section}while (1);
42
Thuật toán Bakery
• Miền găng với n tiến trình tranh chấp:• Trước khi vào miền găng, tiến trình nhận một
con số. Tiến trình có con số nhỏ nhất ñược vàomiền găng.
• Nếu hai tiến trình Pi và Pj nhận cùng một số thìnếu i < j, thì Pi ñược vào trước, ngược lại Pjñược vào trước.
• Bộ tạo số luôn tạo ra các con số theo thứ tựtăng: 1,2,3,3,3,3,4,5...
43
Thuật toán Bakery
• Chọn một số:– max (a0,…, an-1)
• Thứ tự từ vựng (ticket #, PID #) – (a,b) < (c,d) nếu a < c hoặc nếu a = c và b < d
• Dữ liệu dùng chung:boolean choosing[n];int number[n];
Cấu trúc dữ liệu ñược khởi tạo bằngfalse và 0.
44
Thuật toán Bakery
do { choosing[i] = true;number[i] = max(number[0], …, number[n – 1]) +1;choosing[i] = false;for (j = 0; j < n; j++) {
while (choosing[j]) ; while ((number[j]!=0) &&
((number[j],j)<(number[i],i)) ;}
critical sectionnumber[i] = 0;
remainder section} while (1);
45
Tiến trình bị lỗi?
• Nếu cả 3 ñiều kiện (ME, progress, bounded waiting) ñều ñược thỏa thì một giải pháphợp lệ sẽ không bị ảnh hưởng trong trườnghợp phần RS bị lỗi.
• Tuy nhiên trong trường hợp nếu lỗi xảy rañúng ở trong miền găng thì nó sẽ chiếmmiền găng vĩnh viễn.
46
Khuyết ñiểm của giải pháp phầnmềm
• Giải pháp phần mềm dễ bị ñổ vỡ.• Tiến trình ñang yêu cầu vào miền
găng ở trạng thái “busy waiting” (vẫntiêu tốn CPU).
• Nếu miền găng dài, sẽ hiệu quả hơnnếu block các tiến trình ñang chờ.
47
Giải pháp phần cứng: cấm ngắt
• Khi ở trong miền găng, các tiến trình kháckhông ñược chenngang vào miền găng.
Process Pi:repeat
disable interruptscritical section
enable interruptsremainder section
forever
48
Các chỉ thị phần cứng ñặc biệt
• Truy xuất ñến một vùng nhớ sẽ không cho phépcác tiến trình khác truy xuất vào cùng ñịa chỉ.
• Mở rộng: cung cấp hai chỉ thị nguyên tố ñể thihành thao tác ñọc ghi trên cùng một vùng nhớ.
• Sự thi hành của chỉ thị này thỏa mãn “mutually exclusive”.
• Cần bổ sung thêm cơ chế khác ñể thỏa mãn 2 tính chất còn lại.
49
Chỉ thị test-và-set
• Mô tả trongC++:
• Thuật toán sử dụng testset choMutual Exclusion:– Biến dùng chung b ñược khởi
tạo về 0– Chỉ duy nhất tiến trình Pi ñặt
b=1 ñược vào CSbool testset(int& i){
if (i==0) {i=1;return true;
} else {return false;
}}
Process Pi:repeat
repeat{}until testset(b);
CSb:=0;
RSforever
50
TestAndSet trong phần cứng
• Kiểm tra và thay ñổi nội dung của mộtword một cách không thể phân chia:
boolean TestAndSet(boolean &target) {
boolean rv = target;target = true;return rv;
}
51
Mutual Exclusion vớiTestAndSet
• Biến dùng chung: boolean lock = false;
• Tiến trình Pi
do {while (TestAndSet(lock)) ;
critical sectionlock = false;
remainder section}
52
Swap trong phần cứng
• Hoán ñổi hai biến (không thể phân chia).void Swap(boolean &a, boolean &b) {
boolean temp = a;a = b;b = temp;
}
53
Mutual Exclusion với Swap
Biến dùng chung: boolean lock = false;
• Tiến trình Pido {
key = true;while (key == true)
Swap(lock,key);critical section
lock = false;remainder section
}
54
Semaphores (1)
• Là một công cụ ñồng bộ hóa ñượccung cấp bởi HðH không ñòi hỏi“busy waiting”.
• Một semaphore S là một biến nguyênmà ngoài lệnh khởi tạo ra, chỉ có thểñược truy xuất thông qua hai thao tácñộc quyền truy xuất và nguyên tố:–wait(S)–signal(S)
55
CS với n tiến trình
• Dữ liệu dùng chung:semaphore mutex; // khởi tạo mutex = 1
• Tiến trình Pi:
do {wait(mutex);
critical sectionsignal(mutex);
remainder section} while (1);
56
Semaphores (2)
• Truy cập với 2 thao tácwait (S):
while S≤≤≤≤ 0 do no-op ;S--;
signal (S): S++;
• ðể tránh “busy waiting”: khi một tiến trìnhphải ñợi, nó sẽ ñược ñặt vào hàng ñợiblock.
57
Semaphores (3)
• Semaphore bản chất là một cấu trúc:
type semaphore = recordcount: integer;queue: list of process
end;var S: semaphore;
• Khi một tiến trình phải ñợi một semaphore S, nósẽ bị block và ñặt vào hàng ñợi của semaphore tương ứng.
• Thao tác signal lấy một tiến trình từ trong hàngñợi và ñặt nó vào trong danh sách các tiến trìnhở trạng thái sẵn sàng.
58
Thao tác trên Semaphorewait(S):
S.count--;if (S.count<0) {
block this processplace this process in S.queue
}
signal(S):S.count++;if (S.count<=0) {
remove a process P from S.queueplace this process P on ready list
}
59
Cài ñặt semaphore (1)
• ðịnh nghĩa cấu trúc:typedef struct {
int value;struct process *L;
} semaphore;• Giả sử có 2 thao tác cơ bản:
– Block tạm cho tiến trình chờ.
– wakeup( P) khôi phục lại sự thi hành của tiếntrình bị block P.
60
Cài ñặt semaphore
•wait(S):
S.value--;if (S.value < 0) {
add this process to S.L;block;
}signal(S):
S.value++;if (S.value <= 0) {
remove a process P from S.L;wakeup(P);
}
61
Công cụ ñồng bộ hóa tiến trình
• B ñược thi hành sau A.
• Dùng semaphore flag khởi tạo ban ñầubằng 0
• Mã:Pi Pj
M M
A wait(flag)signal(flag) B
62
Deadlock và Starvation
• Deadlock:– Gọi S và Q là hai semaphore ñược khởi tạo 1
P0 P1
wait(S); wait(Q);wait(Q); wait(S);
M M
signal(S); signal(Q);
signal(Q) signal(S);• Starvation : không ñược lấy ra khỏi hàng ñợi
block của semaphore
63
Ưu khuyết ñiểm củaSemaphore
• Semaphore cung cấp một công cụ mạnhmẽ ñể hỗ trợ cơ chế ñộc quyền truy xuấtvà ñồng bộ hóa các tiến trình.
• Tuy nhiên wait(S) và signal(S) nằm rải rácở các tiến trình. Vì vậy, khó ñể hiểu ý nghĩa của nó.
• Sử dụng phải ñúng trong tất cả cácprocess.
• Một tiến trình sử dụng không ñúng sẽ ảnhhưởng ñến các tiến trình khác.
• Vai trò lập trình viên nặng nề
64
Monitors (1)• ðịnh nghĩa tổng quan:
– Monitor là một cấu thành của ngôn ngữcấp cao cung cấp các chức năng tươngñương như semaphore nhưng dễ ñiềukhiển hơn.
– Monitor là một cấu thành của ngôn ngữcấp cao hỗ trợ ñiều khiển truy cập ñếndữ liệu chia sẻ.
• Một số ngôn ngữ hỗ trợ: • Concurrent Pascal, Modula-3, uC++, Java...
• Có thể ñược cài ñặt bằng semaphore.
65
Monitors (2)• Monitor là một module phần mềm chứa:
– Một hay nhiều thủ tục (thao tác)– Một ñoạn mã khởi tạo– Các biến cục bộ
• Tính chất:– Các biến cục bộ chỉ có thể ñược truy cập bởi
các thủ tục của monitor.– Một tiến trình vào monitor bằng cách gọi một
thủ tục của nó.– Tại một thời ñiểm bất kỳ, chỉ có duy nhất một
tiến trình có thể ở trong monitor.
66
Cấu trúc monitor
monitor monitor-name{
shared variable declarationsprocedure body P1 (…) { . . . }procedure body P2 (…) { . . . }
. . .procedure body Pn (…) { . . . }
. . .{ initialization code }
}
67
Mô hình của monitor
68
• Monitor bảo ñảm sự ñộc quyền, khôngcần phải lập trình rõ ràng như các phươngpháp khác.
• Vì vậy, dữ liệu dùng chung ñược bảo vệbằng cách ñặt nó vào trong monitor.
• Có thể ñồng bộ hóa các tiến trình bằngcách sử dụng các biến ñiều kiện ñể biểudiễn các ñiều kiện mà một tiến trình có thểphải chờ trước khi ñược thi hành trongmonitor.
Các ñặc trưng của monitor
69
Monitor có biến ñiều kiện
70
ðiều kiện trong monitor (1)• ðể cho phép một tiến trình chờ trong
monitor, một biến ñiều kienẹ phải ñượckhai báo, ví dụ:
condition x, y;• Các biến ñiều kiện chỉ có thể ñược truy
xuất bên trong monitor.• Các biến ñiều kiện chỉ có thể ñược sử
dụng với 2 thao tác cwait và csignal thihành trên một hàng ñợi ñi kèm.
71
ðiều kiện trong monitor (2)
• Thao tác cwait và csignal :– Lời gọi
x.cwait(); or cwait(x); nghĩa rằng tiến trình gọi nó sẽ bị treo co ñến khi tiến trình khác ñánh thức.x.csignal(); or csignal(x);
– Thao tác csignal khôi phục một và chỉ mộttiến trình bị treo. Nếu không có tiến trìnhnào ñang bị treo, thì thao tác csignal khôngcó ý nghĩa.
72
• Chờ ñợi các tiến trình từhàng ñợi vào hoặc hàngñợi ñiều kiện.
• Một tiến trình tự ñặt nóvào hàng ñợi cn bằng lờigọi cwait(cn).
• csignal(cn) lấy ra một tiếntrình trong hàng ñợi ñiềukiện cn và ñưa vào thihành trong monitor.
• Do ñó csignal(cn) khóatiến trình ñang gọi nó vàñặt vào hàng ñợi khẩncấp(trừ khi csignal là thaotác cuối).
Ngữ cảnh của monitor
73
Khuyết ñiểm của semaphore vàmonitor
• Sử dụng biến dùng chung ñể xác lập ñộc quyền truy xuất hoặc ñồng bộ hóa.
• Trong một hệ phân tán hoặc môi trường mạng, mỗi tiến trình có một không gian bộnhớ riêng � không thể dùng chung biến (bộ nhớ)
74
Truyền thông ñiệp (messaging)
• Công dụng:– Cho phép các tiến trình liên lạc với nhau mà
không cần phải có các biến dùng chung.
• Hai thao tác nguyên tố cơ bản:– send (destination, message) hoặc
send (message) – receive (source, message) hoặc
receive (message)
• Kích thước của thông ñiệp có thể cố ñịnh
hoặc linh hoạt
75
Truyền thông ñiệp (2)
• Trường hợp sử dụng:– Giữa các tiến trình trong cùng một máy.– Giữa các tiến trình trong mạng hoặc một
hệ phân tán.
• Trong cả hai trường hợp, tiến trình cóthể hoặc bị khóa hoặc không bị khóa khi truyền hoặc nhận thông ñiệp.
76
Truyền thông ñiệp (3)
• Vì vậy việc truyền thông ñiệp cóthể bị khóa hoặc không bị khóa:–Nếu b ị khóa ���� ñồng bộ
(synchronous).–Nếu không b ị khóa ���� không ñồng
bộ (asynchronous ).
• Thao tác send và receive có thểbị khóa hoặc không bị khóa.
77
ðồng bộ hóa trong truyền thông ñiệp
• Với bên gởi: tự nhiên hơn nếu không bịkhóa sau khi gởi:– Có thể gởi nhiều thông ñiệp ñến nhiều ñịa chỉ.– Nhưng thường là mong ñợi sự phản hồi từ
phía người nhận (trường hợp gởi sai).
• Với bên nhận: tự nhiên hơn nếu bị khóa sau khi báo chờ nhận:– Bên nhận thường cần thông tin trước khi tiếp
tục xử lý.– Nhưng có thể bị khóa vĩnh viễn nếu bên gởi
không thể gởi (bị lỗi).
78
Các cách truyền thông ñiệp
• Truyền trực tiếp (direct communication): – Tên của tiến trình ñược dùng cho ñịa chỉ
nguồn và ñịa chỉ ñích.
• Truyền gián tiếp: – Các thông ñiệp ñược gởi ñến một “hộp thư”
chung chứa một hàng ñợi các thông ñiệp.
– Bên gởi ñặt thông ñiệp vào trong hộp thư, vàbên nhận lấy thông ñiệp từ trong hộp thư ñóra.
79
Truyền trực tiếp
• Các tiến trình phải biết rõ lẫn nhau:– send (P, message) – gởi một thông ñiệp ñến
tiến trình P– receive (Q, message) – nhận một thông ñiệp
từ tiến trình Q
• Tính chất của ñường truyền:– ðược tự ñộng tạo.– Một ñường truyền ñược liên kết với duy nhất
một cặp tiến trình ñang trao ñổi thông tin.– Mỗi cặp có ñúng một ñường truyền.– Có thể là một chiều hoặc hai chiều.
80
Truyền gián tiếp
• Các thông ñiệp ñược ñưa vào và lấy ra từ trong hộp thư (còn gọi là cổng – port)– Mỗi hộp thư có một id duy nhất.– Các tiến trình chỉ có thể liên lạc với nhau nếu chúng
chia sẻ với nhau một hộp thư.
• Tính chất của ñường truyền– ðường truyền chỉ ñược thành lập không chúng chia sẻ
với nhau một hộp thư dùng chung.– Một ñường truyền có thể ñược sử dụng bởi nhiều tiến
trình.– Mỗi cặp tiến trình có thể có nhiều ñường truyền.– Có thể một chiều hoặc hai chiều.
81
Truyền gián tiếp (2)
• Thao tác– Tạo một hộp thư mới
– Gởi và nhận thông ñiệp qua hộp thư
– Hủy hộp thư
• Các thao tác nguyên tố:
send (A, message) – gởi một thông ñiệp ñến hộp thư A.
receive (A, message) – nhận một thông ñiệp từhộp thư A.
82
Truyền gián tiếp (3)
• Chia sẻ hộp thư– P1, P2, và P3 dùng chung hộp thư A.– P1 gởi; P2 và P3 nhận.– Ai lấy ñược thư?
• Giải pháp có thể:– Cho phép mỗi ñường truyền chỉ có ñúng 2 tiến trình.– Cho phép tại mỗi thời ñiểm chỉ có một tiến trình ñược
thực hiện thao tác nhận.– Cho phép ngẫu nhiên chọn bên nhận và thông báo
cho bên gởi biết ai ñã nhận.
83
Hộp thư và cổng
• Một hộp thư có thể ñược dùng bởi 2 tiến trình.
• Một hộp thư có thể ñược chia sẻ giữa nhiều bên gởi và bên nhận:
• Cổng là một hộp thư liên kết một bên nhận vànhiều bên gởi
– Dùng trong ứng dụng client/server: server chính là bên nhận.
84
Mutual Exclusion với truyền thông ñiệp
• Tạo một hộp thư mutexdùng bởi n tiến trình.
• send() không bị khóa.• receive() bị khóa khi
mutex rỗng.• Khởi tạo: send(mutex ,
“go”);• Tiến trình Pi ñầu tiên thi
hành receive() sẽ vào trong miền găng. Các tiến trình khác bị khóa ñến khi tiến trình trên kết thúc.
Process Pi:var msg: message;repeat
receive(mutex,msg);CSsend(mutex,msg);RS
forever
85
Các bài toán cổ ñiển về ñồng bộhóa
• Bài toán Producer – Consumer• Bài toán Readers – Writers• Bài toán Triết gia dùng bữa
86
Bài toán Producer – Consumer
• Tiến trình sản xuất sản xuất thông tin ñược tiêu thụ bởi tiến trình tiêu thụ.
• Tại bất cứ thời ñiểm nào, một tiến trình sản xuất có thể tạo dữ liệu nào ñó.
• Tại bất cứ thời ñiểm nào, một tiến trình tiêu thụcó thể muốn lấy một số dữ liệu nào ñó.
• Dữ liệu ñược lưu vào trong bộ ñệm.• Nếu vùng ñệm là hữu hạn, nhà sản xuất sẽ bị
“khóa” nếu dữ liệu mới sẽ làm tràn bộ ñệm. • Nếu vùng ñệm rỗng, nhà tiêu thụ sẽ bị khóa khi
nó cần dữ liệu.
87
Phân tích
• Có 3 vấn ñề cần ñồng bộ– Truy xuất ñộc quyền (Mutual Exclusion)
– Khi ñầy thì không ñược sản xuất thêm– Khi rỗng thì không ñược tiêu thụ thêm
88
Giải pháp với semaphore
• Cần 3 semaphore– Mutex ñể truy xuất ñộc quyền
– Full ñể kiểm soát ñầy– Empty ñể kiểm soát rỗng
89
Giải pháp với Semaphore (2)
• Dữ liệu dùng chung
semaphore full, empty, mutex;nextp, nextc; // con tr ỏ ñể thêm vào, l ấy ra
• Khởi tạo:
full = 0, empty = n, mutex = 1
90
Tiến trình Producer
do { …
produce an item in nextp…
wait(empty);wait(mutex);
…add nextp to buffer
…signal(mutex);signal(full);
} while (1);
91
Tiến trình Consumer
do { wait(full)wait(mutex);
…remove an item from buffer to nextc
…signal(mutex);signal(empty);
…consume the item in nextc
…} while (1);
92
• Câu hỏi:– ðiều gì xảy ra nếu ñảo 2 câu lệnh wait của 1
trong 2 tiến trình???– ðiều gì xảy ra nếu ñảo 2 câu lệnh signal của
1 trong 2 tiến trình???
93
Giải pháp với Monitor• Cần lưu một vùng ñệm:
– buffer: array[0..k-1] of items;
• Cần hai biến ñiều kiện:– notfull: csignal(notfull) vùng ñệm chưa ñầy.– notemty: csignal(notempty) vùng ñệm chưa rỗng.
• Các biến con trỏ:– nextin: con trỏ ñể thêm vào.– nextout: con trỏ ñể lấy ra.– count: số mặt hàng trong vùng ñệm.
• Các thủ tục– append(): thêm vào một mặt hàng (Producer)– take(): lấy ra một mặt hàng (Consumer)
ProducerI:repeat
produce v;append(v);
forever
ConsumerI:repeat
take(v);consume v;
forever
94
Monitor boundedbuffer:buffer: array[0..k-1] of items;nextin:=0, nextout:=0, count:=0: integer;notfull, notempty: condition;
append(v):if (count=k) cwait(notfull);buffer[nextin]:= v;nextin:= nextin+1 mod k;count++;csignal(notempty);
take(v):if (count=0) cwait(notempty);v:= buffer[nextout];nextout:= nextout+1 mod k;count--;csignal(notfull);
Giải pháp với Monitor
95
Giải pháp truyền thông ñiệp
• Nhà sản xuất sẽ ñặt các mặt hàng (trong các thông ñiệp) vào trong hộp thư mayconsume .
• mayconsume hành ñộng như là vùng ñệm củachúng ta: nhà tiêu thụ chỉ có thể tiêu thụ nêu cóít nhất một thông ñiệp trong hộp thư ñó.
• Hộp thư mayproduce ñược khởi tạo ban ñầu với k thông ñiệp trống (k= kích thước vùng ñệm).
• Kích thước của mayproduce giảm xuống khi một mặt hàng ñược sản xuất và tăng lên nếu một mặt hàng ñược tiêu thụ.
96
Giải pháp truyền thông ñiệp (2)Producer:var pmsg: message;repeat
receive(mayproduce, pmsg);pmsg := produce();send(mayconsume, pmsg);
forever
Consumer:var cmsg: message;repeat
receive(mayconsume, cmsg);consume(cmsg);send(mayproduce, null);
forever
97
Bài toán Readers - Writers
• Nhiều thao tác ñọc và ghi diễn ra ñồng thời trên một cơ sở dữ liệu.
• Trong khi một tiến trình ñang ghi thì các tiến trình khác không ñược ghi hay ñọc cơ sởdữ liệu.
• Các thao tác ñọc có thể tiến hành ñồng thời.
98
Phân tích
• Có 3 vấn ñề cần ñồng bộ– Khi một tiến trình ñang ghi thì không một tiến
trình nào ñược ñọc.– Khi một tiến trình ñang ñọc thì không ñược
ghi, và các tiến trình ñọc khác vẫn ñọc bình thường
– ðộc quyền truy xuất trên các biến dùng chung
99
Giải pháp với semaphore
• Dữ liệu dùng chung
semaphore mutex, wrt;int readcount;
• Khởi tạo
mutex = 1, wrt = 1, readcount = 0
100
Giải pháp với semaphore (2)
• readcount lưu số tiến trình ñang ñọc hiện tại.
• mutex cung cấp ñộc quyền truy xuất trên biến readcount.
• wrt cung cấp ñộc quyền truy xuất cho tiến trình ghi.
101
Tiến trình Writer
wait(wrt);…
writing is performed…
signal(wrt);
102
Tiến trình Reader
wait(mutex);readcount++;if (readcount == 1)
wait(wrt);signal(mutex);
…reading is performed
…wait(mutex);readcount--;if (readcount == 0)
signal(wrt);signal(mutex);
103
Bài toán Sản xuất / Tiêu thụ
• Một khuôn mẫu cho việc hợp tác giữa các tiến trình– Producer cung cấp thông tin ñược
tiêu thụ bởi một tiến trình Consumer.
104
Bài toán Sản xuất / Tiêu thụ (2)
• Cần một vùng ñệm ñể lưu các mục hàng ñược sản xuất và tiêu thụ sau ñó:– unbounded-buffer : không giới hạn kích
thước.– bounded-buffer: có kích thước xác ñịnh.
105
Multiple Producers and Consumers
106
Ngữ cảnh
• Tiến trình sản xuất sản xuất thông tin ñược tiêu thụ bởi tiến trình tiêu thụ.
• Tại bất cứ thời ñiểm nào, một tiến trình sản xuất có thể tạo dữ liệu nào ñó.
• Tại bất cứ thời ñiểm nào, một tiến trình tiêu thụ cóthể muốn lấy một số dữ liệu nào ñó.
• Dữ liệu ñược lưu vào trong bộ ñệm.• Nếu vùng ñệm là hữu hạn, nhà sản xuất sẽ bị
“khóa” nếu dữ liệu mới sẽ làm tràn bộ ñệm. • Nếu vùng ñệm rỗng, nhà tiêu thụ sẽ bị khóa khi nó
cần dữ liệu.
107
Ý tưởng
• Vùng ñệm ñược cài ñặt bởi mảng vòng với 2 con trỏ là in và out .
• Biến in trỏ ñến vị trí tự do kế tiếp trong vùng ñệm.
• Biến out trỏ ñến vị trí mục hàng ñầu tiên.
108
Bounded-Buffer: Giải pháp vùng nhớchia sẻ
• Dữ liệu chia sẻ#define BUFFER_SIZE 10typedef struct {
. . .} item;item buffer[BUFFER_SIZE];int in = 0;int out = 0;
109
Bounded-Buffer – Tiến trình SX item nextProduced;
while (1) {while (((in + 1) % BUFFER_SIZE) ==
out);/* do
nothing */buffer[in] = nextProduced;in = (in + 1) % BUFFER_SIZE;
}
110
Bounded-Buffer – Consumer Process
item nextConsumed;
while (1) {while (in == out); /* do nothing
*/nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;
}
111
Vấn ñề
• Các tiến trình ñồng hành thường cần chia sẻ dữ liệu và tài nguyên.
• Nếu không kiểm soát việc truy xuất tài nguyên � mất tính toàn vẹn dữ liệu.
• Hành ñộng thi hành bởi các tiến trình ñồng hành sẽ phụ thuộc và thứ tự thi hành của các tiến trình.
112
Ví dụ về sự không toàn vẹn• Có 2 tiến trình P1, P2 cùng
chia xuất ñến biến a.• Các tiến trình có thể bị ngắt
bất cứ lúc nào.
• Nếu P1 bị ngắt sau khi nhập dữ liệu và P2 thi hành hoàn toàn.
• Sau ñó dữ liệu xuất ra bởi P1 sẽ là kí tự ñọc bởi P2!!!
static char a;
void echo(){
cin >> a;cout << a;
}
113
Toàn vẹn dữ liệu
• Bảo vệ toàn vẹn dữ liệu ñòi hỏi cơ chếbảo ñảm sự thi hành một cách có thứ tựcủa các tiến trình hợp tác.
• Giải pháp vùng nhớ chia sẻ ở trên cho phép tối ña n-1 mục ñược ở trong vùng ñệm tại một thời ñiểm.– ðếm số mục hiện tại ñang ở trong vùng ñệm
114
Bounded-Buffer – bộ ñếm
• Dữ liệu chia sẻ#define BUFFER_SIZE 10typedef struct {
. . .} item;item buffer[BUFFER_SIZE];int in = 0;int out = 0;int counter = 0;
115
Bounded-Buffer – tiến trình SX
item nextProduced;
while (1) {while (counter == BUFFER_SIZE);
/* do nothing */
buffer[in] = nextProduced;in = (in + 1) % BUFFER_SIZE;counter++;
}
116
Bounded-Buffer – Tiến trình TT
item nextConsumed;
while (1) {while (counter == 0); /* do nothing */nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;counter--;
}
117
Bounded-Buffer – biến ñếm (1)
• Câu lệnh
counter++;counter--;
phải là câu lệnh nguyên tố.• Câu lệnh nguyên tố là câu lệnh không thể
bị ngắt.
118
Bounded-Buffer – Biến ñếm (2)
• count++:
register1 = counterregister1 = register1 + 1counter = register1
• count--:
register2 = counterregister2 = register2 – 1counter = register2
119
Bounded-Buffer – Biến ñếm (3)
• Nếu cả hai nhà tiêu thụ và sản xuất ñều cố gắng cập nhật vùng ñệm một cách ñồng thời, có thể có sự thi hành xen lẫn các câu lệnh.
• Sự chen ngang phụ thuộc vào việc lên lịch các tiến trình SX và TT.
120
Bounded-Buffer – Biến ñếm (4)
• Một khả năng có thể:producer: register1 = counter (register1 = 5)producer: register1 = register1 + 1(register1 = 6)consumer: register2 = counter (register2 = 5)consumer: register2 = register2 – 1(register2 = 4)producer: counter = register1 (counter = 6)consumer: counter = register2 (counter =
121
ðụng ñộ (race condition)
• Race condition : tình huống mà nhiều tiến trình cùng truy cập và thao tác dữliệu chia sẻ một cách ñồng thời. Dữliệu cuối cùng phụ thuộc vào tiến trình cuối cùng.
• ðể ngăn ngừa ñụng ñộ, các tiến trình ñồng hành phải ñược ñồng bộ hóa .
122
ðụng ñộ do cập nhật dữ liệu
Chia sẻ mức cân ñối thu chi;Code for p1:. . .balance += amount;. . . Code for p1:. . .Load R1, balanceLoad R2, amountAdd R1, R2Store R1, balance. . .
Code for p2:. . . balance += amount;. . .Code for p2:. . .Load R1, balanceLoad R2, amountAdd R1, R2Store R1, balance. . .
123
ðụng ñộ do cập nhật dữ liệu
1
Deadlock
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ả.
2
DeadlockTrường hợp deadlock có thể phát sinh nếu 4 ñiều kiện sau xảy
ra cùng một lúc trong hệ thống:
1) Loại trừ hỗ tương: 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 không chia sẽ. 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ởi quá 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.
3
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ỗi quá 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.
4
Trạng thái 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 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ường hợ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 ñược tấ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
5
Trạng thái 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
6
Các giải pháp tránh deadlock
Giải pháp ñồ th ị cấp phát tài nguyên: 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ống trong 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 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ó ñược thoả.
7
Các giải pháp tránh deadlock
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 .
8
Các giải pháp tránh deadlock
Nhiều cấu trúc dữ liệu phải ñược duy trì ñể cài ñặt giải thuật Banker như sau:
• 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ẳn dùng.
• 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.
• Allocation : một ma trận n x m ñịnh nghĩa số lượng tài nguyên của mỗi loại hiệ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.
• 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ại tà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 ].
9
Giải Thuật An ToànGiả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ạo Work:=Available và Finish[i]:=false cho i = 1, 2, …,n.
2) Tìm i thỏa: a) Finish[i] = false b) Need i ≤ Work.
Nếu không có i nào thỏa, di chuyển tới bước 4 3) Work:=Work + Allocation i
Finish[i] := true Di chuyển về bước 2.
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.
10
Giải Thuật Yêu Cầu Cấp Phát 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ực hiện bởi quá trình Pi, thì các hoạt ñộng sau ñược thực hiện: 1) Nếu Requesti ≤ Needi, di chuyển tới bước 2. Ngược lại, phát sinh
một ñiều kiện lỗi vì quá trình vượt quá yêu cầu tối ña của nó. 2) Nếu Requesti ≤ Available, di chuyển tới bước 3. Ngược lại, Pi phải
chờ vì tàinguyê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ằng cá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ì 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 cũ ñược phục hồi.
11
Ví dụ: Trạng Thái An Toàn
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:
12
Ví dụ: Trạng Thái An Toàn
Chúng ta khẳng ñịnh rằng hệ thống hiện ở trong trạng thái an toàn. Thật vậy, thứ tự <P1, P3, P4, P2, P0> thỏa tiêu chuẩn an toàn (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.)
13
Ví dụ: Trạng Thái An Toàn
Giả sử bây giờ P1 yêu cầu thêm một thể hiện loại A và hai thể hiện loại C, vì thế Request1 = (1, 0, 2). ðể quyết ñịnh yêu cầu này có thể ñược cấp tức thì hay không, trước tiên chúng ta phải kiểm tra Request1 ≤ Available (nghĩa là, (1, 0, 2)) ≤ (3, 3, 2)) là ñúng hay không. Sau ñó, chúng ta giả sửyêu cầu này ñạt ñược và chúng ta ñi ñến trạng thái mới sau:
14
Ví dụ: Trạng Thái An Toàn
Tuy nhiên, chúng ta cũng thấy rằng, khi hệthống ở trong trạng thái này, một yêu cầu (3, 3, 0) bởi P4 không thể ñược gán vì các tài nguyên làkhông sẳn dùng.
Một yêu cầu cho (0, 2, 0) bởi P0 không thể ñược cấp mặc dù tài nguyên là sẳn dùng vì trạng thái kết quả là không an toàn.
Hãy tính toán và giải thích rõ các ý trên?
Memory management 1
Quản lý bộ nhớ
Memory management 2
Nội dung
• Vì sao phải quản lý bộ nhớ• Không gian ñịa chỉ lôgic - không gian ñịa
chỉ vật lý• Swapping • Cấp phát bộ nhớ liên tục• Phân trang (Paging)• Phân ñoạn (Segmentation)• Kết hợp phân ñoạn và phân trang
Memory management 3
Vì sao phải quản lý bộ nhớ
• Một chương trình muốn chạy thì phải ñược nạp vào trong bộ nhớ chính.– Vấn ñề:
• Khi nào nạp?• Nạp vào ñâu?• Nạp những phần nào?
• Quản lý bộ nhớ giúp tối ưu hóa hoạt ñộng của bộ nhớ�Tối ưu hóa số tiến trình cùng lúc ở trong bộ nhớ
chính � nâng cao tính ña chương�Tận dụng tối ña bộ nhớ của máy tính
Memory management 4
Bộ nhớ
• Là một dãy các ô nhớ liên tục nhau
• Mỗi ô nhớ (một word) cómột ñịa chỉ
• Chương trình = tập các câu lệnh (chỉ thị máy) + dữ liệu
• Nạp chương trình vào bộnhớ � ñặt các chỉ thị vàdữ liệu vào các ô nhớ �
xác ñịnh ánh xạ giữa các chỉ thị, dữ liệu vào ñịa chỉtrong bộ nhớ
0
4
8
12
16
MOV AX, 10
MOV BX, 20
ADD AX, AX, BX
5
Ánh xạ chỉ thị, dữ liệuvào ñịa chỉ bộ nhớ
• Thời ñiểm biên d ịch : nếu ñịa chỉ vùngnhớ ñược biết trước thì mã lệnh tuyệt ñối(có ñịa chỉ tuyệt ñối) có thể ñược tạo rangay tại thời ñiểm biên dịch. Nếu ñịa chỉbắt ñầu của vùng nhớ bị thay ñổi thì sẽphải biên dịch lại.
• Thời ñiểm nạp: Tạo ra các mã lệnh cóthể tái ñịnh vị (relocatable code) nếu ñịachỉ vùng nhớ không thể biết tại thời ñiểmbiên dịch.
• Thời ñiểm thi hành : Việc kết hợp mãlệnh và ñịa chỉ sẽ ñược trì hoãn cho ñếnlúc chạy chương trình nếu tiến trình ñó cóthể bị di chuyển từ phân ñoạn nhớ nàyñến phân ñoạn nhớ khác. Cần phải có hỗtrợ từ phần cứng ñể ánh xạ ñịa chỉ (ví dụ: thanh ghi cơ sở và thanh ghi giới hạn(base registers, limit registers)).
Việc ánh xạ chỉ thị, dữ liệu vào ñịa chỉ bộ nhớcó thể xảy ra tại 3 thời ñiểm:
Memory management 6
Cơ chế nạp ñộng (Dynamic loading)
• Các hàm sẽ không ñược nạp cho ñến khi nó ñược gọi
• Sử dụng bộ nhớ tốt hơn: các hàm không ñược sử dụng sẽ không bao giờ ñược nạp.
• Có ý nghĩa khi một lượng lớn các mã lệnh dùng ñể xử lý các trường hợp ít khi xảy ra.
• Không cần hỗ trợ từ hệ ñiều hành.
Memory management 7
Cơ chế liên kết ñộng (dynamic linking)
• Liên kết lúc thực thi tiến trình.• Một ñoạn lệnh nhỏ, gọi là stub, dùng ñể
ñịnh vị hàm của thư viện ñang ở trong bộnhớ.
• Stub thi hành hàm vừa tìm thấy.• HðH cần phải kiểm tra xem hàm cần tìm
có nằm trong bộ nhớ của tiến trình hay không.
Memory management 8
Overlays
• Chỉ lưu trong bộ nhớ chỉ thị và dữ liệu ñang cần.
• Cần thiết khi một tiến trình lớn hơn dung lượng nhớ có thể cấp phát cho nó.
Memory management 9
Một số khái niệm
• Khi một chương trình thực hiện, nội dung của nó sẽ ñược ñưa vào bộ nhớ máy tính.
• Khi ñó, hệ ñiều hành phải ñịnh ra một vùng nhớ trống cho chương trình hoạt ñộng.
• Thao tác này gọi là location.
Memory management 10
Một số khái niệm
• Sau một thời gian hoạt ñộng sẽ cómột số chương trình kết thúc� bộnhớ bị phân mảnh.
• Một số chương trình khác muốn hoạtñộng nhưng các khối nhớ trống cònlại không ñủ cấp cho nó.
• Khi ñó hệ ñiều hành phải thực hiệnthao tác relocation ñịnh vị lại cácchương trình hiện có ñể tạo ra khốinhớ trống lớn nhất cho chương trình.
Memory management 11
Một số khái niệm
• Cơ chế overlay là cơ chế cho phép chia nhỏ 1 chương trình ra thành nhiều phần.
• Mỗi phần là 1 trang (page). Tại một thời ñiểm chỉ thực hiện một hoặc một số trang.
• Số trang thực hiện mỗi lần là sốkhung trang k . Các phần còn lại sẽ ñược ñể lại ở bộ nhớ ngoài.
Memory management 12
Các kỹ thuật thay thế trang trong cơ chế overlay
• Fifo:– Ví dụ: A cần thực hiện nội dung các page theo thứ tự sau: 2 9 6 8 2 4 3
7 5 3 9. Với số khung trang k = 3. ( Mỗi thời ñiểm tối ña thực hiện ñược 3 trang).
– ðầu tiên 2 ñược nạp vào bộ nhớ. 2 (trạng thái bộ nhớ)– Tiếp theo 9 ñược nạp vào bộ nhớ. 2 9 – Tiếp theo 6 ñược nạp vào bộ nhớ. 2 9 6– Sau ñó sẽ thay 2 bởi 8. 8 9 6– Sau ñó sẽ thay 9 bởi 2. 8 2 6– ??? 8 2 4– ??? 3 2 4– ??? 3 7 4– ??? 3 7 5– ??? 3 7 5– ??? 9 7 5
Memory management 13
Các kỹ thuật thay thế trang trong cơ chế overlay
• Ít sử dụng nhất trong tương lai:– Trang ñược thay thế là trang ít sử dụng nhất trong tương lai. Nếu 2
trang trong tương lai có số lần xuất hiện bằng nhau và khác 0 thì ta sẽchọn trang xa nhất ñể thay thế. Nếu hai trang trong tương lai ñều khôngxuất hiện thì chọn trang ñầu tiên tính từ trên xuống.
– Ví dụ: B cần thực hiện nội dung các page theo thứ tự sau: 2 9 6 8 5 2 4 3 7 5 3 8 9. Với số khung trang k = 3. ( Mỗi thời ñiểm tối ña thực hiệnñược 3 trang).
– ðầu tiên 2 ñược nạp vào bộ nhớ. 2 (trạng thái bộ nhớ)– Tiếp theo 9 ñược nạp vào bộ nhớ. 2 9 – Tiếp theo 6 ñược nạp vào bộ nhớ. 2 9 6– Sau ñó sẽ thay 6 bởi 8. 2 9 8– Sau ñó sẽ thay 9 bởi 5. 2 5 8– ??? 2 5 8– ??? 4 5 8– ??? 3 5 8– ??? 3 5 7– ??? 3 5 7– ??? 8 5 7– ??? 9 5 7
Memory management 14
Câu hỏi
• A cần thực hiện nội dung các page theo thứ tựsau: 2 9 6 8 2 4 3 7 5 3 9. Với số khung trang k = 3. ( Mỗi thời ñiểm tối ña thực hiện ñược 3 trang). Hãy thực hiện theo kỹ thuật ít sử dụngnhất trong tương lai.
• B cần thực hiện nội dung các page theo thứ tựsau: 2 9 6 8 5 2 4 3 7 5 3 8 9. Với số khungtrang k = 3. ( Mỗi thời ñiểm tối ña thực hiệnñược 3 trang). Hãy hiện thực theo kỹ thuật thaythế trang fifo trong cơ chế overlay.
Memory management 15
Không gian ñịa chỉ lôgic và vật lý
• Khái niệm một không gian ñịa chỉ lôgic ñược kết buộc với một không gian ñịa chỉ vật lý ñóng vai trờ trung tâm trong một việc quản lý bộ nhớ tốt.– ðịa chỉ lôgic – ñược phát sinh bởi bộ xử lý; còn ñược gọi là ñịa chỉ ảo.– ðịa chỉ vật lý – ñịa chỉ ñược nhìn thấy bởi ñơn vị quản lý bộ nhớ.– Không gian ñịa chỉ – là tập hợp tất cả các ñịa chỉ ảo phát sinh bởi một
chương trình.– Không gian vật lý – là tập hợp tất cả các ñịa chỉ vật lý tương ứng với
các ñịa chỉ ảo.
• ðịa chỉ lôgic và ñịa chỉ vật lý như nhau trong mô hình kết buộc ñịa chỉ tại thời ñiểm biên dịch và nạp;
• ðịa chỉ lôgic và ñịa chỉ vật lý khác nhau trong mô hình kết buộc ñịa chỉ tại thời ñiểm thi hành.
Memory management 16
ðơn vị quản lý Bộ nhớMemory-Management Unit (MMU)
• Thiết bị phần cứng ñể ánh xạ ñịa chỉ ảo thành ñịa chỉ vật lý.
• Trong mô hình MMU, mỗi ñịa chỉ phát sinh bởi một tiến trình ñược cộng thêm giá trị của thanh ghi tái ñịnh vị (relocation register) tại thời ñiểm nó truy xuất ñến bộ ngớ.
• Chương trình người dùng chỉ quan tâm ñến ñịa chỉ lôgic; nó không thấy ñịa chỉ vật lý thật sự.
Memory management 17
Memory management 18
Các kiểu cấp phát vùng nhớ
• Cấp phát bộ nhớ liên tục với một phân vùng
• Cấp phát bộ nhớ liên tục với nhiều phân vùng có kích thước cố ñịnh
• Cấp phát bộ nhớ liên tục với nhiều phân vùng có kích thước ñộng
• Cấp phát bộ nhớ không liên tục bằng phân trang
Memory management 19
Cấp phát liên tục một phân vùng
• Bộ nhớ chính thường chia làm hai phân vùng:– Phần chứa HðH, thường nằm ở vùng nhớ
thấp cùng với bảng vector ngắt.– Các tiến trình người dùng nằm ở vùng nhớ
cao.
• Cấp phát chỉ trên một vùng– Thanh ghi tái ñịnh vị ñược dùng ñể bảo vệ
các tiến trình người dùng với nhau và bảo vệ dữ liệu và ñoạn mã của HðH.
– Thanh ghi tái ñịnh vị lưu giá trị ñịa chỉ vật lý nhỏ nhất; thanh ghi giới hạn (limit register) chứa phạm vi ñịa chỉ lôgic � mọi ñịa chỉlôgic phải nhỏ hơn thanh ghi giới hạn.
– Thường dùng trong các hệ ñơn chương
Memory management 20
9.03
Memory management 21
Cấp phát liên tục nhiều phân vùng cố ñịnh
• Cấp phát liên tục với nhiều phân vùng cố ñịnh– Bộ nhớ ñược phân thành các phân vùng có kích thước cố ñịnh
(có thể khác nhau hoặc bằng nhau)– Khi một tiến trình vào, nó sẽ ñược cấp phát cho một phân vùng
có kích thước ñủ ñể chứa nó.
• Khuyết ñiểm:– Mỗi phân vùng chỉ ñược lưu một tiến trình � số tiến trình ñồng
thời bị giới hạn bởi số phân vùng– Nếu kích thước của tiến trình không vừa ñúng bằng kích thước
của phân vùng chứa nó, phần bộ nhớ không ñược sử dụng sẽlãng phí � hiện tượng phân mảnh nội vi (internal fragmentation).
– Sử dụng thanh ghi tái ñịnh vị và thanh ghi giới hạn ñể bảo vệcác tiến trình khỏi bị xâm phạm lẫn nhau.
Memory management 22
Cấp phát liên tục nhiều phân vùng cốñịnh
Memory management 23
Cấp phát liên tục nhiều phân vùng cốñịnh
Memory management 24
P3
P1
P5
400
900
1900
2560
Dư 200Kb
Dư 400Kb
Dư 160Kb
Cấp phát liên tục nhiều phânvùng cố ñịnh
Giả sử các phân vùng cố ñịnh là500 Kb, 1000Kb và 656 Kb.
Memory management 25
Cấp phát liên tục nhiều phân vùng ñộng
• Cấp phát liên tục với nhiều phân vùng ñộng– Khi một tiến trình vào hệ thống, cấp phát cho nó vùng nhớ vừa
ñúng với kích thước của tiến trình.– Khi tiến trình kết thúc vùng nhớ ñó sẽ bị thu hồi và cấp phát cho
các tiến trình khác– Kích thước của vùng nhớ ñộng– Vị trí của vùng nhớ cũng ñộng
• Khuyết ñiểm:– Không còn hiện tượng phân mảnh nội vi nhưng xuất hiện hiện
tượng phân mảnh ngoại vi (external fragmentation) � có khảnăng tổng vùng nhớ còn trống có thể ñủ ñể cấp phát cho nhucầu của tiến trình nhưng không thể vì chúng nằm rải rác.
– Giải pháp cho phân mảnh ngoại vi dồn vùng nhớ � phức tạp, chi phí cao.
– Nếu trong quá trình xử lý tiến trình có nhu cầu sử dụng thêmvùng nhớ � phải dời chỗ tiến trình hoặc cấp phát thêm nếu còntrống phần ngay sau nó � cần phải có một thuật toán lườngtrước hoặc tối ưu việc cấp phát vùng nhớ tránh phải dời chỗ tiếntrình nhiều.
Memory management 26
Cấp phát liên tục nhiều phân vùngñộng
Memory management 27
Cấp phát liên tục nhiềuphân vùng ñộng
Memory management 28
Relocation
Memory management 29
Relocation
Memory management 30
Cấp phát liên tục nhiều phân vùngñộng
• First-fit : Cấp phát cho vùng trống ñầu tiên có thểchứa ñược tiến trình.
• Best-fit : Cấp phát vùng trống nhỏ nhất có thểchứa ñược tiến trình; phải tìm kiếm trên toàn bộdanh sách các vùng trống.
• Worst-fit : Cấp phát vùng trống lớn nhất; phải tìmkiếm trên toàn bộ danh sách
Chọn vùng nhớ trống nào ñể cấp phát cho một tiến trình khi có nhu cầu
First-fit tốt hơn về tốc ñộ và Best-fit tối ưu hóa việc sử dụng bộnhớ
Memory management 31
Câu hỏi bài tập
• Vẽ sơ ñồ cấp phát liên tục nhiều phânvùng ñộng theo:– First fit ?
– Best fit ?– Worst fit?
Trong trường hợp của hình bên
Memory management 32
Swapping
• Một tiến trình có thể bị chuyển ra ngoài tạm thời ñến một vùng lưu trữ nào ñó khi tiến trình ñóphải chờ ñợi trong khoảng thời gian dài ñể giải phóng vùng nhớ cho tiến trình khác (swap out).
• Khi tiến trình kết thúc việc chờ, nó có thể ñược mang vào lại bộ nhớ chính ñể xử lý (swap in).
• Thao tác swap cũng có thể xảy ra khi dùng các thuật toán ñiều phối tiến trình có ñộ ưu tiên
Memory management 33
Swapping
• Nâng cao mức ñộ ña chương• Khi tiến trình ñược mang lại bộ nhớ chính, nó sẽ
ñược nạp vào vùng nhớ nào?– Kết buộc lúc nạp � phải ñưa vào vùng nhớ cũ của nó– Kết buộc lúc thi hành � thay ñổi thanh ghi tái ñịnh vị
• Cần sử dụng bộ nhớ phụ ñủ lớn ñể lưu các tiến trình bị khóa.
• Thời gian swap chủ yếu là thời gian chuyển tiến trình từ vùng nhớ chính ñến bộ nhớ phụ � một tiến trình cần phải có khoảng thời gian xử lý ñủlớn.
Memory management 34
Mô hình thao tác swapping
Memory management 35
Khuyết ñiểm của các pp cấp phát liên tục
• Xảy ra hiện tượng phân mảnh bộ nhớ:– Phân mảnh nội vi (internal fragmentation)
• Kích thước phân vùng cố ñịnh
– Phân mảnh ngoại vi (external fragmentation)• Kích thước phân vùng ñộng
Memory management 36
Cấp phát bộ nhớ bằng pp phân trang (Paging)
• Không gian ñịa chỉ lôgic của một tiến trình có thể không liên tục.• Chia bộ nhớ vật lý thành các khối có kích thước cố ñịnh gọi là
khung (frame) (kích thước là số mũ của 2, từ 512 ñến 8192 bytes).• Chia bộ nhớ lôgic thành các khối có cùng kích thước và gọi là trang
(pages).• Lưu trạng thái của tất cả các khung (frame).• ðể chạy một chương trình có kích thước n trang, cần phải tìm n
khung trống và nạp chương trình vào.• Tạo một bảng trang ñể chuyển ñổi ñịa chỉ lôgic sang ñịa chỉ vật lý. • Có hiện tượng phân mảnh bộ nhớ nội vi.
Memory management 37
Mô hình chuyển ñổi ñịa chỉ
• ðịa chỉ ñược tạo ra bởi CPU gồm có hai phần:– Số trang (Page number) (p) – ñược dùng như
là một chỉ số của một bảng trang chứa ñịa chỉ cơ sở của mỗi trang trong bộ nhớ vật lý.
– Page offset (d) – kết hợp với ñịa chỉ cơ sở ñể ñịnh ra không gian ñịa chỉ vật lý ñược gởi ñến bộ nhớ.
Memory management 38
Kiến trúc chuyển ñổi ñịa chỉ
Memory management 39
Ví dụ trang
Memory management 40
Cài ñặt bảng trang
• Bảng trang ñược ñặt trong bộ nhớ.• Page-table base register (PTBR) chỉ ñến bảng trang.• Page-table length register (PRLR) cho biết kích thước
của bảng trang.• Với mô hình này, mọi sự truy cập chỉ thị/dữ liệu ñều ñòi
hỏi hai lần truy cập vùng nhớ: 1) truy cập bảng trang; 2) chỉ thị hoặc dữ liệu � có vẻ chậm.
• Khắc phục vấn ñề hai lần truy cập vùng nhớ bằng cách sử dụng một vùng ñệm phần cứng tra cứu nhanh ñặc biệt (special fast-lookup hardware) gọi là associative registers hoặc translation look-aside buffers (TLBs)
Memory management 41
Memory management 42
Effective Access Time
• Thời gian tìm kiếm trong associate registers = ε ñơn vị thời gian
• Giả sử thời gian truy cập bộ nhớ là 1 ms
• Gọi α là tỉ lệ số lần số trang ñược tìm thấy trong các associative registers.
• Effective Access Time (EAT)EAT = (1 + ε) α + (2 + ε)(1 – α)
= 2 + ε – α
Memory management 43
Bảo vệ vùng nhớ
• Làm sao biết trang nào của tiến trình nào? Cần bảo vệcác tiến trình truy xuất vào trang không phải của mình.
• Việc bảo vệ vùng nhớ ñược cài ñặt bằng cách liên kết một khung với một bit, gọi là bit kiểm tra hợp lệ (valid-invalid bit).
• Valid-invalid bit ñược ñính kèm vào mỗi ô trang bảng trang:– “valid” chỉ ra rằng trang ñi kèm là nằm trong không gian ñịa chỉ
lôgic của tiến trình vì vậy truy xuất trang này là hợp lệ.– “invalid” chỉ ra rằng trang ñi kèm không nằm trong không gian
ñịa chỉ lôgic của tiến trình.
Memory management 44
Memory management 45
Tổ chức bảng trang
• Chỉ một bảng trang (cho mỗi tiến trình)• Tiến trình nhiều trang � quản lý bộ nhớ
rất lớn � số trang nhiều � kích thước của bảng trang phải lớn � không tối ưu.
• Giải pháp:– Phân trang ña cấp (multilevel paging)
– Bảng trang nghịch ñảo
Memory management 46
Phân trang ña cấp
• Phân chia bảng trang thành các phần nhỏ
• Bản thân bảng trang cũng ñược phân trang
Memory management 47
Mô hình phân trang hai cấp
Memory management 48
Ví dụ phân trang 2 cấp
• Một ñịa chỉ lôgic (trên máy 32 bit với kích thước trang là 4K) ñược chia thành:– Page number: 20 bit.– Page offset: 12 bit.
• Bởi vì bảng trang ñược phân trang, số trang tiếp tục ñược phân chia thành:– Page number: 10-bit. – Page offset: 10 bit.
• ðịa chỉ lôgic sẽ có cấu trúc như sau:
page number page offset
pi p2 d
10 10 12
Memory management 49
Chuyển ñổi ñịa chỉ
• Address-translation scheme for a two-level 32-bit paging architecture
Memory management 50
Phân tích
• Nếu chỉ dùng một trang– bảng trang sẽ có 220 phần tử.
• Nếu dùng phân trang 2 cấp– Bảng trang ngoài cần 210 phần tử
– Bảng trang trong vẫn có 220 phần tử nhưng cóthể ñược ñặt ở vùng nhớ phụ
Memory management 51
Bảng trang nghịch ñảo
• Sử dụng một bảng trang duy nhất cho mọi tiến trình
• Một entry cho mỗi khung (bộ nhớ vật lý).• Một entry bao gồm ñịa chỉ ảo của khung
và tiến trình sở hữu khung ñó.• Giảm kích thước lưu trữ bảng trang ,
nhưng tăng thời gian tìm kiếm bảng trang.• Dùng bảng băm ñể tăng tốc tìm kiếm.
Memory management 52
Kiến trúc bảng trang nghịch ñảo
Memory management 53
Chia sẻ và bảo vệ
• Chia sẻ và bảo vệ– Ở cấp ñộ trang
– ðứng ở khía cạnh người dùng, khá bất tiện• Vd: ðoạn mã nằm trên nhiều trang � phải chia sẻ
tất cả các trang ñó với nhau.
– ðoạn mã phải nằm ở một vị trí giống nhau trông tất cả các không gian ñịa chỉ của của tiến trình muốn chia sẻ
Memory management 54
Ví dụ chia sẻ trang
Memory management 55
Phân ñoạn
• Hỗ trợ quản lý bộ nhớ theo góc ñộ người dùng.
• Một chương trình bao gồm nhiều phân ñoạn (segment):– ðoạn mã
– Biến toàn cục, dữ liệu– stack
– heap
Memory management 56
Góc ñộ người dùng
1
3
2
4
1
4
2
3
user space physical memory space
Memory management 57
Kiến trúc phân ñoạn
• ðịa chỉ lôgic = <segment-number, offset>• Bảng phân ñoạn (Segment table) – chuyển ñổi ñịa chỉ
hai chiều thành ñịa chỉ vật lý một chiều. Mỗi ô trong bảng gồm có:– Thanh ghi nền (base) – chứa ñịa chỉ vật lý bắt ñầu của phân
ñoạn trong bộ nhớ chính.– Thanh ghi giới hạn (limit) – chỉ kích thước của phân ñoạn.
• Segment-table base register (STBR) lưu trữ ñịa chỉ của bảng phân ñoạn trong vùng nhớ.
• Segment-table length register (STLR) chỉ số segment ñược sử dụng bởi 1 chương trình
Memory management 58
Chuyển ñổi ñịa chỉ
Memory management 59
Kiến trúc phân ñoạn (tt)
• Tái ñịnh vị.– ðộng (dynamic partition)– Thông qua bảng phân ñoạn
• Chia sẻ.– Có thể chia sẻ các phân ñoạn giữa các chương trình– Sử dụng chung chỉ số sement
• Cấp phát.– first fit/best fit– Có hiện tượng phân mảnh ngoại vi
Memory management 60
Chuyển ñổi ñịa chỉ
Memory management 61
Kiến trúc phân ñoạn (tt)
• Bảo vệ– Mỗi entry thêm một bit “valid bit”. Nếu valid bit
= 0 ⇒ truy cập phân ñoạn không hợp lệ– Hỗ trợ phân quyền theo từng thao tác
read/write/execute
Memory management 62
Memory management 63
Kết hợp phân trang và phân ñoạn
• Ý tưởng:– Phân trang trong mỗi phân ñoạn– Bộ nhớ = nhiều phân ñoạn– Phân ñoạn = nhiều trang
• Giải quyết tình trạng phân mảnh ngoại vi• Mỗi phần tử của bảng phân ñoạn gồm hai thành
phần:– Thanh ghi giới hạn (limit): kích thước của phân ñoạn
(giống với phân ñoạn thuần)– Thanh ghi cơ sở (base): chứa ñịa chỉ của bảng trang
của phân ñoạn ñó (khác với phân ñoạn thuần)
Memory management 64
Các tiêu chuẩn so sánh các pp quản lý vùng nhớ
• Hỗ trợ phần cứng• Hiệu năng• Sự phân mảnh• Khả năng tái ñịnh vị
• Hỗ trợ swap • Chia sẻ
• Bảo vệ
11/07/08 1
Bộ nhớ ảo
Trần Sơn HảiKhoa Toán – Tin học
ðại học Sư phạm TPHCM
Heavily reference to Operating System Slide of Hoang Than Anh Tuan, University of Pedagogy, HCMC
11/07/08 2
Bộ nhớ ảo: Ý tưởng• Hai ñặc trưng quan trọng của kiến trúc
phân ñoạn và phân trang:– Mọi sự truy xuất vùng nhớ của một tiến
trình ñều ñược chuyển ñổi ñịa chỉ lúc thi hành (run-time) � có thể swap-in, swap-out.
– Một tiến trình ñược phân ra thành một sốphần (trang hoặc ñoạn) và không nhất thiết phải nằm liên tục nhau
11/07/08 3
Bộ nhớ ảo: Ý tưởng (tt)
• Nếu hai tính chất trên ñược bảo ñảm thì không nhất thiết tất cả các trang hoặc phân ñoạn phải nằm trong bộ nhớ chính lúc thi hành.
• Ưu ñiểm:– Có nhiều tiến trình trong bộ nhớ hơn � giải thuật lập lịch sẽ
tối ưu hơn � nâng cao mức ñộ ña chương
– Một tiến trình có thể lớn hơn kích thước của bộ nhớ chính
11/07/08 4
Nguyên lý cục bộ
Các thao tác truy cập vùng nhớ có khuynh hướng cụm lại (cluster).Sau một khoảng thời gian ñủ dài, cụm này có thể sẽ thay ñổi, nhưng trong một khoảng thời gian ngắn, bộ xử lý chủ yếu chỉ làm việc trên một số cụm nhất ñịnh.Sau một khoảng thời gian ñủ dài, cụm này có thể sẽ thay ñổi, nhưng trong một khoảng thời gian ngắn, bộ xử lý chủ yếu chỉ làm việc trên một số cụm nhất ñịnh.
11/07/08 5
Giải thíchCác câu lệnh cơ bản chủ yếu là tuần tự (thi hành từ trên xuống dưới). Câu lệnh không tuần tự là câu lệnh rẽnhánh (câu lệnh ñiều kiện) thường chiếm tỉ lệ khá ít.
Trong một khoảng thời gian ngắn, các chỉ thị thông thường nằm trong một số hàm, thủ tục nhất ñịnh.
Hầu hết các câu lệnh lặp chứa một số ít các chỉ thị vàlặp lại nhiều lần. Do ñó trong suốt thời gian lặp, việc tính toán hầu như chỉ diễn ra trong một vùng nhỏ liên tục.
Khi truy cập vào một cấu trúc dữ liệu trước ñó, thông thường các câu lệnh ñặt liền nhau sẽ truy cập ñến các thành phần khác nhau của cùng một cấu trúc dữ liệu.
11/07/08 6
Các vấn ñề liên quan ñến bộ nhớ ảo
• Cần có sự hỗ trợ phần cứng về kiến trúc phân trang và phân ñoạn– ðã khảo sát
• Cần có thuật toán hiệu quả ñể quản lý việc chuyển ñổi các trang, phân ñoạn từ bộ nhớchính vào bộ nhớ phụ và ngược lại– Nguyên lý cục bộ– ðĩa cứng hoạt ñộng theo khối– Dự ñoán ñược các trang và phân ñoạn dựa
vào lịch sử truy xuất vùng nhớ trước ñó.
11/07/08 7
Quản lý việc chuyển ñổi giữa vùng nhớ chính và vùng nhớ phụ
• Các chính sách cần xét:– Chính sách nạp (fetch policy): khi nào thì
một trang ñược nạp vào bộ nhớ?– Chính sách ñặt (placement policy): trang
hoặc phân ñoạn sẽ ñược ñặt ở ñâu trong bộ nhớ chính?
– Chính sách thay th ế (replacement policy): chọn trang nào ñưa ra khỏi bộ nhớ phụ khi cần nạp một trang mới vào bộ nhớ chính?
11/07/08 8
Cài ñặt bộ nhớ ảo
• Kỹ thuật phân trang theo yêu cầu (demand paging)
• Kỹ thuật phân ñoạn theo yêu cầu (demand segmentation)– Khó vì kích thước không ñồng nhất
11/07/08 9
Kỹ thuật phân trang theo yêu cầu
• Phân trang theo yêu cầu = Phân trang + swapping• Tiến trình là một tập các trang thường trú trên bộ
nhớ phụ. • Một trang chỉ ñược nạp vào bộ nhớ chính khi có yêu
cầu.• Khi có yêu cầu về một trang nào ñó, cần có cơ chế
cho biết trang ñó ñang ở trên ñó hoặc ở trong bộnhớ– Sử dụng bit valid/invalid– Valid: có trong bộ nhớ chính– Invalid: trang không hợp lệ hoặc trang ñang nằm trong bộ
nhớ phụ
11/07/08 10
Cơ chế phần cứng
• Bảng trang– Phải phản ánh ñược một trang ñang nằm
trong bộ nhớ chính hay bộ nhớ phụ và tương ứng ñang nằm ở vị trí nào (trong bộnhớ chính hoặc bộ nhớ phụ)
• Bộ nhớ phụ– Dùng một không gian trên ñĩa cứng
thường gọi là không gian swapping.
11/07/08 11
11/07/08 12
11/07/08 13
Quá trình xử lý một trang không cótrong bộ nhớ chính (lỗi trang)
1. Kiểm tra trang ñược truy xuất có hợp lệ hay không?2. Nếu truy xuất không hợp lệ � kết thúcNgược lại � bước 33. Tìm vị trí chứa trang muốn truy xuất trên ñĩa cứng.4. Tìm một khung trang trống trên bộ nhớ chính
1. Nếu tìm thấy � bước 52. Nếu không tìm thấy khung trang trống, tìm một
khung trang “nạn nhân” và chuyển nó ra bộ nhớ phụ, cập nhật bảng trang
5. Chuyển trang muốn truy xuất từ bộ nhớ phụ vào bộ nhớchính, cập nhật bảng trang, bảng khung trang.
6. Tái kích hoạt tiến trình tại chỉ thị truy xuất ñến trang
11/07/08 14
11/07/08 15
Thay thế trang
• Là cơ chế thay thế một trang ñang nằm trong bộnhớ nhưng chưa cần sử dụng bằng một trang ñang nằm trong ñĩa (không gian swapping) ñang ñược yêu cầu.
• Hai thao tác:– Chuyển trang từ bộ nhớ chính ra bộ nhớ phụ– Mang trang từ bộ nhớ phụ vào vào nhớ chính
• Giảm số lần thao tác bằng bit cập nhập (dirty bit)– Bit cập nhật = 1: nội dung trang ñã bị thay ñổi � cần lưu lại trên ñĩa
– Bit cập nhật = 0: nội dung trang không bị thay ñổi � không cần lưu lại trên ñĩa
11/07/08 16
Một phần tử trong bảng trang
Page number Valid bit Dirty bit
11/07/08 17
Hiệu quả của phân trang theo yêu cầu
• Gọi p là xác suất xảy ra lỗi trang:– P = 0: không có lỗi trang– P = 1: mỗi truy xuất ñến bộ nhớ ñều có lỗi trang
• MA: thời gian truy xuất ñến bộ nhớ chính• TDP: thời gian xử lý lỗi trang = [+ swapout] + swapin
+ tái kích họat• TEA: thời gian thật sự ñể thực hiện một truy xuất bộ
nhớTEA = (1-p)MA + p*TDP • Mấu chốt là p: p càng thấp thì hiệu quả của phân
trang theo yêu cầu càng cao
11/07/08 18
Thuật toán thay thế trang
• Ý tưởng chính:– Chọn trang nạn nhân là trang mà sau khi
thay thế sẽ gây ra ít lỗi trang nhất.
• Các thuật toán:– FIFO
– Tối ưu (ít sử dụng nhất trong tương lai)
– LRU
– Xấp xỉ LRU
11/07/08 19
Thuật tóan FIFO• Ý tưởng:
– Ghi nhận thời ñiểm một trang ñược ñưa vào bộnhớ
– Thay thế trang ở trong bộ nhớ lâu nhất• Có thể không cần ghi nhận thời ñiểm ñưa mộ trang
vào bộ nhớ. Sử dụng danh sách trang theo kiểu FIFO � trang thay thế luôn là trang ñầu
• Dễ hiểu, dễ cài ñặt, nhưng không lôgic trong trường hợp những trang ñầu tiên ñược nạp vào thường những trang quan trọng, chứa dữ liệu truy xuất thường xuyên � chuyển nó ra sẽ gây lỗi trang cho những lần truy xuất sau
• Nghịch lý Belady: số lượng lỗi trang sẽ tăng lên nếu số lượng khung trang tăng lên.
11/07/08 20
Thuật toán tối ưu
• Ý tưởng:– Thay thế trang sẽ ñược lâu sử dụng nhất
trong tương lai.
• Hoàn hảo về mặt ý tưởng nhưng không khả thi về mặt thực tế– Làm sao dự ñoán ñược chuỗi các trang
truy xuất trong tương lai.
11/07/08 21
Thuật toán “Lâu nhất chưa sửdụng” (Least-recently-used LRU)• Ý tưởng:
– Ghi nhận thời ñiểm cuối cùng trang ñược truy cập
– Thay thế trang chưa ñược truy cập lâu nhất
• Dùng quá khứ gần ñể dự ñoán tương lai– FIFO: thời ñiểm nạp vào– Tối ưu: thời ñiểm sẽ truy cập
11/07/08 22
Least-recently-used LRU
• Các cách cài ñặt:– Sử dụng bộ ñếm
• Mỗi phần tử trong bảng trang có một thành phần ghi nhận thời ñiểm truy xuất mới nhất.
• CPU có một bộ ñếm, tăng khi có một truy xuất ñến bộ nhớ
• Cập nhật thời ñiểm theo bộ ñếm• Trang có thời ñiểm truy xuất nhỏ nhất sẽ bị
thay thế– Sử dụng stack
• Lưu các số hiệu trang• Khi một trang ñược truy xuất � chuyển số
hiệu trang lên ñầu stack• Thay thế trang có số hiệu ở ñáy stack
11/07/08 23
• LRU ñòi hỏi phần cứng hỗ trợ khá nhiều– Biến bộ ñếm
– Stack
• Tìm các thuật toán xấp xỉ LRU
11/07/08 24
Thuật toán xấp xỉ LRU• Có 3 thuật toán
– Sử dụng nhiều bit tham khảo (reference bit)– Cơ hội thứ hai– Cơ hội thứ hai cải tiến
• Ý tưởng chính: bit tham khảo ñược thêm vào mỗi phần tử trong bảng trang– Ban ñầu = 0– Có truy xuất � 1– Sau mỗi chu kỳ qui ñịnh trước, kiểm tra bit
này và gán nó trở lại là 0.– Biết ñược trang nào ñã ñược truy xuất gần
ñây nhưng không biết ñược thứ tự truy xuất.
11/07/08 25
Thuật toán nhiều bit tham khảo
• Ý tưởng:– 1 bit tham khảo chỉ biết ñược thông tin của 1 chu
kỳ– Nhiều bit tham khảo sẽ biết ñược thông tin của
nhiều chu kỳ.• Sử dụng thêm 8 bit tham khảo cho mỗi phần tử trong
bảng trang• Sau một chu kỳ, một ngắt ñược phát sinh, HðH sẽ
ñặt bit tham khảo của trang ñó (0 hoặc 1) vào bit cao nhất trong 8 bit, loại bỏ bit cuối cùng (thấp nhất)
• 8 bit sẽ lưu trữ tình hình truy xuất ñến trang trong 8 chu kỳ gần nhất
• 10001000 sẽ tốt hơn 01111111• Nếu xem là số nguyên không dấu thì trang ñược
thay thế là trang có số tương ứng nhỏ nhất.
11/07/08 26
Thuật toán cơ hội thứ hai
• Ý tưởng:– Sử dụng một một bit tham khảo duy nhất– Ý tưởng như FIFO có cải tiến
• Nếu bit tham khảo = 0 � thay thế trang• Ngược lại, cho trang này cơ hội thứ hai ñặt
bit tham khảo về 0, chọn trang FIFO kếtiếp. Trang ñược cho cơ hội thứ hai ñặt vào cuối hàng ñợi.
• Một trang ñã ñược cho cơ hội thứ hai sẽ không bị thay thế trước khi các trang còn lại bị thay thế
• Có thể cài ñặt bằng một xâu vòng (danh sách liên kết vòng).
11/07/08 27
Thuật toán cơ hội thứ hai nâng cao
• Ý tưởng:– Xét cặp bit: reference bit và dirty bit– (0,0): không truy xuất, không sửa ñổi � trang tốt nhất ñể
thay thế.– (0,1): không truy xuất, có sửa ñổi � cần lưu lại trang thay
thế.– (1,0): có truy xuất, chưa sửa ñổi � có khả năng sẽ ñược sử
dụng tiếp.– (1,1): có truy xuất, có sửa ñổi � có khả năng ñược sử dụng
tiếp và nếu thay thế cần lưu lại.– Lớp ñầu tiên có ñộ ưu tiên thấp nhất và lớp cuối cùng có ñộ
ưu tiên cao nhất.
11/07/08 28
Cấp phát khung trang
• Trả lời câu hỏi:– Mỗi tiến trình sẽ ñược cấp phát bao nhiêu
khung trang?
• Các hướng tiếp cận:– Cấp phát cố ñịnh:
• Cấp phát công bằng• Cấp phát theo tỉ lệ
– Cấp phát theo ñộ ưu tiên
11/07/08 29
Cấp phát cố ñịnh
• Mỗi tiến trình sẽ ñược cấp phát một số lượng khung trang cố ñịnh ngay từ ñầu cho ñến khi kết thúc thi hành.
• Có 2 hướng– Cấp phát công bằng
• M khung trang, n tiến trình � mỗi tiến trình m/n
– Cấp phát theo tỉ lệ• Si: kích thước bộ nhớ ảo của tiến trình I• S = sum(Si)• M khung trang• Tiến trình I sẽ có: (Si/S)*M khung trang
11/07/08 30
Cấp phát theo ñộ ưu tiên
• Số khung trang dành cho mỗi tiến trình phụ thuộc vào ñộ ưu tiên của tiến trình tại thời ñiểm xác ñịnh.
• Nếu tiến trình pi phát sinh lỗi trang, chọn một trong các khung trang của nó ñể thay thế hoặc một khung trang của các tiến trình có ñộ ưu tiên thấp hơn.
11/07/08 31
Thay thế toàn cục và Thay thế cục bộ
• Thay thế toàn cục– Trang “nạn nhân” có thể là bất cứ khung trang
nào của hệ thống, không nhất thiết phải là khung trang của tiến trình ñó.
• Thay thế cục bộ
– Trang nạn nhân là một trong số khung trang của tiến trình ñó.
• Có vẻ thay thế toàn cục sẽ linh hoạt hơn nhưng cóthể gây ra hiệu ứng trì trệ hệ thống (thrashing)
• Thrashing: tự ñọc tài liệu
11
Hệ thống quản lý tập tin
22
Tổng quan
• Khái niệm cơ bản• Mô hình quản lý tập tin• Cài ñặt hệ thống quản lý tập tin• Truy xuất hệ thống quản lý tập tin
33
Các khái niệm cơ bản
• Bộ nhớ ngoài (secondary storage)– Có khả năng lưu trữ dữ liệu trong thời gian dài– Công dụng:
• Dữ liệu có kích thước rất lớn � bộ nhớ trong không ñủ ñểchứa
• Phải ñược lưu lại trong thời gian dài, ngay cả khi chươngtrình không chạy
• Tập tin– Là ñơn vị lưu trữ thông tin cơ bản của bộ nhớ ngoài– Là sự trừu tượng hóa của bộ nhớ ngoài– ðược quản lý bởi hệ ñiều hành– Có một tên– Tập hợp các sector
44
Các khái niệm cơ bản
• Thư mục– Là một tập tin ñặc biệt, có thể lưu trữ nhiều tập tin
khác.
• Hệ thống quản lý tập tin– Là một phần của hệ ñiều hành cung cấp các chức
năng quản lý tập tin (thư mục) như:• Cách hiển thị tập tin• Cách ñặt tên tập tin• Tổ chức thông tin của tập tin• Thao tác trên tập tin• Sử dụng và bảo vệ tập tin
55
Mô hình quản lý tập tin
• Cách ñặt tên:– Phụ thuộc vào hệ ñiều hành– Thường là các chữ cái và số
– Phân biệt chữ hoa, chữ thường???– Chia làm 2 phần ñược phân cách bởi dấu “.”:
• Phần tên: tên của tập tin• Phần mở rộng: ñể xác ñịnh loại tập tin
66
Cấu trúc của tập tin
• Có thể chia làm 3 loại– Dãy tuần tự các byte không cấu trúc– Dãy các record có kích thước cố ñịnh– Cấu trúc cây: gồm nhiều record, không nhất
thiết phải có kích thước bằng nhau. Mỗirecord có thể có khóa ñể tìm kiếm nhanh hơn.
77
Phân loại các kiểu tập tin
• Tập tin bình thường:– Tập tin văn bản: có phân biệt ký tự xuống
dòng � thích hợp với các chương trình soạnthảo
– Tập tin nhị phân: có qui ñịnh cấu trúc riêng.
• Thư mục: là tập tin dùng ñể lưu trữ cáctập tin khác
• Tập tin dành riêng cho hệ ñiều hành: thường ñược gắn với một thiết bị phầncứng.
88
Truy xuất tập tin
• Truy xuất tuần tự– ðể ñến ñược byte (record) thứ i phải ñi qua i
byte (record) trước ñó.
• Truy xuất ngẫu nhiên
99
Các thuộc tính của tập tin
• Mô tả các thông tin của tập tin• Ví dụ:
– Bảo vệ: ai ñược quyền truy xuất.– Ngày giờ tạo tập tin– …
1010
Hệ thống thư mục
• Thư mục chứa nhiều entry, mỗi entry tương ứngvới một tập tin.
• Entry chứa:– Tên tập tin, thuộc tính, ñịa chỉ trên bộ nhớ ngoài lưu
tập tin.– Hoặc tên tập tin và một con trỏ trỏ ñến cấu trúc chứa
thuộc tính, ñịa chỉ trên bộ nhớ ngoài.• Một tập tin luôn nằm trong một thư mục � khi
có yêu cầu mở một tập tin, HðH tìm trên thưmục ñã chỉ ra cho ñến kho tìm ñược tập tin cầntìm, ñưa vào bộ nhớ chính. Thao tác sau ñó hầuhết sẽ làm việc trên bộ nhớ chính.
1111
Hệ thống thư mục
• Theo dạng thư mục ñơn:– Chỉ có một thư mục và mọi tập tin ñều ñặt trong thư
mục ñó � khó ñặt tên tập tin vì có thể trùng nhau.
• Theo dạng hai cấp:– Có một thư mục gốc, trong thư mục gốc có nhiều thư
mục con và các tập tin sẽ ñược lưu vào trong các thưmục con.
• Theo dạng ña cấp– Có một thư mục gốc, một thư mục có thể chứa các
thư mục con và các tập tin.
1212
Hệ thống thư mục 1 cấp
1313
Hệ thống thư mục 2 cấp
1414
Hệ thống thư mục ña cấp(cấu trúc cây)
1515
Hệ thống thư mục ña cấp(không có chu trình)
1616
Hệ thống thư mục tổng quát
1717
ðường dẫn
• ðường dẫn: cho phép xác ñịnh vị trí của tập tin trong hệ thống thư mục.
• Trong hệ thống thư mục theo kiểu ña cấp (câythư mục) có hai cách ñể xác ñịnh một tập tin.
• ðường dẫn tuyệt ñối: mỗi tập tin ñược gán mộtñường dẫn từ thư mục gốc ñến tập tin.
• ðường dẫn tương ñối: người dùng có thể qui ñịnh một thư mục hiện hành, mọi ñường dẫnkhông cần chỉ ra từ thư mục gốc mà chỉ cần chỉra từ thư mục hiện hành
• Lưu ý: “.” thư mục hiện hành, “..” thư mục cha
1818
Các chức năng
• Tập tin:– Tạo– Xóa– Mở– ðóng– ðọc– Ghi– Thêm– Tìm– Lấy thuộc tính và thay ñổi thuộc tính– ðổi tên
1919
• Thư mục:– Tạo– Xóa– Mở (thư mục)– ðóng– ðọc thư mục– ðổi tên– Liên kết– Bỏ liên kết
Các chức năng
20
Hệ Thống Quản Lý Tập Tin
• ðóng vai trò trung gian nhờ vào ñó ngườidùng chỉ cần cung cấp tên có thể xác ñịnhñược tập tin nằm ở những sector nào.
• Hai ñối tượng chủ yếu trên HTQLTT là tậptin và thư mục.
21
Hệ Thống Quản Lý Tập Tin
• Multi System là cơ chế cho phép trên 1 ñĩa cứng có nhiều hệ ñiều hành.
• Mỗi vùng trên ñĩa cứng thuộc về một hệñiều hành gọi là 1 partition.
• Một hệ ñiều hành có thể có nhiều partition khi ñó nó sẽ có 1 partition chính: primary partition, còn lại là extended partition.
22
Hệ Thống Quản Lý Tập Tin
• Khi ñĩa cứng có nhiều hệ ñiều hành phảitồn tại 1 hệ ñiều hành ñược khởi ñộng ñầutiên thì partition chính của hệ ñiều hành ñóñược gọi là active.
• ðể quản lý các partition, ta sử dụng sector ñầu tiên trên ñĩa gọi là Master Boot Record. Mỗi partition sẽ chiếm 16 bytes thông tin trên Master Boot Record
23
Hệ Thống Quản Lý Tập Tin• Mỗi partition sẽ chiếm 16 bytes thông tin trên
Master Boot Record
Khoảng cách từ Master Boot ñến partition
48
Dung lượng partition412
Sector kết thúc17
Track kết thúc16
Head kết thúc15
F9 – DOS, FA -Win
Byte mô tả loại hệ ñiều hành14
Sector bắt ñầu13
Track bắt ñầu12
Head bắt ñầu11
80h hoặc 0Active partition10
Ví dụÝ Nghĩaðộ lớnOffset
24
Hệ Thống Quản Lý Tập Tin
• Mutil Volume: là cơ chế cho phép trên 1 partition có thểchia nhỏ ra nhiều phần. Mỗi phần ñược gọi là 1 volume.
• Mỗi volume sẽ tương ứng với 1 ổ ñĩa logic.• Một volume sẽ có cấu trúc như sau:
• Với DOS, Win, 1 partition thường tương ứng với 1 volume, 1 ổ ñĩa logic
• ðiã mềm ñược xem là 1 volume.
DataQuản lýBoot Sector
2525
Cài ñặt hệ thống quản lý tập tin
• Mỗi tập tin ñược lưu trên nhiều block (khối) khác nhaucủa 1 volume.Mỗi block có kích thước 2k sector và ñánhsố từ 0.
• ðĩa mềm 1 block = 1 sector. Một block có các trạng tháisau:– Free: chưa thuộc về tập tin nào– Used: thuộc vào duy nhất một tập tin
• Vấn ñề là hệ thống cần phải biết tất cả các khối của mộttập tin nào ñó � bảng phân phối vùng nhớ
• Các phương pháp chính– ðịnh vị liên tiếp (mô hình tuần tự)– ðịnh vị bằng chỉ số (mô hình Index)– ðịnh vị bằng danh sách liên kết (Mô hình liên kết)– ðịnh vị bằng danh sách liên kết sử dụng chỉ số (Mô hình liên kết
chỉ số)– I-node
2626
ðịnh vị liên tiếp• Các khối của tập tin ñược cấp phát liên tiếp
nhau � chỉ cần lưu khối ñầu tiên và kích thướccủa tập tin.
• Cấu trúc một ô của vùng quản lý:Struct oquanly {
char filename[11];int blockbatdau;long size;
}
• Ưu ñiểm:– Dễ cài ñặt– ðọc nhanh
• Khuyết ñiểm:– Không thể lưu trữ khi bị phân mảnh
– Phải biết kích thước tối ña của tập tin
2727
ðịnh vị liên tiếp
2828
ðịnh vị chỉ số• Cấu trúc một ô của vùng quản lý:
Struct oquanly {char filename[11];
int blockIndex[max];//mảng chỉ số các blocklong size;
}• Ưu ñiểm:
– Có thể lưu trữ khi phân mảnh– ðọc nhanh
• Khuyết ñiểm:– Giới hạn kích thước tập tin
2929
ðịnh vị bằng danh sách liên kết
• Các khối của một tập tin sẽ trỏ ñến khối kếtiếp. Khối cuối cùng trỏ ñến NULL � chỉcần lưu khối ñầu tiên.
• Ưu ñiểm:– Không bị phân mảnh
• Khuyết ñiểm– Truy xuất tuần tự
3030
ðịnh vị bằng danh sách liên kết
3131
ðịnh vị bằng DSLK sử dụng chỉsố
• Thay vì dùng con trỏ, sử dụng chỉ số ñểliên kết các khối.
• Ưu ñiểm:– Có thể truy xuất ngẫu nhiên
• Khuyết ñiểm:– Giới hạn kích thước bảng chứa các chỉ số liên
kết
3232
33
Câu Hỏi
• Master Boot Record là gì? Một ổ cứng có thểchia tối ña bao nhiêu partion? Một Partion cóphải luôn tương ứng với một ổ ñĩa Logic (ví dụC D) hay không?
• Theo phương pháp ñịnh vị bằng chỉ số, nếu mộtô quản lý có kích thước 59 bytes thì giới hạnkích thước một tập tin là bao nhiêu trong trườnghợp 1 block = 1KB.
• Bạn ñang ở thư mục “C:\Documents and Settings\All Users” hãy viết ñường dẫn tươngñối ñến “C:\Windows”?
3434
ðịnh vị bằng I-node
• I-node gồm 2 phần: phần lưu thuộc tính và phầnñịa chỉ.
• Phần ñịa chỉ có thể chia làm 2 phần– Phần ñầu: 10 phần tử chứa ñịa chỉ trực tiếp của 10
khối ñầu tiên– Phần tử thứ 11 chứa ñịa chỉ của một khối mà khối ñó
chứa 210 phần tử, mỗi phần tử chứa ñịa chỉ của mộtkhối thật sự của tập tin
– Phần tử thứ 12 chứa ñịa chỉ của một khối mà mỗiphần tử trong khối như là phần tử thứ 11.
– Phần tử thứ 13 chứa ñịa chỉ của một khối mà mỗiphần tử trong khối như là phần tử thứ 12.
3535
3636
0
1
10
11
12
…
…
…
…
…
… …
37
Mô hình tổ chức Volume của UNIX
• Theo dạng inode
DataDanhsáchinode
Khối khởiñộng
Boot Sector
Khối khởi ñộng chứa chương trình khởi ñộng.
Danh sách các inode ñược phân thành các ô. Mỗiô gọi là một inode (64 bytes)
Mỗi inode quản lý cho một tập tin hoặc một thưmục con.
38
Mô hình tổ chức Volume của UNIX
13
1211109
8765
4321(3bytes)
25 bytes thông tin về tập tin và thư mụccon (tên, thuộc tính, quyền sở hữu....)
39 bytes phân thành 13 ô. Mỗi ô chứ chỉ số của 1 block.
10 ô ñầu tiên chứa chỉ sốblock dữ liệu của tập tin.
Ô 11 chứa chỉ số block màblock ñó ñược phân thànhnhiều ô (3 bytes) chứa chỉsố block dữ liệu.
Ô 12 chứa chỉ số block mà block này ñược chia thành các ô. Mỗi ô chứa chỉ sốcủa 1 block có vai trò như của ô 11.
Ô 12 chứa chỉ số block mà block này ñược chia thành các ô. Mỗi ô chứa chỉ sốcủa 1 block có vai trò như của ô 12.
3939
Quản lý ñĩa
• Tập tin ñược lưu trên ñĩa � lưu như thếnào?– Lưu trên n byte liên tiếp � tập tin lớn thì quản
lý khó– Lưu trên các khối � thường dùng
• Kích thước khối hầu như ñược ñặt là512byte (1 sector chuẩn)– Có thể là 1K, 2K
4040
Lưu danh sách khối trống
• Công dụng:– Nhanh chóng xác ñịnh khối ñể cấp phát khi có nhu
cầu lưu tập tin hoặc tạo mới tập tin.
• Các phương pháp:– Bảng bit:
• N khối � n bit.• Bit = 0 � khối còn trống• Bit = 1 � khối ñã sử dụng• Kích thước bảng bit: disk size / (8 * block size)• Ví dụ: ñĩa 16Gb, block 512 byte � bảng bit chiếm 4MB
4141
• Các phương pháp lưu khối trống– Danh sách các vùng trống
• Mỗi phần tử bao gồm vị trí bắt ñầu và kích thướccủa vùng trống
– Danh sách khối trống• Mỗi khối ñược gán một con số
• Danh sách các khối trống ñược lưu trong một vùngdành riêng
4242
Giới thiệu về hệ thống quản lýquyền sở hữu file của UNIX
• Tiến trình và file ñều ñược sở hữu bởi mộtngười dùng nào ñó.
• Một tập tin sẽ có user owner và group owner– Chủ sở hữu có quyền kiểm soát chính và có thể bị
tước ñọat bởi root (user cao nhất).– Mỗi file có một chủ sở hữu chính và thuộc vào một
hay nhiều nhóm chủ sở hữu.– Chủ sở hữu có thể xác ñịnh quyền truy cập cho mọi
thành viên còn lại (trừ root) bằng chmod.– Người sở hữu không nhất thiết phải thuộc về một
nhóm sở hữu tập tin.
4343
Hệ thống FAT 12, 16, 32
• Mô hình này ñược áp dụng cho hệ ñiều hànhDOS và Windows.
• FAT1 và FAT2 là hai bảng giống nhau. FAT2 là bảng dự phòng của FAT1.
• FAT (File Allocation Table) ñược phân thànhcác ô, mỗi ô quản lý trong 1 block.– Ô thứ i quản lý Block thứ i-2– Kích thước mỗi ô có thể là 12, 16 hay 32 Bit.
BS FAT1 FAT2 DIRECTORY Data
Vùng quản lý Vùng dữ liệu
4444
Hệ thống FAT 12, 16, 32
• FAT (File Allocation Table) ñược phânthành các ô, mỗi ô quản lý trong 1 block.– Ô thứ I quản lý Block thứ i-2– Kích thước mỗi ô có thể là 12, 16 hay 32 Bit.– Giá trị của các ô có thể là:
• 0 là free• FF7 là bad• FF8 – FFF là cuối file• Khác là ô tiếp theo
BS FAT1 FAT2 DIRECTORY Block 0 1 2 3 …
Vùng quản lý Vùng dữ liệu
4545
Hệ thống FAT 12, 16, 32
• Root Directory ñược phân thành các ô, mỗi ô quản lý cho 1 tập tin hay thư mục.– Mỗi ô của Root Directory có kich thước 32
bytes
– Cấu trúc 32 bytes này như sau:
BS FAT1 FAT2 DIRECTORY Block 0 1 2 3 …
Vùng quản lý Vùng dữ liệu
4646
Hệ thống FAT 12, 16, 32BS FAT1 FAT2 DIRECTORY Block 0 1 2 3 …
Vùng quản lý Vùng dữ liệu
Kích thước file428
chỉ số ô ñàu tiêntrên bảng FAT
226
Giờ tạo224
Ngày tạo222
Chưa dùng ñến1012
Thư mục con (16) hay tập tin (>=32)
111
Extension38
Filename80
Ý nghĩaðộ lớnOffset
Cấu trúc một ô của Root Directory
47
Thông tin về mô hình FAT trên ñĩamềm 1,4 MB
• Có 2880 sector• Vùng quản lý gồm 32 sector:
– FAT1: 9 sector– FAT2: 9 sector– Root Directory: 14 sector. Chia thành
(14*512)/32=224 ô. � có tối ña 224 tập tin trên thưmục gốc.
• Vùng dữ liệu 2847 sector.• Thư mục con cũng chiếm một số block trên
volume. Nội dung của các block này sẽ có cấutrúc như Root Directory. Nghĩa là cũng phânthành các ô, mỗi ô quản lý cho 1 tập tin.
48
Ví dụ• Trên thư mục gốc có tập tin emoi.c (5,2,7): dự
liệu của tập tin emoi trên các block 5, 2, 7 hay nói cách khác chỉ số cá ô quản lý là ô (7,4,9), tập tin m.txt (9,4,3) và thư mục L (6). Hãy vẽbảng FAT, Root Dir?
• Nhắc lại: ô thứ I của FAT quản lý block thứ i-2.• Root Dir ñược chia thành các ô (32 bytes), ta
tập trung vào thể hiện 4 thông tin tên file, phầnmở rộng, giá trị byte 11 biểu diễn tập tin hay thưmục và giá trị bytes26-27 biểu chỉ số ô ñầu tiêntrong bảng FAT.
49
Ví dụ
60 (free)
FFFFFF
45
FFF9
0 (free)0 (free)
816L
1132txtm
732c emoi
32 là thư mục; 16 là tập tin
7, 11, 8 là chỉ số ô ñầu tiêntrong bảng FAT của tập tin emoi.c, m.txt và thư mục L.
Ô thứ 0
50
Ví dụ
• Giả sử thư mục L (6) trong ví dụ chứa tập tin A(1) và B.doc(8) thì nội dung của block 6 nhưsau:
1032docB
332A
016..
816. Chỉ số ô FAT ñầu tiêncủa thư mục hiện hành
Chỉ số ô FAT ñầu tiêncủa thư mục cha nếucha là thư mục gốc thìbằng 0
Block
51
Ví dụ• Giả sử thư mục L (6) trong ví dụ chứa tập tin A(1) và
B.doc(8) thì nội dung của block 6 và bảng FAT như sau:
1032docB
332A
016..
816.
6FFF
FFFFFF
45
FFF9
FFF0 (free)
52
Bài tập FAT và RD
• Dung lượng ñĩa sẽ quyết ñịnh kích thước 1 ô trênbảng FAT.
• FAT12 � 212 ô = 4096 ô � tối ña là 4094 block. (vìmỗi ô quản lý 1 block) Tính toán khoảng gần ñúng.
• Ví dụ: cho ñĩa có dung lượng 20MB. Mỗi block là 2 sector. Hỏi ñĩa sử dụng bảng FAT nào là hợp lý?
– Số ô = số block + 2 = (20*10242)/(2*512) = 5*212+2 < 215 --> Nên dùng FAT 16.
• Nếu dùng FAT 32 thì sao?– Mỗi block có kích thước nhỏ ñi � 1 block có thể
chỉ là 1 sector.
53
Bài tập FAT và RD• Cho một volume có 20 block như sau• Thư mục gốc \:
– E (0)• M.TXT (1,19,18)• C (2)
– U.TXT (4,5)– V (6)
» N.TXT (7,8)» I.TXT (9,10)
– M.TXT (3,17,16)• Hãy vẽ FAT, RD và các block liên quan (block nội dung
của thư mục có cấu trúc tượng tự RD thêm vào . và ..) .• Quy ước có phần mở rộng là tập tin, có chứa con thì sẽ
phải là thư mục.
Cho một ñĩa có dung lượng 40GB. Mỗi block gồm 16 sector. Hỏi ta sửdụng bảng FAT nào là thích hợp nhất?
54
Câu Hỏi Ôn tập
1. So sánh thời gian các lệnh copy, move, delete trong tất cả các trường hợp có thể có.
2. Tại sao trong UNIX không có system call detete(…) ñể xoá file mà chỉ có system call unlink(…) ñể xoá một link ñến file?
3. Trình bày các thao tác của DOS/Win khi tiếnhành khi delete một file?
1
Hệ thống quản lý nhập/xuất
2
Tổng quan
• Giới thiệu về thiết bị nhập xuất• Các kỹ thuật quản lý thao tác nhập xuất• Các vấn ñề về thiết kế hệ thống quản lý
nhập xuất trong HðH• Kỹ thuật vùng ñệm nhập xuất• Quản lý hệ thống nhập xuất ñĩa
3
Phân loại các thiết bị nhập/xuất
• Human readable– Dùng ñể giao tiếp với người dùng– Máy in– Thiết bị ñầu cuối liên quan ñến hiển thị
• Màn hình hiển thị
• Bàn phím• Chuột
4
Phân loại các thiết bị nhập/xuất (2)
• Machine readable– Dùng ñể giao tiếp với thiết bị ñiện tử– ðĩa
5
Phân loại các thiết bị nhập/xuất (2)
• Giao tiếp– Dùng ñể giao tiếp với các thiết bị ở xa
(remote device)– Modem
6
Sự khác nhau giữa các thiết bịI/O
• Tốc ñộ
• Ứng dụng• Mức ñộ phức tạp ñể kiểm soát• ðơn vị truyền• Biểu diễn dữ liệu• Phát sinh lỗi
8
Sự khác nhau giữa các thiết bị I/O (2)
• Ứng dụng– ðĩa dùng ñể lưu trữ ñòi hỏi phải có hệ thống
quản lý tập tin ñi kèm– ðĩa dùng ñể làm bộ nhớ ảo ñòi hỏi phải có sự
hỗ trợ phần cứng và phần mềm.– Các thiết bị ñầu cuối ñược sử dụng bởi quản
trị sẽ có ñộ ưu tiên cao hơn.
9
Sự khác nhau giữa các thiết bị I/O (3)
• ðộ phức tạp ñể kiểm soát:– Máy in so với ñĩa
• ðơn vị truyền– Có thể ñược truyền theo byte hoặc khối (có thể là bit)
• Biểu diễn dữ liệu– Cơ chế mã hóa
• Phát sinh lỗi– Thiết bị khác nhau xử lý lỗi phát sinh khác nhau
10
Kỹ thuật xử lý I/O
• Programmed I/O– Tiến trình phải busy-waiting cho thao tác nhập
xuất hoàn thành
• Interrupt-driven I/O– Phát sinh lệnh I/O– Bộ xử lý tiếp tục thực thi các chỉ thị khác– Module I/O gởi một ngắt ñến bộ xử lý khi
hoàn thành thao tác I/O
11
Kỹ thuật quản lý I/O (2)
• Direct Memory Access (DMA)– Module DMA ñiều khiển việc chuyển ñổi dữ
liệu giữa bộ nhớ chính và thiết bị I/O– Bộ xử lý chỉ bị ngắt khi toàn bộ khối ñã ñược
chuyển
12
Lịch sử phát triển của quản lý I/O
• Bộ xử lý trực tiếp ñiều khiển thiết bị ngoại vi
• Bộ ñiều khiển (Controller) hay module I/O module ñược thêm vào– Bộ xử lý dùng programmed I/O không có hỗ
trợ ngắt– Bộ xử lý không cần phải quản lý chi tiết các
thiết bị ngoại vi
13
Lịch sử phát triển của quản lý I/O
• Bộ ñiều khiển hoặc module I/O module cóhỗ trợ ngắt– Bộ xử lý không cần phải bỏ thời gian chờ thao
tác I/O thi hành
• Direct Memory Access– Khối dữ liệu ñược chuyển vào bộ nhớ mà
không cần xử lý của bộ xử lý– Bộ xử lý chỉ liên quan vào lúc bắt ñầu và lúc
kết thúc chuyển khối.
14
Lịch sử phát triển của quản lý I/O
• Module I/O là một bộ xử lý riêng biệt– Có tập lệnh chuyên biệt
• Bộ xử lý I/O– Module I/O có bộ nhớ riêng
15
Các vấn ñề thiết kế liên quan ñến HðH
• Tính hiệu quả– Hầu hết các thiết bị I/O ñều rất chậm so với
bộ nhớ chính• Sử dụng cơ chế ña chương cho phép một vài tiến
trình chờ I/O trong khi tiến trình khác thi hành
– Cơ chế swapping• Bản chất cũng là thao tác nhập/xuất
16
Các vấn ñề thiết kế liên quan ñến HðH
• Tính tổng quát– Mong muốn xử lý tất cả các thiết bị I/O giống
nhau– Che giấu hầu hết chi tiết của thiết bị nhận
xuất ñể tiến trình (mức cao) xem các thiết bị ởmột vài chức năng thông dụng như read, write, open, close, lock, unlock
17
Mô hình lôgic các chức năng nhập xuất
• Giao tiếp ñơn giản (thiết bị ngoại vi cục bộ)– Logical I/O– Device I/O– Scheduling and Control
• Giao tiếp thông quan cổng kết nối– Communication architecture– Device I/O– Scheduling and Control
18
Mô hình lôgic các chức năng nhập xuất
• Hệ thống tập tin– Directory management– File system– Physical organization– Device I/O– Scheduling and Control
20
Kỹ thuật vùng ñệm nhật/xuất
• Lý do– Các tiến trình phải chờ hoàn thành I/O trước
khi xử lý tiếp– Thao tác I/O vẫn phải tốn bộ nhớ
21
Kỹ thuật vùng ñệm nhật/xuất (2)
• Các thiết bị I/O có hai dạng hỗ trợ nhập/xuất cơ bản:– Hướng khối (block – oriented)– Hướng dòng (stream – oriented)
• Block-oriented– Thông tin ñược lưu trong những khối có kích thước cho trước– ðơn vị chuyển là một khối / một lần– Dùng cho ñĩa
• Stream-oriented– Truyền thông tin như là một dòng các byte– Dùng cho các thiết bị ñầu cuối, máy in, chuột, cổng giao tiếp,…
22
Single Buffer
• HðH dành riêng một vùng ñệm trong bộ nhớchính cho thao tác I/O
• Block-oriented– Dữ liệu vào ñược chuyển vào vùng ñệm theo ñơn vị
khối– Khối ñó sẽ chuyển ñến cho tiến trình người dùng khi
cần– Khối khác ñược chuyển vào vùng ñệm, trong khi tiến
trình ñang xử lý khối trước ñó.
• Stream-oriented– Như khối nhưng với ñơn vị là dòng. Một dòng ñược
kết thúc bởi dấu CF.
23
I/O Buffering
24
Double Buffer
• Dùng hai vùng ñệm thay vì một• Một tiến trình có thể chuyển dữ liệu vào và
ra một vùng ñệm trong khi hệ ñiều hành truyền thông tin hoặc thao tác trên vùng ñệm còn lại
25
Circular Buffer
• Nhiều hơn hai vùng ñệm• Trong trường hợp thao tác nhập xuất gắn
liền với tiến trình.
26
I/O Buffering
27
Nhắc lại cấu trúc ñĩa
• Các thành phần của ñĩa– platters– surfaces– tracks– sectors– cylinders– arm– heads
platter
surface
tracksector
cylinder
arm
head
28
Các tham số liên quan ñến hiệu năng truy xuất ñĩa
• ðể ñọc hay ghi, ñầu ñĩa phải di chuyển ñến track và sector tương ứng
• Seek time– Thời gian dùng ñể ñịnh vị ñầu ñĩa ñến track mong
muốn
• Rotational delay hoặc rotational latency– Thời gian dùng ñể di chuyển ñầu ñĩa ñến sector
tương ứng (vị trí ñầu tiên của sector)
• Transfer time– Thời gian chuyển dữ liệu (từ hoặc vào bộ nhớ chính)
29
Thời gian thi hành tác vụ I/O
30
Tham số hiệu năng ñĩa
• Access time = seek time + rotational delay– Thời gian ñể ñặt ñầu ñĩa và ñúng vị trí ñể ñọc
và ghi
• Dữ liệu sẽ ñược chuyển khi ñầu ñĩa nằm ñúng vị trí sector.
31
Chính sách lập lịch trên ñĩa
• Mấu chốt là Seek time.– Vì sao?
• Với một ñĩa có thể một số các yêu cầu I/O• Cần có cơ chế xử lý các yêu cầu này thích
hợp � tăng hiệu năng xử lý I/O
32
Chính sách lập lịch trên ñĩa (2)
• First-in, first-out (FIFO)– Xử lý yêu cầu một cách tuần tự– Công bằng cho tất cả tiến trình– Nếu nhiều tiến trình thì xác suất xem như là
ngẫu nhiên
33
Chính sách lập lịch trên ñĩa (3)
• Có ưu tiên– Mục tiêu không phải là tối ưu ñĩa mà ñể phục
vụ cho các mục tiêu khác– Các công việc có thời gian thi hành ngắn có
thể có ñộ ưu tiên cao hơn
– Khả năng tương tác cao
34
Chính sách lập lịch trên ñĩa (4)
• Last-in, first-out– Tốt cho các hệ thống xử lý giao dịch
(transaction processing system)• Thiết bị ñược giao cho người dùng gần ñây nhất� ñầu ñọc di chuyển ít nhất
– Có thể xảy ra tình trạng ñói (starvation)
35
Chính sách lập lịch trên ñĩa (5)
• First Come, First Service– Phương pháp này dễ lập trình nhưng không
cung cấp dịch vụ tốt.– Ví dụ: cần phải ñọc các khối theo thứ tự sau
98 183 37 122 14 75 và ñầu ñọc ñang ở vị trí59.
– ðầu ñọc sẽ lần lượt ñi qua các khối 59 98 183 37 122 12 75.
36
Chính sách lập lịch trên ñĩa (6)
• Shortest Service Time First (SSTF)– Chọn yêu cầu I/O mà ñòi hỏi ít di chuyển nhất
ñầu ñĩa từ vị trí hiện tại– Luôn luôn cho ra seek time nhỏ nhất.– Ví dụ: cần ñọc các khối 98 183 37 122 14 124
65 và 67. Giả sử ñầu ñọc ñang ở vị trí 53.– ðầu ñọc sẽ lần lượt qua các khối 53 65 67 37
4 98 122 124 183
37
Chính sách lập lịch trên ñĩa (7)
• SCAN– ðầu ñọc di chuyển theo một hướng nhất ñịnh.
Ví dụ cần ñọc các khối 98 183 37 122 14 124 65 67. Giả sử ñầu ñọc ở vị trí 53.
– ðầu ñọc sẽ lần lượt qua các khối 53 37 14 065 67 98 122 124 183 (theo SCAN ñịnhhướng về 0)
38
Chính sách lập lịch trên ñĩa (7)
• C-SCAN– Như SCAN, giới hạn chỉ di chuyển theo 1
chiều– Quay về vị trí bắt ñầu ngay khi ñụng track ở
xa nhất, không cần phải tiếp tục.– Ví dụ cần ñọc các khối 98 183 37 122 14 124
65 67. Giả sử ñầu ñọc ở vị trí 53.– ðầu ñọc sẽ lần lượt qua các khối 53 65 67 98
122 124 183 199 0 14 37
39
Disk Scheduling Algorithms
40
Câu hỏi ôn tập
– Ví dụ: cần ñọc các khối 98 183 124 65 12 và67. Giả sử ñầu ñọc ñang ở vị trí 53.
– ðầu ñọc sẽ lần lượt qua các khối nào và vẽsơ ñồ theo các thuật toán ñọc ñĩa FCFS, SSTF, SCAN và C-SCAN.
– Từ ñó kết luận xem cách ñọc nào tối ưu nhất.
41
ðịa chỉ tương ñối = (head, cylinder, sector)Head : 0 � Số mặt trên ñĩa – 1Cylinder: 0 � Số cylinder trên ñĩa – 1Sector : 1 � Số sector trên track
ðịa chỉ tuyệt ñối = head * Số sector/track + track * số sector/cylinder + sector - 1