You are on page 1of 11

ỨNG DỤNG KỸ THUẬT SEMAPHORE TRONG

XỬ LÝ BÀI TOÁN TIẾN TRÌNH SẢN XUẤT,


TIÊU THỤ ( PRODUCER – CONSUMER)

Thành viên nhóm

 Trần Kháng Dĩ
 Đoàn Duy Hiếu
 Nguyễn Hữu Thịnh
 Võ Thái Hiền
 Giang Tuấn Kiệt
Nội dung
I. Khái quát về kỹ thuật Semaphore
1. Kỹ thuật Semaphore.
2. Nhận xét
3. Ưu/nhược điểm.

II. Ứng dụng kỹ thuật Semaphore vào Bài toán


Producer - Consumer
Kỹ thuật Semaphore
• Là một biến nguyên S, khởi tạo bằng khả
năng phục vụ của tài nhuyên nó điều độ.
• Chỉ có thể thay đổi giá trị bằng 2 thao tác
P(wait) và V(signal).
• Các thao tác P và V phải được xử lý không
tách rời.
Kỹ thuật Semaphore
• Điều độ tiến trình qua đoạn gang.
 Sử dụng biến phân chia mutex.
 Khởi tạo mutex = 1.
 Thuật toán cho tiến trình Pi.
Kỹ thuật Semaphore
• Hai tiến trình P1, P2 thực hiện đồng thời.
 P1 chứa lệnh S1, P2 chứa lệnh S2.
 Yêu cầu S2 thực hiện sau S1.
 Dùng đèn báo synch = 0.
 Đoạn mã cho P1 và P2.
Kỹ thuật Semaphore
Semaphore S
Cài đặt đèn báo

Wait(S)/P(S) Signal(S)/V(S)
Nhận xét
• Dễ dàng sử dụng.
• Không tồn tại hiện tượng chờ đợi tích cực.
• Hiệu quả sử dụng phụ thuộc vào người dung.
Ưu điểm
• Đơn giản và dễ sử dụng: chỉ có thao tác đóng và mở.
• Hiệu quả: không cần sử dụng những cấu trúc dữ liệu
phức tạp như cây và danh sách liên kết.
• Có thể mở rộng: có thể dung để đồng bộ hóa tào
nguyên và số lượng lớn tiến trình và luồng.
Nhược điểm
• Có thể dẫn đến mất hiệu xuất: nếu một Semaphore
bị khóa trong thời gian dài sẽ dẫn đến mất hiệu suất.
• Không thể đồng bộ hóa các tài nguyên không thể
phân chia: Semaphore chỉ có thể dung để đồng bộ
các tài nguyên được phân chia. Ví dụ một Semaphore
có thể sử dụng để đồng bộ hóa truy cập vào một tẹp,
nhưng không thể đồng bộ hóa truy cập vào thiết bị
I/O.
BÀI TOÁN NGƯỜI SẢN XUẤT –
NGƯỜI TIÊU THỤ
( PRODUCER – CONSUMER )
Bài toán sản xuất tiêu thụ được phát biểu chung như
sau: Có một bộ đệm(Buffer) và 2 tiến trình sản xuất
Producer và tiến trình tiêu thụ Consumer. Tiến trình
Producer lần lượt sản xuất các sản phẩm item 1, item 2
vào khoang của bộ đệm Buffer. Tiến trình tiêu thụ lần
lượt lấy các sản phẩm ra khỏi bộ đệm. Công việc của
Producer và Consumer cần được đồng bộ hóa tiến trình
Consumer không thể lấy sản phẩm ra khi bộ đệm trống,
và tiến trình Producer không thể sản xuất khi bộ đệm
đầy. Đồng bộ hóa bằng 2 đèn hiệu semFull và
semEmpty

You might also like