VẤN ĐỀ VỀ ĐÈN HIỆU
Trang 1 trong tổng số 1 trang
VẤN ĐỀ VỀ ĐÈN HIỆU
Câu 1:Ứng dụng của đèn hiệu
Code:
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 hoặc tăng S 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).
*Ứng dụng:
-1.Giải quyết vấn đề VTT: Bằng đèn hiệu nhị phân
-Sử dụng đèn hiệu mutex với trạng thái ban đầu =1
+ Mã của tiến trình Pi bây giờ có cấu trúc:
Code:
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
}
=> Loại trừ tính tương tranh, đảm bảo trong 1 thời điểm chỉ có 1 tiến trình ở đoạn tương tranh.
- 2. Đảm bảo trật tự cần thiết:
Giả sử P1 có mã S1,P2 có mã S2,cần tổ chức sao cho S2 chỉ thi hành sau S1.
+Ta dùng đèn hiệu sau:
semaphore synch = 0;
Cấu trúc P1:
S1
signal (synch) ;
Cấu trúc P2:
wait(synch);
S2
Câu 2:Thực thi đèn hiệu trong windows
-Theo định nghĩa(TĐN):
typedef int semaphore;
semaphore s = n;//n là giá trị ban đầu của đèn hiệu.
wait (s);
signal (s);
-Thực thi trong C++(TH):
HANDLE s;
s=CreateSemaphore (0, n, max, t);//max là giá trị tối đa của đèn hiệu
// t – Tên đèn hiệu hoặc t =0
// n- Giá trị ban đầu của đèn hiệu
WaitForSingleObject (s, timeout); /* timeout = INFINITE hoặc số mili giây chờ */
ReleaseSemaphore (s, 1, NULL);
Code:
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 hoặc tăng S 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).
*Ứng dụng:
-1.Giải quyết vấn đề VTT: Bằng đèn hiệu nhị phân
-Sử dụng đèn hiệu mutex với trạng thái ban đầu =1
+ Mã của tiến trình Pi bây giờ có cấu trúc:
Code:
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
}
=> Loại trừ tính tương tranh, đảm bảo trong 1 thời điểm chỉ có 1 tiến trình ở đoạn tương tranh.
- 2. Đảm bảo trật tự cần thiết:
Giả sử P1 có mã S1,P2 có mã S2,cần tổ chức sao cho S2 chỉ thi hành sau S1.
+Ta dùng đèn hiệu sau:
semaphore synch = 0;
Cấu trúc P1:
S1
signal (synch) ;
Cấu trúc P2:
wait(synch);
S2
Câu 2:Thực thi đèn hiệu trong windows
-Theo định nghĩa(TĐN):
typedef int semaphore;
semaphore s = n;//n là giá trị ban đầu của đèn hiệu.
wait (s);
signal (s);
-Thực thi trong C++(TH):
HANDLE s;
s=CreateSemaphore (0, n, max, t);//max là giá trị tối đa của đèn hiệu
// t – Tên đèn hiệu hoặc t =0
// n- Giá trị ban đầu của đèn hiệu
WaitForSingleObject (s, timeout); /* timeout = INFINITE hoặc số mili giây chờ */
ReleaseSemaphore (s, 1, NULL);
lamtienkhoa(102c)- Tổng số bài gửi : 43
Join date : 28/02/2011
Similar topics
» Các bạn có đóng góp Tích cực trên lớp
» Thảo luận Bài 7
» Ôn tập để Kiểm tra giữa kỳ và Thi lý thuyết
» Thảo luận Bài 7
» Thảo luận Bài 7
» Thảo luận Bài 7
» Ôn tập để Kiểm tra giữa kỳ và Thi lý thuyết
» Thảo luận Bài 7
» Thảo luận Bài 7
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết