TAILIEUCHUNG - Các giải pháp đồng bộ hóa

Bài học này sẽ giới thiệu các giải pháp cụ thể để xử lý bài toán đồng bộ hoá. Có nhiều giải pháp để thực hiện việc truy xuất miền găng, các giải pháp này được phân biệt thành hai lớp tùy theo cách tiếp cận trong xử lý của tiến trình bị khóa :các giải pháp « busy waiting » và các giải pháp « sleep and wakeup ». | BÀI 5 CÁC GIẢI PHÁP ĐỒNG BỘ HOÁ Nguồn Bài học này sẽ giới thiệu các giải pháp cụ thể để xử lý bài toán đồng bộ hoá. Có nhiều giải pháp để thực hiện việc truy xuất miền găng các giải pháp này được phân biệt thành hai lớp tùy theo cách tiếp cận trong xử lý của tiến trình bị khóa các giải pháp busy waiting và các giải pháp sleep and wakeup . I. Giải PHÁP BUSY WAITING . Các giải pháp phần mềm . Sử dụng các biến cờ hiệu e Tiếp cân các tiến trình chia sẻ một biến chung đóng vai trò chốt cửa lock biến này được khởi động là 0. Một tiến trình muốn vào miền găng trước tiên phải kiểm tra giá trị của biến lock. Nếu lock 0 tiến trình đặt lại giá trị cho lock 1 và đi vào miền găng. Nếu lock đang nhận giá trị 1 tiến trình phải chờ bên ngoài miền găng cho đến khi lock có giá trị 0. Như vậy giá trị 0 của lock mang ý nghĩa là không có tiến trình nào đang ở trong miền găng và lock 1 khi có một tiến trình đang ở trong miền găng. while TRUE while lock 1 wait lock 1 critical-section lock 0 Noncritical-section Hình Cấu trúc một chương trình sử dụng biến khóa để đồng bộ e Thảo luận Giải pháp này có thể vi phạm điều kiện thứ nhất hai tiến trình có thể cùng ở trong miền găng tại một thời điểm. Giả sử một tiến trình nhận thấy lock 0 và chuẩn bị vào miền găng nhưng trước khi nó có thể đặt lại giá trị cho lock là 1 nó bị tạm dừng để một tiến trình khác hoạt động. Tiến trình thứ hai này thấy lock vẫn là 0 thì vào miền găng và đặt lại lock 1. Sau đó tiến trình thứ nhất được tái kích hoạt nó gán lock 1 lần nữa rồi vaò miền găng. Như vậy tại thời điểm đó cả hai tiến trình đều ở trong miền găng. . Sử dụng việc kiểm tra luân phiên e Tiếp cận Đây là một giải pháp đề nghị cho hai tiến trình. Hai tiến trình này sử dụng chung biến turn phản ánh phiên tiến trình nào được vào miền găng được khởi động với giá trị 0. Nếu turn 0 tiến trình A được vào miền găng. Nếu turn 1 tiến trình A đi vào một vòng lặp chờ đến khi turn nhận giá trị 0. Khi tiến trình A rời khỏi miền găng nó đặt .

TỪ KHÓA LIÊN QUAN