.Vấn đề đồng bộ

Một phần của tài liệu Bao cao mon hoc hệ điêu hành (Trang 41 - 50)

Giải phỏp:

 Áp dụng cơ chế truy xuất độc quyền

o Trờn tài nguyờn đú (Accnout):

 Khi 1 tiến trỡnh đang sử dụng tài nguyờn thỡ cỏc tiến trỡnh khỏc khụng được sử dụng.

a. Đoạn găng

 Khỏi niệm:

o Là đoạn mó lệnh cú khả năng xảy ra mõu thuẫn khi sử dụng tài nguyờn chung.

 Hệ điều hành

o Cần cài đặt cỏc giải phỏp đồng bộ

 Để giải quyết vấn đề độc quyền truy xuất

 Quyết định: Tiến trỡnh nào sẽ được vào miền găng (thực hiện cỏc lệnh)

 Khi một tiến trỡnh đang ở miền găng thỡ cỏc tiến trỡnh khỏc khụng thể vào miền găng.

Giải phỏp <BUSY WAITING>

a. Giải phỏp phần mềm

 Sử dụng cỏc biến cờ hiệu (semaphore)

 Sử dụng việc kiểm tra luõn phiờn

 Giải phỏp của peterson

b. Giải phỏp phần cứng

 Cấm ngắt

 Test & set

Sử dụng cỏc biến cờ hiệu

a. í tưởng:

 Cỏc tiến trỡnh chia sẻ một biến chung

o Biến này được khởi động là 0.

 Một tiến trỡnh muốn vào găng:

o 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 cho giỏ trị lock=1 và đi vào miền găng

 Nếu lock=1, tiến trỡnh phải đợi cho đến khi lock=0.

 Như vậy:

o lock=0 khụng cú tiến trỡnh nào đang ở trong miền găng

o lock=1 hiện cú một tiến trỡnh đang ở trong miền găng.

Sử dụng việc kiểm tra luõn phiờn

 Giải phỏp

o Đề nghị cho hai tiến trỡnh:

 Hai tiến trỡnh sử dụng chung biến turn

 Khởi động turn == 0.

 Nếu turn = 0

 Tiến trỡnh P1 được đưa vào đoạn găng

 Khi tiến trỡnh P1 rời khỏi đoạn găng, nú đặt giỏ trị turn=1 để cho phộp tiến trỡnh P2 đi vào đoạn găng.

 Nếu turn = 1

 Tiến trỡnh P2 được vào đoạn găng

 Khi tiến trỡnh P2 vào đoạn găng, nú đặt lại giỏ trị turn=0 để cho phộp tiến trỡnh P1 vào lại đoạn găng.

 Nếu một trong hai tiến trỡnh P1, P2 trong đoạn găng:

 Tiến trỡnh cũn lại đi vào vũng lặp chờ biến turn thay đổi.

b. Nhận xột

 Ngăn được trường hợp 2 tiến trỡnh đồng thời trong đoạn găng

 Xảy ra tỡnh huống:

o Một tiến trỡnh bị ngăn vào đoạn găng bởi một tiến trỡnh bờn ngoài đoạn găng khi:

 turn=0

 P1 vào đoạn găng xong, đặt lại turn=1 rồi ra

 Và muốn nhanh chúng trở lại miền găng

 Turn=1: tiến trỡnh P2 được quyền vào đoạn găng:

 Hiện P2 đang thực thi ngoài đoạn găng

 => Chưa thể đặt lại turn=0 ngay được

 => P1 chưa thể vào găng

Giải phỏp Peterson

a. Do Peterson đề nghị

b. í tưởng: kết hợp 2 giải phỏp trờn

c. Nhận xột

 Ngăn chặn được tỡnh trạng truy xuất:

o Pi chỉ cú thể vào miền găng khi

 in[j]=false

 hoặc turn=i

o Nếu cả 2 tiến trỡnh đều muốn vào miền găng:

 Thỡ in[i]=in[j]=true

 Nhưng: giỏ trị của turn chỉ cú thể

 Hoặc là turn=0: Tiến trỡnh P0 được vào miền găng

 Hoặc là turn=1: Tiến trỡnh P1 được vào miền găng

 Do vậy chỉ cú một tiến trỡnh được vào miền găng.

Cấm ngắt

a. Nhận xột:

 Khụng được ưa chuộng:

o Vỡ thiếu thận trọng khi cho phộp tiến trỡnh người dựng được phộp thực hiện lệnh cấm ngắt.

 Hệ thống cú nhiều CPU:

o Lệnh cấm ngắt

 Cỏc tiến trỡnh hoạt động trờn cỏc CPU khỏc vẫn cú thể truy xuất đến miền găng

Kết luận về giải phỏp Busy waiting

a. Hoạt động chung:

 Tất cả cỏc giải phỏp trờn:

o Đều phải thực hiện một vũng lặp để kiểm tra xem cú được vào đoạn găng khụng.

o Nếu điều kiện chưa cho phộp, tiến trỡnh phải tiếp tục chờ trong vũng lặp.

o Cỏc giải phỏp buộc tiến trỡnh:

 Phải liờn tục kiểm tra điều kiện để phỏt hiện thời điểm thớch hợp để vào găng.

 Cỏc giải phỏp Busy Waiting : Chờ vỡ bận.

b. Hạn chế:

 Việc kiểm tra như thế tiờu thụ nhiều thời gian sử dụng CPU, do vậy tiến trỡnh đang chờ vẫn chiếm dụng CPU.

 Xu hướng giải quyết vấn đề đồng bộ húa:

o Nờn trỏnh cỏc giải phỏp Busy Waiting.

4.Cỏc giải phỏp <SLEEP AND WAKEUP>

a. Khắc phục nhược điểm

 Cho một tiến trỡnh chưa đủ điều kiện vào găng, chuyển sang trạng thỏi waiting

 Tạm khúa tiến trỡnh, khụng cho sử dụng CPU ngay vỡ tiến trỡnh chỉ sử dụng CPU khi ở trạng thỏi running.

b. Giải phỏp

 í tưởng:

o SLEEP: Khi tiến trỡnh chưa đủ điều kiện vào găng => gọi SLEEP để khúa. Đến khi cú một tiến trỡnh khỏc => gọi WAKEUP để giải phúng cho nú.

o WAKEUP: Khi một tiến trỡnh ra khỏi miền găng => gọi WAKEUP để đỏnh thức một tiến trỡnh đang chờ => tạo cơ hội cho tiến trỡnh này vào miền găng.

Chƣơng 6 : Bế Tắc ( Dealock)

Một phần của tài liệu Bao cao mon hoc hệ điêu hành (Trang 41 - 50)

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

(65 trang)