Khái niệm và hai ứng dụng của đèn hiệu (semaphore)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Khái niệm và hai ứng dụng của đèn hiệu (semaphore)

Bài gửi  TranQuocHuy (HLT3) on 22/4/2014, 16:55

Khái niệm đèn hiệu
- Đèn hiệu là phương tiện đồng bộ hoá được E.W. Dijkstra đề xuất năm 1965.
- Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ) và Signal (Báo hiệu):

typedef int semaphore; // Định nghĩa kiểu Đèn hiệu
wait (semaphore S)
{
while ( S <= 0 ); // Chờ bận nếu S<=0
S –; // Giảm S đi 1
}

signal (semaphore S)
{
S ++; // Tăng S lên 1
}

-Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal) phải được thực hiện trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do đó Wait và Signal được gọi là các tác nguyên (Atomic Operations).

Hai ứng dụng của đèn hiệu:

1. Giải quyết vấn đề VTT:
Mã tiến trình Pi bây giờ có cấu trúc:
typedef int semaphore;
semaphore mutex = 1; //binary semaphore
while(1)           //Đèn hiệu nhị phân
{
Remainder section
wait(mutex);
critical section
signal(mutex);
remainder section
}
2.Giả sử P1 có mã S1, P2 có mã S2. Cần tổ chức sao cho S2 chỉ thi hành sau S1.

semaphore synch = 0;

         Cấu trúc P1:
              S1
        signal(synch);
       
         Cấu trúc P2:
         wait(synch);
             S2

TranQuocHuy (HLT3)

Tổng số bài gửi : 12
Join date : 19/03/2014
Age : 24

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết