Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec

3 posters

Go down

Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec Empty Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec

Bài gửi  nguyentronghieu_107H1031 21/4/2010, 13:08

Giả sử có bộ nhớ đệm BUFFER bao gồm các khoảng Item được tiến trình Producer lần lược đưa các sản phẩm S1, S2… Sn vào. Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
- Công việc của Producer phải đồng bộ với Consumer, không được đưa sản phẩm vào khi Buffer đầy và lấy sản phẩm ra khi chưa có .

• Đồng bộ hóa bằng 2 đèn hiệu ( Semophone)
Ta dùng 2 đèn hiệu SemFull và SemEmpty
SemFull : kiểm tra số Sản phẩm trong bộ đệm.
SemEmpty: Kiểm tra số vùng trống trong bộ đệm.
Hai tác nguyên: Wait và Signal
Producer()
{ // Chờ khi bộ đệm đầy
WaitforSignal(SemFull,INITE)
//Sản xuất sản phẩm
Releave(SemEmpty)
//Bộ đệm đã có Sản phẩm
}
Consumer()
{ // Chờ đến khi có sản phẩm
WaitforSignal(SemEmpty ,INITE)
//tiêu thụ sản phẩm
Releave(SemFull)
//Bộ đệm đã có chổ trống
}
nguyentronghieu_107H1031
nguyentronghieu_107H1031

Tổng số bài gửi : 24
Join date : 17/04/2010

Về Đầu Trang Go down

Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec Empty Phát biểu bài toán Sản xuất-Tiêu thụ và trình bày Thuật giải với Bộ đệm thực thi bằng mảng xoay vòng

Bài gửi  08H1010017 22/4/2010, 12:10

Phát biểu bài toán:
Giả sử có Bộ nhớ đệm (Buffer) bao gồm nhiều khoang (Items) được tiến trình Producer lần lượt đưa các sản phẩm S1, S2,... vào.
Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
Công việc của Producer phải đồng bộ với Consumer: Không được đưa sản phẩm vào khi Buffer đầy, Không được lấy ra khi chưa có.
PRODUCER
item nextProduced;
while (1)
{
while(((in+1)%BUFFER_SIZE)==out); //quẩn tại đây khi buffer đầy.
buffer[in] = nextProduced;
in = (in+1)%BUFFER_SIZE;
}

CONSUMER
item nextConsumed;
while (1)
{
while(in==out); //quẩn khi buffer rỗng
nextConsumed = buffer[out];
out = (out+1)%BUFFER_SIZE;
}

08H1010017

Tổng số bài gửi : 38
Join date : 19/03/2010

Về Đầu Trang Go down

Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec Empty Re: Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec

Bài gửi  phan hoài Đông 22/4/2010, 15:13

nguyentronghieu_107H1031 đã viết:Giả sử có bộ nhớ đệm BUFFER bao gồm các khoảng Item được tiến trình Producer lần lược đưa các sản phẩm S1, S2… Sn vào. Tiến trình Consumer lần lượt lấy sản phẩm ra theo đúng thứ tự.
- Công việc của Producer phải đồng bộ với Consumer, không được đưa sản phẩm vào khi Buffer đầy và lấy sản phẩm ra khi chưa có .

• Đồng bộ hóa bằng 2 đèn hiệu ( Semophone)
Ta dùng 2 đèn hiệu SemFull và SemEmpty
SemFull : kiểm tra số Sản phẩm trong bộ đệm.
SemEmpty: Kiểm tra số vùng trống trong bộ đệm.
Hai tác nguyên: Wait và Signal
Producer()
{ // Chờ khi bộ đệm đầy
WaitforSignal(SemFull,INITE)
//Sản xuất sản phẩm
Releave(SemEmpty)
//Bộ đệm đã có Sản phẩm
}
Consumer()
{ // Chờ đến khi có sản phẩm
WaitforSignal(SemEmpty ,INITE)
//tiêu thụ sản phẩm
Releave(SemFull)
//Bộ đệm đã có chổ trống
}



thank you bạn ! không biết bạn phát biểu có đúng không vì hôm đó mình out Question

phan hoài Đông

Tổng số bài gửi : 36
Join date : 22/03/2010

Về Đầu Trang Go down

Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec Empty Re: Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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