BÀI : CÁC GIẢI PHÁP ĐỒNG BỘ HOÁ Nhóm giải pháp Busy Waiting Sử dụng biến cờ hiệu Sử dụng việc kiểm tra luân phiên Giải pháp Peterson Cấm ngắt Chỉ thò TSL Nhóm giải pháp Sleep & Wakeup Semaphore Monitor Message Các giải pháp “Busy waiting” While (chưa có quyền) donothing() ; CS; Từ bỏ quyền sử dụng CS Tiếp tục tiêu thụ CPU chờ đợi vào miền găng Không đòi hỏi trợ giúp Hệđiềuhành Các giải pháp “Sleep & Wake up” if (chưa có quyền) Sleep() ; CS; Wakeup( somebody); Từ bỏ CPU chưa vào miền găng Cần Hệđiềuhành hỗ trợ Semaphore Semaphore s; // s >=0 Down (s) & Up(s) Được hỗ trợ HĐH Tổ chức độc quyền truy xuất P1 : Job1; Up(s) P2: Down (s); Job2; Down (s) CS; Up(s) Tổ chức “hò hẹn” Monitor Monitor m int x; Condition c; Function F1() { ….wait(c); …} Được hỗ trợ NNLT Bảo đảm độc quyền truy xuất tự động Sử dụng biến điều kiện để thực “Hò hẹn” Function F2() { ….signal(c); …} Message Send Request Server Send Finish P Receive Accept Được hỗ trợ HĐH Đồng hóa môi trường phân tán Các toán đồng hoá kinh điển Producer-Consumer P P không ghi liệu vào buffer đầy Buffer (N) C R2 R3 R1 W1 W2 Database C không đọc liệu từ buffer trống P C không thao tác buffer lúc Readers - Writers W không cập nhật liệu có R truy xuất CSDL Tại thời điểm , cho phép Wđược sửa đổi nội dung CSDL ... Không đòi hỏi trợ giúp Hệ điều hành Các giải pháp “Sleep & Wake up” if (chưa có quyền) Sleep() ; CS; Wakeup( somebody); Từ bỏ CPU chưa vào miền găng Cần Hệ điều hành hỗ trợ Semaphore Semaphore... Function F1() { ….wait(c); …} Được hỗ trợ NNLT Bảo đảm độc quyền truy xuất tự động Sử dụng biến điều kiện để thực “Hò hẹn” Function F2() { ….signal(c); …} Message Send Request Server Send Finish