Bài tập đồng bộ hóa tiến trình có lời giải năm 2024

Bài tập đồng bộ hóa tiến trình có lời giải năm 2024

Nội dung Text: Bài tập chương 5 - Đồng bộ hoá tiến trình

  1. Baøi taäp chöông 5 Ñoàng boä hoaù tieán trình 12/09/2007 Khoa KTMT 1
  2. Baøi 1 : Xeùt giaûi phaùp phaàn meàm do Dekker ñeà nghò ñeå toå chöùc truy xaát ñoäc quyeàn cho hai tieán trình . Hai tieán trình P0, P1 chia seû caùc bieán sau : var flag : array [0..1] of boolean; (khôûi ñoäng laø false) turn : 0..1; Caáu truùc moät tieán trình Pi ( i =0 hay 1, vaø j laø tieán trình coøn laïi ) nhö sau : repeat flag[i] := true; while flag[j] do if turn = j then begin flag[i]:= false; while turn = j do ; flag[i]:= true; end; critical_section(); turn:= j; flag[i]:= false; non_critical_section(); until false; Giaûi phaùp naøy coù phaûi laø moät giaûi phaùp ñuùng thoûa maõn 4 yeâu caàu khoâng ?
  3. Baøi 2: Xeùt giaûi phaùp ñoàng boä hoaù sau : while (TRUE) { int j = 1-i; flag[i]= TRUE; turn = i; while (turn == j && flag[j]==TRUE); critical-section (); flag[i] = FALSE; Noncritical-section (); } Ñaây coù phaûi laø moät giaûi phaùp baûo ñaûm ñöôïc ñoäc quyeàn truy xuaát khoâng ?
  4. Baøi 3: Giaû söû moät maùy tính khoâng coù chæ thò TSL, nhöng coù chæ thò Swap coù khaû naêng hoaùn ñoåi noäi dung cuûa hai töø nhôù chæ baèng moät thao taùc khoâng theå phaân chia : procedure Swap() var a,b: boolean); var temp : boolean; begin temp := a; a:= b; b:= temp; end; Söû duïng chæ thò naøy coù theå toå chöùc truy xuaát ñoäc quyeàn khoâng ? Neáu coù, xaây döïng caáu truùc chöông trình töông öùng.
  5.  Baøi 5 : Xeùt hai tieán trình sau : process A { while (TRUE) na = na +1; } process B { while (TRUE) nb = nb +1; } a. Ñoàng boä hoaù xöû lyù cuûa hai tieán trình treân, söû duïng hai semaphore toång quaùt, sao cho taïi baát kyø thôøi ñieåm naøo cuõng coù nb < na
  6.  Baøi 6 : Moät bieán X ñöôïc chia seû bôûi hai tieán trình cuøng thöïc hieän ñoaïn code sau : do X = X +1; if ( X == 20) X = 0; while ( TRUE ); Baét ñaàu vôùi giaù trò X = 0, chöùng toû raèng giaù trò X coù theå vöôït quaù 20. Caàn söûa chöõa ñoaïn chöông trình treân nhö theá naøo ñeå baûo ñaûm X khoâng vöôït quaù 20 ?
  7.  Baøi 7 : Xeùt hai tieán trình xöû lyù ñoaïn chöông trình sau : process P1 { A1 ; A2 } process P2 { B1 ; B2 } Ñoàng boä hoaù hoaït ñoäng cuûa hai tieán trình naøy sao cho caû A1 vaø B1 ñeàu hoaøn taát tröôùc khi A2 hay B2 baét ñaàu .
  8.  Baøi 8 : Toång quaùt hoaù caâu hoûi 8) cho caùc tieán trình xöû lyù ñoaïn chöông trình sau : process P1 { for ( i = 1; i
  9.  Baøi 9 : Söû duïng semaphore ñeå vieát laïi chöông trình sau theo moâ hình xöû lyù ñoàng haønh: w := x1 * x2 v := x3 * x4 y := v * x5 z := v * x6 y := w * y z := w * z ans := y + z
  10. Bài kiểm tra 30’ Bài 1. Xeùt giaûi phaùp ñoàng boä hoaù sau : while (TRUE) { int j = 1-i; flag[i]= TRUE; turn = j; while (turn == j && flag[j]==TRUE); critical-section (); flag[j] = FALSE; Noncritical-section (); } Ñaây coù phaûi laø moät giaûi phaùp baûo ñaûm 3 điều kiện khoâng ? Bài 2: Sử dụng semaphore để viết lại chương trình sau theo mô hình xử lý đồng hành: A = x1 + x2; B = A*x3; C= A + x4; D= B + C; E = D*x5 + C; 12/09/2007 Khoa KTMT 10