Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
+2
ngocdangI83C
Huynh Nu Huyen An(I92C)
6 posters
Trang 1 trong tổng số 1 trang
Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
Giả sử P1 có mã S1, P2 có mã S2, P3 có mã S3. Cần tổ chức để S2 và S3 thi hành sau S1
Ta có các đèn hiệu sau:
semmaphore synch2 =0, synch3 =0;
Cấu trúc P1:
S1
signal(synch2);
signal(synch3);
Cấu trúc P2:
S2
wait(synch2);
Cấu trúc P3:
S3
wait(synch3);
Admin
Sai !
Ta có các đèn hiệu sau:
semmaphore synch2 =0, synch3 =0;
Cấu trúc P1:
S1
signal(synch2);
signal(synch3);
Cấu trúc P2:
S2
wait(synch2);
Cấu trúc P3:
S3
wait(synch3);
Admin
Sai !
Huynh Nu Huyen An(I92C)- Tổng số bài gửi : 26
Join date : 22/09/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
cách mình hiểu như sau
semaphore S2 = 0, S3 = 0
Cấu trúc P1 -----------Cấu trúc P2 --------------------Cấu trúc P3
-----S1-------------------wait(synch2)--------------------wait(synch3)
---signal(synch2)--------S2-------------------------------wait(synch3)
---signal(synch3)------signal(synch3)----------------------S3
mong mọi người góp ý thêm
Admin
- Sai ! Lời giải đúng bao giờ cũng đơn giản, còn đây rắc rối quá.
- Cần biết cách đưa hình hoặc bảng lên ! Để thế ai đọc được ?
semaphore S2 = 0, S3 = 0
Cấu trúc P1 -----------Cấu trúc P2 --------------------Cấu trúc P3
-----S1-------------------wait(synch2)--------------------wait(synch3)
---signal(synch2)--------S2-------------------------------wait(synch3)
---signal(synch3)------signal(synch3)----------------------S3
mong mọi người góp ý thêm
Admin
- Sai ! Lời giải đúng bao giờ cũng đơn giản, còn đây rắc rối quá.
- Cần biết cách đưa hình hoặc bảng lên ! Để thế ai đọc được ?
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Giai 3 bai tap ve dong bo hoa cac tien trinh
Minh k bit cach dua hinh anh len, nen k post bai len dc.huu. cac ban bit chi cho minh voi nhe. cam on nhieu
Được sửa bởi NguyenThiThu(92c) ngày 9/11/2010, 14:48; sửa lần 2.
NguyenThiThu(92c)- Tổng số bài gửi : 4
Join date : 14/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
n tiến trình thì dùng n-1 đèn hiệu bạn ơi
Có 3 tiến trình P1,P2 và P3 có mã tương ứng là S1,S2 và S3
2 đèn hiệu :
semaphore synch1 = 0, synch2 = 0;
Admin
Đúng, nhưng dùng 1 đèn là hay nhất:
Bạn nào thử "bình luận" giải pháp mới này xem sao !
Có 3 tiến trình P1,P2 và P3 có mã tương ứng là S1,S2 và S3
2 đèn hiệu :
semaphore synch1 = 0, synch2 = 0;
Admin
Đúng, nhưng dùng 1 đèn là hay nhất:
P1 | P2 | P3 |
S1 | wait(synch); | wait(synch); |
signal(synch, 2); | S2 | S3 |
Bạn nào thử "bình luận" giải pháp mới này xem sao !
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
NguyenThiThu(92c) đã viết:Minh k bit cach dua hinh anh len, nen k post bai len dc.huu. cac ban bit chi cho minh voi nhe. cam on nhieu
Bạn vào ImageShack.us, tạo một account, bạn up hình lên đây rồi chép url chèn vào đây, enjoy!
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
Theo mình nghĩ lnhư bạn đấy.ngocdangI83C đã viết:n tiến trình thì dùng n-1 đèn hiệu bạn ơi
Có 3 tiến trình P1,P2 và P3 có mã tương ứng là S1,S2 và S3
2 đèn hiệu :
semaphore synch1 = 0, synch2 = 0;
TruongHuuHien(I92C)- Tổng số bài gửi : 76
Join date : 13/09/2010
Age : 36
Đến từ : HCM City
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
NguyenThiThu(92c) đã viết:Minh k bit cach dua hinh anh len, nen k post bai len dc.huu. cac ban bit chi cho minh voi nhe. cam on nhieu
Nếu bạn làm bài ra giấy thì chụp lại bằng đt hoặc máy ảnh rồi chép vào máy tính, sau đó up lên dd này khi post bài bằng cách chọn button "Hot an image" gần button "Image" (thầy chỉ mình )
dễ hơn nữa nếu bạn làm bài trong file word hay excel ... thì chụp lại bằng nút "Prnt Scrn" sau đó paste vào công cụ MSPaint trong windows, rồi lưu lại thành file -> up lên như cách trên.
Hy vọng bạn sớm làm được và post lên cho mọi người đc tham khảo
giải bài toán đồng bộ
Em cảm ơn thầy và các bạn đã nhận xét.Em sẽ đọc thêm để hiểu bài tập đúng.Mong được Thầy và các bạn có thể giải thích về bài tập này kĩ hơn.
Huynh Nu Huyen An(I92C)- Tổng số bài gửi : 26
Join date : 22/09/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
VuThanhLongI92 đã viết:NguyenThiThu(92c) đã viết:Minh k bit cach dua hinh anh len, nen k post bai len dc.huu. cac ban bit chi cho minh voi nhe. cam on nhieu
Nếu bạn làm bài ra giấy thì chụp lại bằng đt hoặc máy ảnh rồi chép vào máy tính, sau đó up lên dd này khi post bài bằng cách chọn button "Hot an image" gần button "Image" (thầy chỉ mình )
dễ hơn nữa nếu bạn làm bài trong file word hay excel ... thì chụp lại bằng nút "Prnt Scrn" sau đó paste vào công cụ MSPaint trong windows, rồi lưu lại thành file -> up lên như cách trên.
Hy vọng bạn sớm làm được và post lên cho mọi người đc tham khảo
mình cũng nhấn vào Host an image và nó link mình tới ImageShack
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
ngocdangI83C đã viết:n tiến trình thì dùng n-1 đèn hiệu bạn ơi
Có 3 tiến trình P1,P2 và P3 có mã tương ứng là S1,S2 và S3
2 đèn hiệu :
semaphore synch1 = 0, synch2 = 0;
Admin
Đúng, nhưng dùng 1 đèn là hay nhất:
Semaphore synch = 0;
P1 P2 P3 S1 wait(synch) wait(synch) signal(synch, 2) S2 S3
thầy ơi,sao lại 1 đèn, n tiến trình thì phải n-1 đèn chứ thầy
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
Cái số 2 ở phần signal(synch, 2) là đại diện cho 2 tiến trinh P2 và P3 phải ko thầy.
Ah bài này khác với bài tiến trình P1 đi trước rùi tới P2 sau đó tới P3. Thực chất chỉ cần 1 đèn là đủ báo hiệu cho P2 và P3 biết.
Bời vì P1 xong thi P2 và P3 làm việc nên ko cần thiết thêm 1 đèn nữa. Nhưng cái số 2 ở phần signal(synch, 2) là em chưa hiểu rõ.
Ah bài này khác với bài tiến trình P1 đi trước rùi tới P2 sau đó tới P3. Thực chất chỉ cần 1 đèn là đủ báo hiệu cho P2 và P3 biết.
Bời vì P1 xong thi P2 và P3 làm việc nên ko cần thiết thêm 1 đèn nữa. Nhưng cái số 2 ở phần signal(synch, 2) là em chưa hiểu rõ.
TruongHuuHien(I92C)- Tổng số bài gửi : 76
Join date : 13/09/2010
Age : 36
Đến từ : HCM City
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
ngocdangI83C đã viết:n tiến trình thì dùng n-1 đèn hiệu bạn ơi
Có 3 tiến trình P1,P2 và P3 có mã tương ứng là S1,S2 và S3
2 đèn hiệu :
semaphore synch1 = 0, synch2 = 0;
Admin
Đúng, nhưng dùng 1 đèn là hay nhất:
Semaphore synch = 0; P1 P2 P3 S1 wait(synch); wait(synch); signal(synch, 2); S2 S3
Bạn nào thử "bình luận" giải pháp mới này xem sao !
Giải :
Hàm signal được viết lại như sau:
signal(semaphore S, int i)
{
S = S + i ;
}
Giả sử tại thời điểm ban đầu, tiến trình P2 được thực hiện, hàm wait(synch) được thực hiện nhưng do lúc đầu synch (đèn hiệu) được gán bằng 0 nên tiến trình P2 sẽ bị quẩn ở đây cho đến khi nào synch(đèn hiệu) lớn hơn 0, tiếp theo giả sử tiến trình P3 được thực hiện, cũng như tiến trình P2, P3 sẽ bị quẩn tại hàm wait(synch) cho đến khi synch(đèn hiệu) lớn hơn 0
--> S2 và S3 sẽ chỉ được thực hiện khi S1 được thực hiện.
Khi tiến trình P1 được thực hiện, lệnh S1 được thi hành, rồi đế lệnh signal. khi lệnh này thi hành xong, synch (đèn hiệu) được tăng lên 2.
Tiếp theo giả sử tiến trình P2 được thực hiện, hàm wait sẽ giảm giá trị synch(đèn hiệu) xuống một đơn vị (synch = 1), tiếp tục lệnh S2 được thực hiện.
Hàm wait của tiến trình P3 có thể được thực hiện trước khi S2 được thực hiện, hàm wait này sẽ giảm giá trị synch(đèn hiệu) xuống một đơn vị (synch = 0), rồi lần lượt S2 , S3 được thi hành.
--> Luôn đảm bảo quy tắc S1 đi trước S2 và S3.
Em cảm ơn thầy đã chia sẽ.
Admin
Bạn này khá lắm, mặc dù vấn đề đang xét thực ra "đơn giản" (mà bản chất của mọi công nghệ là vậy, chỉ có cái đầu của chúng ta "rắc rối" thôi). Em nên đi vào Lập trình.
VoTrungThanh(I92C)- Tổng số bài gửi : 13
Join date : 15/09/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
bạn phân tích hàm signal rất chi tiết và cặn kẽ. Nhưng mình nghĩ đây là một cơ chế hỗ trợ cho việc sử dụng đèn hiệu được linh động hơn, còn thì về cơ bản nó vẫn nằm trong quan điểm là n tiến trình thì dùng n-1 đèn hiệu. Bình thường khi dùng sát nghĩa của quan điểm này thì giá trị của một đèn hiệu sẽ chỉ tăng 1 đơn vị trong hàm signal, còn ở đây khi hàm signal được viết lại và có thêm một tham số truyền thì giá trị của đèn hiệu tăng 2 đơn vị ở mỗi lần gọi hàm, phải chăng ở đây 1 đèn hiệu đã đảm nhận vai trò của 2 đèn hiệu...?giống đèn giao thông hiện tại là 3 đèn với 3 màu khác nhau, có thể thay bằng 1 đèn nhưng chớp tắt lúc xanh, lúc đó, lúc vàng
Admin
- Suy nghĩ đúng. Dùng 1 đèn hiệu nhưng với nhiều màu hơn là để thay thế các đèn "thừa" (trang bị thêm thì phải tốn tiền "mua"). Mà dùng 1 đèn thấy sáng sủa và dễ hiểu hơn. Hàm ReleaseSemaphore() của Windows dùng để thực thi signal() có tham biến thứ 2 là số lượng cần tăng cho giá trị của đèn hiệu.
- Bạn này tiến bộ nhiều quá. Nhờ kiên trì "học lại" đấy. Không uổng công đâu.
Admin
- Suy nghĩ đúng. Dùng 1 đèn hiệu nhưng với nhiều màu hơn là để thay thế các đèn "thừa" (trang bị thêm thì phải tốn tiền "mua"). Mà dùng 1 đèn thấy sáng sủa và dễ hiểu hơn. Hàm ReleaseSemaphore() của Windows dùng để thực thi signal() có tham biến thứ 2 là số lượng cần tăng cho giá trị của đèn hiệu.
- Bạn này tiến bộ nhiều quá. Nhờ kiên trì "học lại" đấy. Không uổng công đâu.
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
ngocdangI83C đã viết:bạn phân tích hàm signal rất chi tiết và cặn kẽ. Nhưng mình nghĩ đây là một cơ chế hỗ trợ cho việc sử dụng đèn hiệu được linh động hơn, còn thì về cơ bản nó vẫn nằm trong quan điểm là n tiến trình thì dùng n-1 đèn hiệu. Bình thường khi dùng sát nghĩa của quan điểm này thì giá trị của một đèn hiệu sẽ chỉ tăng 1 đơn vị trong hàm signal, còn ở đây khi hàm signal được viết lại và có thêm một tham số truyền thì giá trị của đèn hiệu tăng 2 đơn vị ở mỗi lần gọi hàm, phải chăng ở đây 1 đèn hiệu đã đảm nhận vai trò của 2 đèn hiệu...?giống đèn giao thông hiện tại là 3 đèn với 3 màu khác nhau, có thể thay bằng 1 đèn nhưng chớp tắt lúc xanh, lúc đó, lúc vàng
Admin
- Suy nghĩ đúng. Dùng 1 đèn hiệu nhưng với nhiều màu hơn là để thay thế các đèn "thừa" (trang bị thêm thì phải tốn tiền "mua"). Mà dùng 1 đèn thấy sáng sủa và dễ hiểu hơn. Hàm ReleaseSemaphore() của Windows dùng để thực thi signal() có tham biến thứ 2 là số lượng cần tăng cho giá trị của đèn hiệu.
- Bạn này tiến bộ nhiều quá. Nhờ kiên trì "học lại" đấy. Không uổng công đâu.
hihi,em cảm ơn thầy lắm lắm, em chỉ xin thầy cho em điểm chuyên cần và điểm diễn đàn nhiều một chút thôi ạ
Admin
- Điểm Diễn đàn được tối đa rồi đấy (3 đ). Điểm Chuyên cần cũng cao nhất luôn (2 đ), còn Điểm Giữa kỳ thì chắc 5 thôi (nhưng phải làm được ở mức độ nào đó) vì đề sẽ dựa vào những nội dung thảo luận trên Diễn đàn (xem kỹ phân tích của thày và các bạn thì làm được).
- Nhắc tất cả: Phải đi học đều vì Kiểm tra Giữa kỳ có thể bất cứ lúc nào !
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Re: Giaỉ quyết bài toán đồng bộ P1 tới trước báo hiệu P2 và P3 cùng chạy sau P1
Dạ em cảm ơn thầy nhiều lắm ạ!ngocdangI83C đã viết:ngocdangI83C đã viết:bạn phân tích hàm signal rất chi tiết và cặn kẽ. Nhưng mình nghĩ đây là một cơ chế hỗ trợ cho việc sử dụng đèn hiệu được linh động hơn, còn thì về cơ bản nó vẫn nằm trong quan điểm là n tiến trình thì dùng n-1 đèn hiệu. Bình thường khi dùng sát nghĩa của quan điểm này thì giá trị của một đèn hiệu sẽ chỉ tăng 1 đơn vị trong hàm signal, còn ở đây khi hàm signal được viết lại và có thêm một tham số truyền thì giá trị của đèn hiệu tăng 2 đơn vị ở mỗi lần gọi hàm, phải chăng ở đây 1 đèn hiệu đã đảm nhận vai trò của 2 đèn hiệu...?giống đèn giao thông hiện tại là 3 đèn với 3 màu khác nhau, có thể thay bằng 1 đèn nhưng chớp tắt lúc xanh, lúc đó, lúc vàng
Admin
- Suy nghĩ đúng. Dùng 1 đèn hiệu nhưng với nhiều màu hơn là để thay thế các đèn "thừa" (trang bị thêm thì phải tốn tiền "mua"). Mà dùng 1 đèn thấy sáng sủa và dễ hiểu hơn. Hàm ReleaseSemaphore() của Windows dùng để thực thi signal() có tham biến thứ 2 là số lượng cần tăng cho giá trị của đèn hiệu.
- Bạn này tiến bộ nhiều quá. Nhờ kiên trì "học lại" đấy. Không uổng công đâu.
hihi,em cảm ơn thầy lắm lắm, em chỉ xin thầy cho em điểm chuyên cần và điểm diễn đàn nhiều một chút thôi ạ
Admin
- Điểm Diễn đàn được tối đa rồi đấy (3 đ). Điểm Chuyên cần cũng cao nhất luôn (2 đ), còn Điểm Giữa kỳ thì chắc 5 thôi (nhưng phải làm được ở mức độ nào đó) vì đề sẽ dựa vào những nội dung thảo luận trên Diễn đàn (xem kỹ phân tích của thày và các bạn thì làm được).
- Nhắc tất cả: Phải đi học đều vì Kiểm tra Giữa kỳ có thể bất cứ lúc nào !
ngocdangI83C- Tổng số bài gửi : 85
Join date : 04/10/2010
Similar topics
» Thảo luận Bài 7
» Thảo luận Bài 7
» PHÁT BIỂU BÀI TOÁN SẢN XUẤT - TIÊU THỤ VỚI THUẬT GIẢI ĐỒNG BỘ HÓA 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ộ hóa bằng 2 đèn hiệu.
» Đèn hiệu:P1 Chay truoc roi den P2,P3
» Thảo luận Bài 7
» PHÁT BIỂU BÀI TOÁN SẢN XUẤT - TIÊU THỤ VỚI THUẬT GIẢI ĐỒNG BỘ HÓA 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ộ hóa bằng 2 đèn hiệu.
» Đèn hiệu:P1 Chay truoc roi den P2,P3
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