Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
5 posters
Trang 1 trong tổng số 1 trang
Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
Giả sử P1 có mã S1, P2 có mã S2, P3 có mã S3 cần tổ chức như yêu cầu
Ta dùng đèn hiệu như sau:
Các bạn tham gia phát triển góp ý bài tập này của Thày cho ha.
Ta dùng đèn hiệu như sau:
Các bạn tham gia phát triển góp ý bài tập này của Thày cho ha.
kimgiap(i92c)- Tổng số bài gửi : 144
Join date : 28/07/2010
Đến từ : Bình Định
Re: Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
Khi Cấu trúc 3 thực hiện xong thì sẻ thế nào, liệu có khả thi không?Sao mình không có 1 lời gọi Cấu trúc 1 lại để thực thi.kimgiap(i92c) đã viết:Giả sử P1 có mã S1, P2 có mã S2, P3 có mã S3 cần tổ chức như yêu cầu
Ta dùng đèn hiệu như sau:
Các bạn tham gia phát triển góp ý bài tập này của Thày cho ha.
quocviet_i92c- Tổng số bài gửi : 40
Join date : 09/11/2010
Re: Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
Tại vỉ P1 đang chạy thì P2 và P3 bị lock xong P1 rồi mới đến P2 thực thi, P3 vẫn còn lock đến khi P2 xong thì mới tới P3 thực thi.
kimgiap(i92c)- Tổng số bài gửi : 144
Join date : 28/07/2010
Đến từ : Bình Định
Re: Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
Lop truong oi cho minh hoi danh sach so thu tu mon nay ban post o dau vay? sao minh kiem ko duoc. ban giup cho minh cai link nha. Cam on nhiu nhiu.
KimThao_I83C_08H1012087- Tổng số bài gửi : 49
Join date : 14/09/2009
Age : 39
Đến từ : TP.Hồ Chí Minh
Re: Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
KimThao_I83C_08H1012087 đã viết:Lop truong oi cho minh hoi danh sach so thu tu mon nay ban post o dau vay? sao minh kiem ko duoc. ban giup cho minh cai link nha. Cam on nhiu nhiu.
https://hedieuhanh.forumvi.com/forum-f6/topic-t2449.htm
Re: Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 trước, tới P2 vào rồi mới tới P3 vào
Chương trình của bạn Giáp Đúng nhưng giải thích không đúng.
Thực ra, Khi tiến trình P3 thực hiện trước, thì P3 sẽ bị quẩn tại hàm wait(synch2) cụ thể là quẩn tại hàm kiểm tra điều kiện while(S<=0); với S là giá trị synch2 truyền vào --- hàm này sẽ liên tục kiểm tra giá trị synch2 đã lớn hơn 0 hay chưa (đèn hiệu 2 đã bật xanh chưa).
--> hàm S3 sẽ không được thực hiện cho đến khi tiến trình P2 chạy hoàn tất.
Giải thích tương tự : Khi P2 thực hiện trước , thì P2 cũng sẽ bị quẩn tại hàm wait(synch1) --- hàm này sẽ liên tục kiểm tra giá trị synch1 đã lớn hơn 0 hay chưa (đèn hiệu 1 đã bật xanh chưa).
--> hàm S2 sẽ không được thực hiện cho đến khi tiến trình P1 chạy hoàn tất.
Thứ tự đúng :
Tiến trình P1 chạy, S1 được thực hiện, tiếp theo lệnh signal(synch1) thực hiện, tăng synch1 lên 1 (đèn hiệu 1 chuyển xanh) --> tiến trình P1 chạy hoàn tất.
Lúc này hàm wait(synch2) trong cấu trúc P2 kiểm tra thấy synch1 > 0 (đèn hiệu 1 đã bật xanh) -- điều kiện while(S<=0); với S là giá trị synch1 truyền vào không còn đúng nữa nên hàm sẽ không còn bị quẩn, tiếp theo giá trị synch1 sẽ bị giảm xuống 1 --> kết thúc khối lệnh wait(synch1); kế tiếp S2 được thực hiện, sau khi S2 thực hiện xong, lệnh signal(synch2) thực hiện, tăng synch2 lên 1 (đèn hiệu 2 chuyển xanh) --> tiến trình P2 chạy hoàn tất.
Tiến trình P2 vừa chạy xong, hàm wait(synch2) trong cấu trúc P2 kiểm tra thấy synch2 > 0 (đèn hiệu 2 đã bật xanh) báo hiệu S3 được thực hiện.
Đảm bảo đúng nguyên tắc : P1 thực thi xong tới P2, P2 thực thi xong mới tới P3.
Admin
Bạn Võ Trung Thành lý luận tốt và đúng nhưng hơi bị lệ thuộc vào vòng lặp chờ bận (Busy-Waiting) trong wait() (tư duy kiểu "Vòng lặp"). Thực ra, bạn Kim Giáp dùng từ "Locked" (bị khóa) là đúng đấy, tức là khi đèn đỏ, tiến trình gặp nó phải chuyển sang trang thái Waiting (bị khóa và chờ) cho đến khi đèn xanh (giá trị >= 1).
Thực ra, Khi tiến trình P3 thực hiện trước, thì P3 sẽ bị quẩn tại hàm wait(synch2) cụ thể là quẩn tại hàm kiểm tra điều kiện while(S<=0); với S là giá trị synch2 truyền vào --- hàm này sẽ liên tục kiểm tra giá trị synch2 đã lớn hơn 0 hay chưa (đèn hiệu 2 đã bật xanh chưa).
--> hàm S3 sẽ không được thực hiện cho đến khi tiến trình P2 chạy hoàn tất.
Giải thích tương tự : Khi P2 thực hiện trước , thì P2 cũng sẽ bị quẩn tại hàm wait(synch1) --- hàm này sẽ liên tục kiểm tra giá trị synch1 đã lớn hơn 0 hay chưa (đèn hiệu 1 đã bật xanh chưa).
--> hàm S2 sẽ không được thực hiện cho đến khi tiến trình P1 chạy hoàn tất.
Thứ tự đúng :
Tiến trình P1 chạy, S1 được thực hiện, tiếp theo lệnh signal(synch1) thực hiện, tăng synch1 lên 1 (đèn hiệu 1 chuyển xanh) --> tiến trình P1 chạy hoàn tất.
Lúc này hàm wait(synch2) trong cấu trúc P2 kiểm tra thấy synch1 > 0 (đèn hiệu 1 đã bật xanh) -- điều kiện while(S<=0); với S là giá trị synch1 truyền vào không còn đúng nữa nên hàm sẽ không còn bị quẩn, tiếp theo giá trị synch1 sẽ bị giảm xuống 1 --> kết thúc khối lệnh wait(synch1); kế tiếp S2 được thực hiện, sau khi S2 thực hiện xong, lệnh signal(synch2) thực hiện, tăng synch2 lên 1 (đèn hiệu 2 chuyển xanh) --> tiến trình P2 chạy hoàn tất.
Tiến trình P2 vừa chạy xong, hàm wait(synch2) trong cấu trúc P2 kiểm tra thấy synch2 > 0 (đèn hiệu 2 đã bật xanh) báo hiệu S3 được thực hiện.
Đảm bảo đúng nguyên tắc : P1 thực thi xong tới P2, P2 thực thi xong mới tới P3.
Admin
Bạn Võ Trung Thành lý luận tốt và đúng nhưng hơi bị lệ thuộc vào vòng lặp chờ bận (Busy-Waiting) trong wait() (tư duy kiểu "Vòng lặp"). Thực ra, bạn Kim Giáp dùng từ "Locked" (bị khóa) là đúng đấy, tức là khi đèn đỏ, tiến trình gặp nó phải chuyển sang trang thái Waiting (bị khóa và chờ) cho đến khi đèn xanh (giá trị >= 1).
Được sửa bởi VoTrungThanh(I92C) ngày 10/11/2010, 01:26; sửa lần 1.
VoTrungThanh(I92C)- Tổng số bài gửi : 13
Join date : 15/09/2010
Similar topics
» Thảo luận Bài 7
» CÂU 3_ BÀI TẬP 1:ĐỒNG BỘ HÓA CÔNG VIỆC CÁC TIẾN TRÌNH P1,P2,P3 ĐỂ SAO CHO P1 TRƯỚC P2,P2 TRƯỚC P3
» Thảo luận Bài 7
» Thảo luận Bài 7
» Bài tập Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 và P2 trước P3
» CÂU 3_ BÀI TẬP 1:ĐỒNG BỘ HÓA CÔNG VIỆC CÁC TIẾN TRÌNH P1,P2,P3 ĐỂ SAO CHO P1 TRƯỚC P2,P2 TRƯỚC P3
» Thảo luận Bài 7
» Thảo luận Bài 7
» Bài tập Lập trình đồng bộ hóa công việc 3 tiến trình P1, P2, P3 sao cho P1 và P2 trước 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