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.

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

+8
buuhuynh
phuong.ntt-08h1010074
cathytranha
phamvietthanh
PhamThiKhanhHa
tranmongthuy
lqhlam
hienminhchau2005
12 posters

Trang 1 trong tổng số 2 trang 1, 2  Next

Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 00:07

- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.
- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.
- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.
- Thuật giải dùng kỹ thuật Busy-Waiting (chờ bận) với biến đếm count (chứa số sản phẩm trong Buffer):
+ Producer:
Code:

while(1){
while(count == BUFFER_SIZE); // Vòng lặp chờ bận
// Đưa sản phẩm vào Buffer
count++; // Tăng count lên 1
}

+ Consumer:
Code:

while(1){
while(count == 0); // Vòng lặp chờ bận
// Lấy sản phẩm từ Buffer
count--; // Giảm count đi 1
}

Ghi chú:
- Vòng lặp chờ bận phải liên tục kiểm tra giá trị biến đếm count, tốn thời gian CPU, dẫn đến giảm hiệu năng hệ thống.
- Có thể không dùng biến đếm count. Khi đó, vòng lặp chờ bận cho Producer được thực thi bằng:
Code:
while(((in+1)%BUFFER_SIZE)==out); // Vòng lặp chờ bận

Còn đối với Consumer thì dùng:
Code:
while(in==out); // Vòng lặp chờ bận
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Giỏi quá đi

Bài gửi  lqhlam 12/5/2009, 07:19

Thế bạn có thể giải thích lại về thuật giải nhà băng và hiền triết cùng ăn không ?
lqhlam
lqhlam

Tổng số bài gửi : 90
Join date : 17/03/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 08:03

lqhlam đã viết:Thế bạn có thể giải thích lại về thuật giải nhà băng và hiền triết cùng ăn không ?

Hi hi! Minh lay bai thi cua khóa truoc. Do la bai giai cua Thay To Tuan nen minh up len cho ngoai nguoi tham khao. Minh co up mot loat bai, do đều là đề thi của khóa truoc và Thầy To Tuan đã giải hoan chinh nen minh moi dam up len thoi. Chào ban!
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  tranmongthuy 12/5/2009, 08:46

thanks ban nhieu nha, minh cung dang tim bai nay
tranmongthuy
tranmongthuy

Tổng số bài gửi : 17
Join date : 19/02/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 09:06

tranmongthuy đã viết:thanks ban nhieu nha, minh cung dang tim bai nay
Khong co gi? Minh co cai nao thi share cho moi nguoi het?
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty hi hi

Bài gửi  lqhlam 12/5/2009, 09:46

Thì ra là vậy. bạn ráng tìm thêm rồi úp cho moi người ha
lqhlam
lqhlam

Tổng số bài gửi : 90
Join date : 17/03/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  PhamThiKhanhHa 12/5/2009, 12:54

Mình print ra để học thôi, thanks bạn nhiều nha

PhamThiKhanhHa

Tổng số bài gửi : 25
Join date : 04/03/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  phamvietthanh 12/5/2009, 14:05

Cám ơn bạn nhiều, bạn có thể làm luôn thuật giải nhà băng luôn đi rồi post lên cho mọi người kham khảo.

phamvietthanh

Tổng số bài gửi : 32
Join date : 19/02/2009
Age : 44

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty nếu bạn cần

Bài gửi  cathytranha 12/5/2009, 14:08

bạn vào câu hỏi ôn tập bạn down về có hết trong dấy
câu hòi ôn tập hệ điều hành

cathytranha

Tổng số bài gửi : 56
Join date : 20/02/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Bạn Châu Minh Hiền giỏi quá ta, cám ơn bạn post bài lên cho mọi người tham khảo

Bài gửi  phuong.ntt-08h1010074 12/5/2009, 14:59

hienminhchau2005 đã viết:- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.
- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.
- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.
- Thuật giải dùng kỹ thuật Busy-Waiting (chờ bận) với biến đếm count (chứa số sản phẩm trong Buffer):
+ Producer:
Code:

while(1){
while(count == BUFFER_SIZE); // Vòng lặp chờ bận
// Đưa sản phẩm vào Buffer
count++; // Tăng count lên 1
}

+ Consumer:
Code:

while(1){
while(count == 0); // Vòng lặp chờ bận
// Lấy sản phẩm từ Buffer
count--; // Giảm count đi 1
}

Ghi chú:
- Vòng lặp chờ bận phải liên tục kiểm tra giá trị biến đếm count, tốn thời gian CPU, dẫn đến giảm hiệu năng hệ thống.
- Có thể không dùng biến đếm count. Khi đó, vòng lặp chờ bận cho Producer được thực thi bằng:
Code:
while(((in+1)%BUFFER_SIZE)==out); // Vòng lặp chờ bận

Còn đối với Consumer thì dùng:
Code:
while(in==out); // Vòng lặp chờ bận

phuong.ntt-08h1010074

Tổng số bài gửi : 137
Join date : 05/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 15:04

phuong.ntt-08h1010074 đã viết:
hienminhchau2005 đã viết:- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.
- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.
- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.
- Thuật giải dùng kỹ thuật Busy-Waiting (chờ bận) với biến đếm count (chứa số sản phẩm trong Buffer):
+ Producer:
Code:

while(1){
while(count == BUFFER_SIZE); // Vòng lặp chờ bận
// Đưa sản phẩm vào Buffer
count++; // Tăng count lên 1
}

+ Consumer:
Code:

while(1){
while(count == 0); // Vòng lặp chờ bận
// Lấy sản phẩm từ Buffer
count--; // Giảm count đi 1
}

Ghi chú:
- Vòng lặp chờ bận phải liên tục kiểm tra giá trị biến đếm count, tốn thời gian CPU, dẫn đến giảm hiệu năng hệ thống.
- Có thể không dùng biến đếm count. Khi đó, vòng lặp chờ bận cho Producer được thực thi bằng:
Code:
while(((in+1)%BUFFER_SIZE)==out); // Vòng lặp chờ bận

Còn đối với Consumer thì dùng:
Code:
while(in==out); // Vòng lặp chờ bận
Ui da, hom nay Rong den nha Tom sao? Ban Nguyen Thi THanh Phuong? Nho comment nhieu nhieu vô. lol!
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 17:04

phuong.ntt-08h1010074 đã viết:
hienminhchau2005 đã viết:- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.
- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.
- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.
- Thuật giải dùng kỹ thuật Busy-Waiting (chờ bận) với biến đếm count (chứa số sản phẩm trong Buffer):
+ Producer:
Code:

while(1){
while(count == BUFFER_SIZE); // Vòng lặp chờ bận
// Đưa sản phẩm vào Buffer
count++; // Tăng count lên 1
}

+ Consumer:
Code:

while(1){
while(count == 0); // Vòng lặp chờ bận
// Lấy sản phẩm từ Buffer
count--; // Giảm count đi 1
}

Ghi chú:
- Vòng lặp chờ bận phải liên tục kiểm tra giá trị biến đếm count, tốn thời gian CPU, dẫn đến giảm hiệu năng hệ thống.
- Có thể không dùng biến đếm count. Khi đó, vòng lặp chờ bận cho Producer được thực thi bằng:
Code:
while(((in+1)%BUFFER_SIZE)==out); // Vòng lặp chờ bận

Còn đối với Consumer thì dùng:
Code:
while(in==out); // Vòng lặp chờ bận
Kha nang cau nay dc ra de rat cao.
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 20:34

tranmongthuy đã viết:thanks ban nhieu nha, minh cung dang tim bai nay
Khong co gi?
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 20:49

PhamThiKhanhHa đã viết:Mình print ra để học thôi, thanks bạn nhiều nha
Không có gi? lol!
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 23:02

phamvietthanh đã viết:Cám ơn bạn nhiều, bạn có thể làm luôn thuật giải nhà băng luôn đi rồi post lên cho mọi người kham khảo.
Ko co j?
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  buuhuynh 12/5/2009, 23:28

hienminhchau2005 đã viết:- Tiến trình sản xuất (Producer) tạo ra dòng thông tin để tiến trình tiêu thụ (Consumer) sử dụng.
- Ví dụ: Compiler và Assembler vừa là nhà sản xuất vừa là nhà tiêu thụ. Compiler tạo ra mã dùng cho Assembler, tiếp theo Assembler sản sinh mã máy làm đầu vào cho Loader hoặc Linkage Editor.
- Phát biểu bài toán: Bộ nhớ đệm Buffer bao gồm một số hữu hạn các khoang chứa (Items). Producer lần lượt đưa các sản phẩm S1, S2,…vào các khoang của Buffer. Consumer lấy sản phẩm ra theo đúng thứ tự. Công việc của các tiến trình phải đồng bộ với nhau: không đưa ra sản phẩm khi hết chỗ trống, không lấy được sản phẩm khi chưa có.
- Thuật giải dùng kỹ thuật Busy-Waiting (chờ bận) với biến đếm count (chứa số sản phẩm trong Buffer):
+ Producer:
Code:

while(1){
while(count == BUFFER_SIZE); // Vòng lặp chờ bận
// Đưa sản phẩm vào Buffer
count++; // Tăng count lên 1
}

+ Consumer:
Code:

while(1){
while(count == 0); // Vòng lặp chờ bận
// Lấy sản phẩm từ Buffer
count--; // Giảm count đi 1
}

Ghi chú:
- Vòng lặp chờ bận phải liên tục kiểm tra giá trị biến đếm count, tốn thời gian CPU, dẫn đến giảm hiệu năng hệ thống.
- Có thể không dùng biến đếm count. Khi đó, vòng lặp chờ bận cho Producer được thực thi bằng:
Code:
while(((in+1)%BUFFER_SIZE)==out); // Vòng lặp chờ bận

Còn đối với Consumer thì dùng:
Code:
while(in==out); // Vòng lặp chờ bận
Đọc bài này mình có chút ý kiến thế này mong các bạn góp ý, vấn để là ở assembler.Theo mình được biết assebler là trình biên dich. Máy tính làm việc bằng hợp ngữ, khi người dùng đưa dữ liều vào thì được assebler dich sang mã máy để máy tình thực thi chứ assembler không có khả năng sản sinh ra mã máy.Có thể bạn nhầm , và cũng có thể là kiến thức của tớ chưa tới mong các bạn góp ý .thanks
buuhuynh
buuhuynh

Tổng số bài gửi : 148
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 23:52

lqhlam đã viết:Thế bạn có thể giải thích lại về thuật giải nhà băng và hiền triết cùng ăn không ?
Ủng hộ cho tang level?
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 23:53

lqhlam đã viết:Thì ra là vậy. bạn ráng tìm thêm rồi úp cho moi người ha
OK.
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 12/5/2009, 23:57

cathytranha đã viết:bạn vào câu hỏi ôn tập bạn down về có hết trong dấy
câu hòi ôn tập hệ điều hành
Tang toc len cac ban oi!
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Giai thuat DINING-PHILOSOPHERS (Coù DEADLOCK)

Bài gửi  oanhtktrinh 13/5/2009, 00:05

Moi nguoi co ai dang hoc giai thuat DINING-PHILOSOPHERS (Coù DEADLOCK) ko chi cho minh voi.
Day la giai thuat
DINING-PHILOSOPHERS (Có DEADLOCK)

#include <stdio.h>
#include <windows.h>

#define numPhilosophers 5

#define LEFT id
#define RIGHT (id+1)%numPhilosophers

HANDLE chopsticks[numPhilosophers];
char chState[numPhilosophers+1];
char phState[numPhilosophers+1];

void PhilosopherThread(int id){
while (1) {
// Suy nghĩ ...
Sleep(GetTickCount()%2000);
// Đói, do vậy lấy đũa bên Trái
phState[id]='d';
WaitForSingleObject(chopsticks[LEFT], INFINITE);

chState[LEFT]='0';
printf("- Chopsticks:\\t%s\\n Philosophers:\\t%s\\n\\n", chState, phState);
Sleep(GetTickCount()%100);

// Rồi lấy đũa bên Phải
WaitForSingleObject(chopsticks[RIGHT], INFINITE);
chState[RIGHT]='0';
// Bắt đầu ăn ...
phState[id]='a';
printf("- Chopsticks:\\t%s\\n Philosophers:\\t%s\\n\\n", chState, phState);
Sleep(GetTickCount()%1000);
// Ăn xong
phState[id]='-';
// Đặt đũa Trái xuống
chState[LEFT]='1';
ReleaseMutex(chopsticks[LEFT]);
// Đặt đũa Phải xuống
chState[RIGHT]='1';
ReleaseMutex(chopsticks[RIGHT]);
}
}
void main(){
HANDLE handles[numPhilosophers];
DWORD threadID; int i;

chState[numPhilosophers]='\\0'; phState[numPhilosophers]='\\0';

for (i=0; i<numPhilosophers; i++){
chState[i]='1'; phState[i]='-';
}
for (i=0; i<numPhilosophers; i++)
chopsticks[i]=CreateMutex(0, FALSE, 0);

printf("- Chopsticks:\\t%s\\n Philosophers:\\t%s\\n\\n", chState, phState);

for (i=0; i<numPhilosophers; i++)
handles[i]=CreateThread(0,0,
(LPTHREAD_START_ROUTINE)PhilosopherThread,
(void *) i, 0, &threadID);
WaitForMultipleObjects(numPhilosophers, handles, TRUE, INFINITE);
for (i=0; i<numPhilosophers; i++) CloseHandle(chopsticks[i]);
}
oanhtktrinh
oanhtktrinh

Tổng số bài gửi : 64
Join date : 12/03/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Ui da, spam kìa

Bài gửi  TruongVanHieu_08H1010030 13/5/2009, 00:21

hienminhchau2005 đã viết:
cathytranha đã viết:bạn vào câu hỏi ôn tập bạn down về có hết trong dấy
câu hòi ôn tập hệ điều hành
Tang toc len cac ban oi!

Pó tay, spam kiếm exp nè, sang map mới train đi nào đồng chí Very Happy Mod ơi, xử spamer này đi Twisted Evil
Dù sao cũng cảm ơn vì đã post bài, ^^, thanks nhiều (và đừng comment trả lời nhá vì .... có 1 câu: không có j. Very Happy)
TruongVanHieu_08H1010030
TruongVanHieu_08H1010030

Tổng số bài gửi : 67
Join date : 23/03/2009
Age : 38
Đến từ : TP.HCM

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Bạn Châu Minh Hiền tích cực thiệt đó!

Bài gửi  nguyenthiphuongchi 13/5/2009, 02:29

Người ta thường bảo:"Cần cù bù thông minh mà". dù sao bạn cũng nhận được rất nhiều lời khen từ mọi người, cố gắng phát huy nha. Chúc bạn thi tốt!!
Mình nghĩ bài nào cũng cần coi kỹ cả, không loại trừ bài nào cả. ExclamationĐoán mò là tiêu. Very Happy


Được sửa bởi nguyenthiphuongchi ngày 13/5/2009, 10:31; sửa lần 1.

nguyenthiphuongchi

Tổng số bài gửi : 57
Join date : 24/02/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 13/5/2009, 07:39

TruongVanHieu_08H1010030 đã viết:
hienminhchau2005 đã viết:
cathytranha đã viết:bạn vào câu hỏi ôn tập bạn down về có hết trong dấy
câu hòi ôn tập hệ điều hành
Tang toc len cac ban oi!

Pó tay, spam kiếm exp nè, sang map mới train đi nào đồng chí Very Happy Mod ơi, xử spamer này đi Twisted Evil
Dù sao cũng cảm ơn vì đã post bài, ^^, thanks nhiều (và đừng comment trả lời nhá vì .... có 1 câu: không có j. Very Happy)
Cam on ban da spam dum minh nua nha! Very Happy
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 13/5/2009, 07:40

nguyenthiphuongchi đã viết:Người ta thường bảo:"Cần cù bù thông minh mà". dù sao bạn cũng nhẫn được rất nhiều lời khen từ mọi người, cố gắng phát huy nha. Chúc bạn thi tốt!!
Mình nghĩ bài nào cũng cần coi kỹ cả, không loại trừ bài nào cả. ExclamationĐoán mò là tiêu. Very Happy
Cam on nha, Minh dang kiem rating cao ay ma Very Happy
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  hienminhchau2005 13/5/2009, 08:36

oanhtktrinh đã viết:Moi nguoi co ai dang hoc giai thuat DINING-PHILOSOPHERS (Coù DEADLOCK) ko chi cho minh voi.
Day la giai thuat
DINING-PHILOSOPHERS (Có DEADLOCK)

#include <stdio.h>
#include <windows.h>

#define numPhilosophers 5

#define LEFT id
#define RIGHT (id+1)%numPhilosophers

HANDLE chopsticks[numPhilosophers];
char chState[numPhilosophers+1];
char phState[numPhilosophers+1];

void PhilosopherThread(int id){
while (1) {
// Suy nghĩ ...
Sleep(GetTickCount()%2000);
// Đói, do vậy lấy đũa bên Trái
phState[id]='d';
WaitForSingleObject(chopsticks[LEFT], INFINITE);

chState[LEFT]='0';
printf("- Chopsticks:\\\\t%s\\\\n Philosophers:\\\\t%s\\\\n\\\\n", chState, phState);
Sleep(GetTickCount()%100);

// Rồi lấy đũa bên Phải
WaitForSingleObject(chopsticks[RIGHT], INFINITE);
chState[RIGHT]='0';
// Bắt đầu ăn ...
phState[id]='a';
printf("- Chopsticks:\\\\t%s\\\\n Philosophers:\\\\t%s\\\\n\\\\n", chState, phState);
Sleep(GetTickCount()%1000);
// Ăn xong
phState[id]='-';
// Đặt đũa Trái xuống
chState[LEFT]='1';
ReleaseMutex(chopsticks[LEFT]);
// Đặt đũa Phải xuống
chState[RIGHT]='1';
ReleaseMutex(chopsticks[RIGHT]);
}
}
void main(){
HANDLE handles[numPhilosophers];
DWORD threadID; int i;

chState[numPhilosophers]='\\\\0'; phState[numPhilosophers]='\\\\0';

for (i=0; i<numPhilosophers; i++){
chState[i]='1'; phState[i]='-';
}
for (i=0; i<numPhilosophers; i++)
chopsticks[i]=CreateMutex(0, FALSE, 0);

printf("- Chopsticks:\\\\t%s\\\\n Philosophers:\\\\t%s\\\\n\\\\n", chState, phState);

for (i=0; i<numPhilosophers; i++)
handles[i]=CreateThread(0,0,
(LPTHREAD_START_ROUTINE)PhilosopherThread,
(void *) i, 0, &threadID);
WaitForMultipleObjects(numPhilosophers, handles, TRUE, INFINITE);
for (i=0; i<numPhilosophers; i++) CloseHandle(chopsticks[i]);
}
Thanks ban da post len ! Very Happy
hienminhchau2005
hienminhchau2005

Tổng số bài gửi : 71
Join date : 06/05/2009

Về Đầu Trang Go down

Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting. Empty Re: Phát biểu bài toán Sản xuất-Tiêu thụ với thuật giải dùng kỹ thuật Busy-Waiting.

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 1 trong tổng số 2 trang 1, 2  Next

Về Đầu Trang

- Similar topics

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