Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec
3 posters
Trang 1 trong tổng số 1 trang
Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec
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
}
- 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- Tổng số bài gửi : 24
Join date : 17/04/2010
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
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;
}
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
Re: Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec
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
phan hoài Đông- Tổng số bài gửi : 36
Join date : 22/03/2010
Similar topics
» Lập trình Bài toán Sản xuất-Tiêu thụ dùng semFull-semEmpty-CritSec
» Thảo luận Bài 7
» Thảo luận Bài 4
» Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải đồng bộ hoá bằng 3 đèn hiệu semFull, semEmpty và Mutex
» Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải đồng bộ hoá bằng 3 đèn hiệu semFull, semEmpty và Mutex
» Thảo luận Bài 7
» Thảo luận Bài 4
» Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải đồng bộ hoá bằng 3 đèn hiệu semFull, semEmpty và Mutex
» Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải đồng bộ hoá bằng 3 đèn hiệu semFull, semEmpty và Mutex
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