Các giải pháp SLEEP and WAKEUP

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 82 - 85)

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

2.5.2 Các giải pháp SLEEP and WAKEUP

Đối với giải pháp này thì tiến trình nào chưa đủ điều kiện vào miền găng thì sẽ chuyển sang trạng thái blocked. Dùng 2 thủ tục Sleep and wakeup để thay đổi trạng thái

 Khi tiến trình không đủ điều kiện vào đoạn găng thì hệ thống gọi thủ tục Sleep để chuyển sang trạng thái blocked và đưa vào hàng đợi cho đến khi một tiến trình khác gọi thủ tục wakeup để giải phóng nó ra khỏi hàng đợi và đưa vào đoạn găng

 Một tiến trình ra khỏi hàng đợi phải gọi thủ tục wakeup để đánh thức một tiến trình trong hàng đợi blocked ra để tạo điều kiện cho nó vào đoạ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.2 Các giải pháp SLEEP and WAKEUP

int busy; // 1 nếu miền găng đang bị chiếm, 0 là nếu không chiếm đóng int blocked; // đếm số lượng tiến trình đang bị khoá

while (TRUE) { if (busy) { blocked = blocked + 1; sleep(); } else busy = 1; critical_section (); busy = 0; if(blocked) { wakeup(process); blocked = blocked - 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.2 Các giải pháp SLEEP and WAKEUP

 Giải pháp này do Dijkstra đưa ra 1965, S là Semaphore được định nghĩa như sau:

2.5.2.1 Giải pháp dùng Semaphore

• Là một biến nguyên dương e(s)

• Ứng với S là hàng đợi F(s) lưu các tiến trình bị khóa

• Có 2 thao tác:

+ Down giảm giá trị semaphore 1 đơn vị + Up tăng giá trị Semaphore 1 đơn vị

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

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 82 - 85)

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

(118 trang)