Các giải pháp BYSY WAITING 1 Giải pháp phần mềm

Một phần của tài liệu Bài giảng nguyên lý hệ điều hành chương 2 GV đặng quang hiển (Trang 72 - 79)

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING 1 Giải pháp phần mềm

2.5.1.1 Giải pháp phần mềm

 Sử dụng biến khóa

- Dùng biến lock chung cho các tiến trình

- Nếu lock= =1 thì khóa, không cho tiến trình vào miền găng. Chờ cho đến khi lock= =0

- Nếu lock= =0 thì cho tiến trình vào miền găng, đặt lock= =1 để khóa không cho các tiến trình khác vào miền găng

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

- Giải thuật sử dụng biến khoá để đồng bộ

while (TRUE) {

while (lock == 1); // wait lock = 1; critical_section (); lock = 0; Noncritical_section (); }  Sử dụng biến khóa

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

 Sử dụng việc kiểm tra luân phiên

- Các tiến trình muốn đi vào miền găng thì được gắn nhãn 0|1 - Sử dụng biến turn để chỉ thứ tự luân phiên.

- Nếu turn= =0: tiến trình có nhãn 0 được vào miền găng - Nếu turn= =1: tiến trình có nhãn 1 được vào miền găng

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

- Giải thuật sử dụng việc kiểm tra luân phiên có nhãn 0

while (TRUE) {

while (turn != 0); // wait

critical_section ();

turn = 1;

Noncritical_section (); }

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

- Giải thuật sử dụng việc kiểm tra luân phiên có nhãn 1

while (TRUE) {

while (turn != 1); // wait

critical_section ();

turn = 0;

Noncritical_section (); }

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

Giải pháp Peterson: kết hợp cả 2 giải pháp trên,dùng 2 biến chung int turn; // đến phiên ai

int interesse[2]; // khởi động là FALSE

Nếu interesse[i]=TRUE Pi muốn vào miền găng

Khởi đầu interesse[0]=interesse[1]=false interesse khởi động là 0|1 Vào miền găng thì interesse[i]=true và sau đó đặt turn =j

Nếu interesse[j]=false không quan tâm vào miền găng thì Pi vào miền găng, sau đó ra khỏi miền găng thì đặt lại là interesse[i]=false

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1 Các giải pháp BYSY WAITING2.5.1.1 Giải pháp phần mềm 2.5.1.1 Giải pháp phần mềm

Giải pháp Peterson: kết hợp cả 2 giải pháp trên,dùng2 biến chung while (TRUE) {

int j = 1-i; // j là tiến trình còn lại interesse[i]= TRUE;

turn = j;

while (turn = = j && interesse[j]= =TRUE); critical_section ();

interesse[i] = FALSE; Noncritical_section (); }

CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓACÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA CÁC GIẢI PHÁP VỀ ĐỒNG BỘ HÓA

2.5.1.2 Giải pháp phần cứng

Một phần của tài liệu Bài giảng nguyên lý hệ điều hành chương 2 GV đặng quang hiển (Trang 72 - 79)

Tải bản đầy đủ (PDF)

(118 trang)