Danh mục

Bài giảng Hệ điều hành: Chương 3 - Đồng bộ quá trình

Số trang: 65      Loại file: ppt      Dung lượng: 508.00 KB      Lượt xem: 13      Lượt tải: 0    
10.10.2023

Xem trước 7 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Hệ điều hành: Chương 3 - Đồng bộ quá trình bao gồm những nội dung về khái niệm cơ bản; Critical section, các giải pháp dùng lệnh máy thông thường; các giải pháp dùng lệnh cấm ngắt hoặc lệnh máy đặc biệt; Semaphore; Semaphore và các bài toán đồng bộ; Monitor.
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ điều hành: Chương 3 - Đồng bộ quá trình Chương3ĐồngBộQuáTrình -1.1- Nộidung Kháiniệmcơbản Criticalsection Cácgiảiphápdùnglệnhmáythôngthường ● GiảithuậtPeterson,vàgiảithuậtbakery Cácgiảiphápdùnglệnhcấmngắthoặclệnhmáyđặc biệt Semaphore Semaphorevàcácbàitoánđồngbộ Monitor 2 Bàitoánđồngbộ(1/2)• Khảosátcácprocess/threadthựcthiđồngthờivàchiasẻdữliệu(ghishared memory)tronghệthống ● uniprocessor,hoặc ● sharedmemorymultiprocessor Nếukhôngcósựkiểmsoátkhitruycậpcácdữliệuchiasẻthìchúngcóthể trỡnênkhôngnhấtquán. Đểduytrìsựnhấtquándữliệu,hệthốngcầncócơchếbảođảmsựthực thicótrậttựcủacácprocessđồngthời. 3 Bàitoánđồngbộ(2/2) Hailớpbàitoánđồngbộ: ● Hợptác  Bàitoánproducerconsumer:boundedbuffer ● Cấppháttàinguyên  Bàitoánloạitrừtươnghỗ:đồângbộnhiềuquátrìnhsửdụngmộttài nguyênkhôngchiasẻđồângthờiđược  BàitoánDiningPhilosophers 4 Đồngthời songsong Trênuniprocessorhaytrênsharedmemorymultiprocessor,các quátrìnhchạyđồngthời Trênsharedmemorymultiprocessor,cácquátrìnhcóthểchạy songsong quátrình1 quátrình2 Sharedmemory Biếnchiasẻ Quátrinh1và2codevà privatedata 5 BàitoánProducerconsumer(1/3) VídụBoundedbuffer,thêmbiếnđếmcount #defineBUFFER_SIZE8 /*8buffers*/ typedefstruct{ ... }item; itembuffer[BUFFER_SIZE]; intin=0,out=0,count=0; 6 BàitoánProducerconsumer(2/3) QuátrìnhProducer itemnextProduced; while(1){ while(count==BUFFER_SIZE); buffer[in]=nextProduced; count++; in=(in+1)%BUFFER_SIZE; } QuátrìnhConsumer itemnextConsumed; while(1){ while(count==0); nextConsumed=buffer[out]; biếncountđượcchiasẻ count; giữaproducervàconsumer out=(out+1)%BUFFER_SIZE;} 7 BàitoánProducerconsumer(3/3) Cáclệnhtăng/giảmbiếncounttươngđươngtrongngônngữ máylà:• Producer count++: • register1=count • register1=register1+1 • count=register1• Consumer count: • register2=count • register2=register21 • count=register2• Trongđó,registerilàthanhghicủaCPU. 8 Đồngbộvàlệnhđơnnguyên • Mãmáycủacáclệnhtăngvàgiảmbiếncountcóthểthựcthixenkẽ  Giảsửcountđangbằng5.Chuỗithựcthisaucóthểxảyra: 1: producer register1:=count {register1=5} producer register1:=register1+1 {register1=6} 2: consumer register2:=count {register2=5} consumer register2:=register21 {register2=4} 3: producer count:=register1{count=6} 4: consumer count:=register2{count=4} Cảhaiprocessthaotácđồngthờilênbiếnchungcount.Trịcủabiếnchungnày khôngnhấtquándướicácthaotáccủahaiprocess. Giảipháp:cáclệnh count++,countphảilàđơnnguyên(atomic),nghĩalàthựchiệnnhưmộtlệnh đơn,khôngthựcthiđanxennhau. 9 Racecondition Racecondition:nhiềuprocesstruyxuấtvàthaotácđồng thờilêndữliệuchiasẻ(nhưbiếncount);kếtquảcuối cùngcủaviệctruyxuấtđồngthờinàyphụthuộcthứtự thựcthicủacáclệnhthaotácdữliệu. Đểdữliệuchiasẻđượcnhấtquán,cầnbảođảmsaocho cácprocesslầnlượtthaotáclêndữliệuchiasẻ.Dođó,cần cócơchếđồngbộhoạtđộngcủacácprocessnày. ...

Tài liệu được xem nhiều: