hdh tom tat bai giang 2 slides per page

236
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 ging http://fit.hcmup.edu.vn/~haits http://www.box.net/shared/2v0t4sqeot Lê Khc Nhiên Ân, giáo trình “Hệñiu hành cơ bn”, ðHKHTN TPHCM TrnHnh Nhi, giáo trình “Hệñiu hành nâng cao”, ðHKHTN TPHCM Slide Slide bài gi ging ng http://fit.hcmup.edu.vn/~haits http://fit.hcmup.edu.vn/~haits http http ://www.box.net/shared/2v0t4sqeot ://www.box.net/shared/2v0t4sqeot Kh Khc Nhiên Nhiên Ân Ân , , gi giáo tr trì nh nh “Hñi ñiu hà nh nh cơ cơ bn” , , ðHKHTN TPHCM ðHKHTN TPHCM Tr TrnHnh nh Nhi Nhi , , gi giáo tr trì nh nh “Hñi ñiu hà nh nh nâng nâng cao cao” , , ðHKHTN TPHCM ðHKHTN TPHCM

Upload: meobongcute

Post on 01-Jul-2015

56 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: HDH Tom Tat Bai Giang 2 slides per page

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

Page 2: HDH Tom Tat Bai Giang 2 slides per page

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

Page 3: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 4: HDH Tom Tat Bai Giang 2 slides per page

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, ..

Page 5: HDH Tom Tat Bai Giang 2 slides per page

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å)

Page 6: HDH Tom Tat Bai Giang 2 slides per page

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

Page 7: HDH Tom Tat Bai Giang 2 slides per page

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

Page 8: HDH Tom Tat Bai Giang 2 slides per page

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

Page 9: HDH Tom Tat Bai Giang 2 slides per page

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;

}

Page 10: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 11: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 12: HDH Tom Tat Bai Giang 2 slides per page

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

Page 13: HDH Tom Tat Bai Giang 2 slides per page

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..

Page 14: HDH Tom Tat Bai Giang 2 slides per page

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).).

Page 15: HDH Tom Tat Bai Giang 2 slides per page

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 ..

Page 16: HDH Tom Tat Bai Giang 2 slides per page

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

Page 17: HDH Tom Tat Bai Giang 2 slides per page

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

Page 18: HDH Tom Tat Bai Giang 2 slides per page

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

Page 19: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 20: HDH Tom Tat Bai Giang 2 slides per page

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

Page 21: HDH Tom Tat Bai Giang 2 slides per page

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

Page 22: HDH Tom Tat Bai Giang 2 slides per page

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

Page 23: HDH Tom Tat Bai Giang 2 slides per page

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

Page 24: HDH Tom Tat Bai Giang 2 slides per page

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ớ

Page 25: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 26: HDH Tom Tat Bai Giang 2 slides per page

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

Page 27: HDH Tom Tat Bai Giang 2 slides per page

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()

Page 28: HDH Tom Tat Bai Giang 2 slides per page

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,

Page 29: HDH Tom Tat Bai Giang 2 slides per page

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

Page 30: HDH Tom Tat Bai Giang 2 slides per page

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

�……………..

Page 31: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 32: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 33: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 34: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 35: HDH Tom Tat Bai Giang 2 slides per page

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

Page 36: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 37: HDH Tom Tat Bai Giang 2 slides per page

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

Page 38: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 39: HDH Tom Tat Bai Giang 2 slides per page

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

Page 40: HDH Tom Tat Bai Giang 2 slides per page

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

Page 41: HDH Tom Tat Bai Giang 2 slides per page

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

Page 42: HDH Tom Tat Bai Giang 2 slides per page

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

Page 43: HDH Tom Tat Bai Giang 2 slides per page

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

Page 44: HDH Tom Tat Bai Giang 2 slides per page

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

Page 45: HDH Tom Tat Bai Giang 2 slides per page

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

Page 46: HDH Tom Tat Bai Giang 2 slides per page

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

Page 47: HDH Tom Tat Bai Giang 2 slides per page

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

Page 48: HDH Tom Tat Bai Giang 2 slides per page

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

Page 49: HDH Tom Tat Bai Giang 2 slides per page

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

Page 50: HDH Tom Tat Bai Giang 2 slides per page

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

Page 51: HDH Tom Tat Bai Giang 2 slides per page

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

Page 52: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 53: HDH Tom Tat Bai Giang 2 slides per page

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,...

Page 54: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 55: HDH Tom Tat Bai Giang 2 slides per page

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!!!

Page 56: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 57: HDH Tom Tat Bai Giang 2 slides per page

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ệ

Page 58: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 59: HDH Tom Tat Bai Giang 2 slides per page

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

Page 60: HDH Tom Tat Bai Giang 2 slides per page

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

Page 61: HDH Tom Tat Bai Giang 2 slides per page

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

Page 62: HDH Tom Tat Bai Giang 2 slides per page

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

Page 63: HDH Tom Tat Bai Giang 2 slides per page

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

Page 64: HDH Tom Tat Bai Giang 2 slides per page

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

Page 65: HDH Tom Tat Bai Giang 2 slides per page

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

Page 66: HDH Tom Tat Bai Giang 2 slides per page

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?

Page 67: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 68: HDH Tom Tat Bai Giang 2 slides per page

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

Page 69: HDH Tom Tat Bai Giang 2 slides per page

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

Page 70: HDH Tom Tat Bai Giang 2 slides per page

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

Page 71: HDH Tom Tat Bai Giang 2 slides per page

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ả.

Page 72: HDH Tom Tat Bai Giang 2 slides per page

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ơ ñồ.

Page 73: HDH Tom Tat Bai Giang 2 slides per page

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

Page 74: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 75: HDH Tom Tat Bai Giang 2 slides per page

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;

Page 76: HDH Tom Tat Bai Giang 2 slides per page

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 ñề:

Page 77: HDH Tom Tat Bai Giang 2 slides per page

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

Page 78: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 79: HDH Tom Tat Bai Giang 2 slides per page

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;

}

}

Page 80: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 81: HDH Tom Tat Bai Giang 2 slides per page

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

Page 82: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 83: HDH Tom Tat Bai Giang 2 slides per page

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

Page 84: HDH Tom Tat Bai Giang 2 slides per page

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ữ.

Page 85: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 86: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 87: HDH Tom Tat Bai Giang 2 slides per page

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

Page 88: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 89: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 90: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 91: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 92: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 93: HDH Tom Tat Bai Giang 2 slides per page

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...

Page 94: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 95: HDH Tom Tat Bai Giang 2 slides per page

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ờ.

Page 96: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 97: HDH Tom Tat Bai Giang 2 slides per page

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;

}

Page 98: HDH Tom Tat Bai Giang 2 slides per page

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;

}

Page 99: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 100: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 101: HDH Tom Tat Bai Giang 2 slides per page

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

}

Page 102: HDH Tom Tat Bai Giang 2 slides per page

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);

}

Page 103: HDH Tom Tat Bai Giang 2 slides per page

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

Page 104: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 105: HDH Tom Tat Bai Giang 2 slides per page

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 }

}

Page 106: HDH Tom Tat Bai Giang 2 slides per page

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

Page 107: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 108: HDH Tom Tat Bai Giang 2 slides per page

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

Page 109: HDH Tom Tat Bai Giang 2 slides per page

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

Page 110: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 111: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 112: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 113: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 114: HDH Tom Tat Bai Giang 2 slides per page

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

Page 115: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 116: HDH Tom Tat Bai Giang 2 slides per page

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

Page 117: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 118: HDH Tom Tat Bai Giang 2 slides per page

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???

Page 119: HDH Tom Tat Bai Giang 2 slides per page

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

Page 120: HDH Tom Tat Bai Giang 2 slides per page

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

Page 121: HDH Tom Tat Bai Giang 2 slides per page

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

Page 122: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 123: HDH Tom Tat Bai Giang 2 slides per page

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);

Page 124: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 125: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 126: HDH Tom Tat Bai Giang 2 slides per page

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;

Page 127: HDH Tom Tat Bai Giang 2 slides per page

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;

}

Page 128: HDH Tom Tat Bai Giang 2 slides per page

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;

}

Page 129: HDH Tom Tat Bai Giang 2 slides per page

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;

Page 130: HDH Tom Tat Bai Giang 2 slides per page

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--;

}

Page 131: HDH Tom Tat Bai Giang 2 slides per page

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

Page 132: HDH Tom Tat Bai Giang 2 slides per page

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 =

Page 133: HDH Tom Tat Bai Giang 2 slides per page

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. . .

Page 134: HDH Tom Tat Bai Giang 2 slides per page

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ả.

Page 135: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 136: HDH Tom Tat Bai Giang 2 slides per page

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

Page 137: HDH Tom Tat Bai Giang 2 slides per page

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 .

Page 138: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 139: HDH Tom Tat Bai Giang 2 slides per page

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:

Page 140: HDH Tom Tat Bai Giang 2 slides per page

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:

Page 141: HDH Tom Tat Bai Giang 2 slides per page

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ớ

Page 142: HDH Tom Tat Bai Giang 2 slides per page

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

Page 143: HDH Tom Tat Bai Giang 2 slides per page

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:

Page 144: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 145: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 146: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 147: HDH Tom Tat Bai Giang 2 slides per page

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

Page 148: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 149: HDH Tom Tat Bai Giang 2 slides per page

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

Page 150: HDH Tom Tat Bai Giang 2 slides per page

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

Page 151: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 152: HDH Tom Tat Bai Giang 2 slides per page

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

Page 153: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 154: HDH Tom Tat Bai Giang 2 slides per page

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

Page 155: HDH Tom Tat Bai Giang 2 slides per page

Memory management 28

Relocation

Memory management 29

Relocation

Page 156: HDH Tom Tat Bai Giang 2 slides per page

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

Page 157: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 158: HDH Tom Tat Bai Giang 2 slides per page

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

Page 159: HDH Tom Tat Bai Giang 2 slides per page

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ớ.

Page 160: HDH Tom Tat Bai Giang 2 slides per page

Memory management 38

Kiến trúc chuyển ñổi ñịa chỉ

Memory management 39

Ví dụ trang

Page 161: HDH Tom Tat Bai Giang 2 slides per page

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

Page 162: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 163: HDH Tom Tat Bai Giang 2 slides per page

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

Page 164: HDH Tom Tat Bai Giang 2 slides per page

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

Page 165: HDH Tom Tat Bai Giang 2 slides per page

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

Page 166: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 167: HDH Tom Tat Bai Giang 2 slides per page

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ẻ

Page 168: HDH Tom Tat Bai Giang 2 slides per page

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

Page 169: HDH Tom Tat Bai Giang 2 slides per page

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

Page 170: HDH Tom Tat Bai Giang 2 slides per page

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

Page 171: HDH Tom Tat Bai Giang 2 slides per page

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

Page 172: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 173: HDH Tom Tat Bai Giang 2 slides per page

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

Page 174: HDH Tom Tat Bai Giang 2 slides per page

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

Page 175: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 176: HDH Tom Tat Bai Giang 2 slides per page

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?

Page 177: HDH Tom Tat Bai Giang 2 slides per page

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ụ

Page 178: HDH Tom Tat Bai Giang 2 slides per page

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

Page 179: HDH Tom Tat Bai Giang 2 slides per page

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

Page 180: HDH Tom Tat Bai Giang 2 slides per page

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

Page 181: HDH Tom Tat Bai Giang 2 slides per page

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

Page 182: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 183: HDH Tom Tat Bai Giang 2 slides per page

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

Page 184: HDH Tom Tat Bai Giang 2 slides per page

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

Page 185: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 186: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 187: HDH Tom Tat Bai Giang 2 slides per page

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

Page 188: HDH Tom Tat Bai Giang 2 slides per page

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

Page 189: HDH Tom Tat Bai Giang 2 slides per page

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

Page 190: HDH Tom Tat Bai Giang 2 slides per page

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

Page 191: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 192: HDH Tom Tat Bai Giang 2 slides per page

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

Page 193: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 194: HDH Tom Tat Bai Giang 2 slides per page

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

Page 195: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 196: HDH Tom Tat Bai Giang 2 slides per page

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

Page 197: HDH Tom Tat Bai Giang 2 slides per page

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

Page 198: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 199: HDH Tom Tat Bai Giang 2 slides per page

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

Page 200: HDH Tom Tat Bai Giang 2 slides per page

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

Page 201: HDH Tom Tat Bai Giang 2 slides per page

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

Page 202: HDH Tom Tat Bai Giang 2 slides per page

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

Page 203: HDH Tom Tat Bai Giang 2 slides per page

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

Page 204: HDH Tom Tat Bai Giang 2 slides per page

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

Page 205: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 206: HDH Tom Tat Bai Giang 2 slides per page

3535

3636

0

1

10

11

12

… …

Page 207: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 208: HDH Tom Tat Bai Giang 2 slides per page

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

Page 209: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 210: HDH Tom Tat Bai Giang 2 slides per page

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

Page 211: HDH Tom Tat Bai Giang 2 slides per page

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

Page 212: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 213: HDH Tom Tat Bai Giang 2 slides per page

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

Page 214: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 215: HDH Tom Tat Bai Giang 2 slides per page

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?

Page 216: HDH Tom Tat Bai Giang 2 slides per page

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

Page 217: HDH Tom Tat Bai Giang 2 slides per page

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

Page 218: HDH Tom Tat Bai Giang 2 slides per page

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

Page 219: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 220: HDH Tom Tat Bai Giang 2 slides per page

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

Page 221: HDH Tom Tat Bai Giang 2 slides per page

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

Page 222: HDH Tom Tat Bai Giang 2 slides per page

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

Page 223: HDH Tom Tat Bai Giang 2 slides per page

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

Page 224: HDH Tom Tat Bai Giang 2 slides per page

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

Page 225: HDH Tom Tat Bai Giang 2 slides per page

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ớ

Page 226: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 227: HDH Tom Tat Bai Giang 2 slides per page

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

Page 228: HDH Tom Tat Bai Giang 2 slides per page

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

Page 229: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 230: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 231: HDH Tom Tat Bai Giang 2 slides per page

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

Page 232: HDH Tom Tat Bai Giang 2 slides per page

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)

Page 233: HDH Tom Tat Bai Giang 2 slides per page

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

Page 234: HDH Tom Tat Bai Giang 2 slides per page

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

Page 235: HDH Tom Tat Bai Giang 2 slides per page

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.

Page 236: HDH Tom Tat Bai Giang 2 slides per page

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