II.2 Trường hợp trao đổi giữ an tiến trình (n>2)

Một phần của tài liệu Slide vấn đề thực hiện từ xa và vai trò của nó trong các hệ thống hiện đại (Trang 36 - 40)

II.2 Trường hợp trao đổi giữa n tiến trình (n>2)

Tiến trình 1 (server) Tiến trình 2 (client) Tiến trình i (client) Tiến trình n (client)

II.2 Trường hợp trao đổi giữa n tiến trình (n>2)

II.2 Trường hợp trao đổi giữa n tiến trình (n>2)

Trong trường hợp này, có tất cả n tiến trình liên lạc gắn bó Trong trường hợp này, có tất cả n tiến trình liên lạc gắn bó với nhau. Để liên lạc được thông suốt, khi gửi một thông

với nhau. Để liên lạc được thông suốt, khi gửi một thông

điệp, một tiến trình thứ i phải gửi luôn cả định danh của

điệp, một tiến trình thứ i phải gửi luôn cả định danh của

mình để tiến trình nhân biết được nhận từ đâu. Vì vậy, hàm

mình để tiến trình nhân biết được nhận từ đâu. Vì vậy, hàm

gửi cơ sở sẽ có dạng như sau:

gửi cơ sở sẽ có dạng như sau:

- Đối với bên dịch vụ (server) cũng cần có các hàm cơ

- Đối với bên dịch vụ (server) cũng cần có các hàm cơ

sở:

sở:

(<Tên tiến trình>, <yêu cầu>)=Cho_thong_bao

(<Tên tiến trình>, <yêu cầu>)=Cho_thong_bao

để chờ thông báo đến từ một tiến trình cụ thể có tên là

để chờ thông báo đến từ một tiến trình cụ thể có tên là

<tên tiến trình> và yêu cầu mà nó muốn trả lời.

<tên tiến trình> và yêu cầu mà nó muốn trả lời.

Hàm

Hàm Loại_yeu_cau(<yêu cầu>) Loại_yeu_cau(<yêu cầu>)

- Để phân tích yêu cầu mà tiến trình gửi cần đáp ứng

- Để phân tích yêu cầu mà tiến trình gửi cần đáp ứng

và hàm

và hàm

Gui_tra_loi(<kết quả, <tên tiến trình>)

Gui_tra_loi(<kết quả, <tên tiến trình>) dùng để gửi dùng để gửi kết quả cho tiến trình yêu cầu.

 Như vậy ta có các thuật toán:Như vậy ta có các thuật toán: Đối với phía yêu cầu

Đối với phía yêu cầu

Tiến trình thứ i (i>1)

tên=Gui_thong_diep(<yêu cầu>, <tiến trình 1>) Kết quả=Cho_tra_loi(<tiến trình 1>)

Kết thúc tiến trình i

Đối với phía phục vụ (tiến trình 1 - server)

Đối với phía phục vụ (tiến trình 1 - server)

Tiến trình 1

Vòng lặp

(<tên tiến trình gửi>, <yêu cầu>)=Cho_thong_bao Loại yêu cầu(<yêu cầu>)

;... thao tác trả lời theo yêu cầu vừa phân tích

Gui_tra_loi(<kết quả>, <tên tiến trình gửi>) Kết thúc vòng lặp

Sau khi thuật toán được đưa vào hoạt động, các tiến trình Sau khi thuật toán được đưa vào hoạt động, các tiến trình gửi yêu cầu cũng như trả lời đều biết mình gửi yêu cầu đến

gửi yêu cầu cũng như trả lời đều biết mình gửi yêu cầu đến

cho tiến trình nào và gửi yêu cầu trả lời cho ai.

cho tiến trình nào và gửi yêu cầu trả lời cho ai.

Tuy nhiên, ở đây chưa có cơ chế đồng bộ nên sẽ có nhiều Tuy nhiên, ở đây chưa có cơ chế đồng bộ nên sẽ có nhiều vấn đề phát sinh cần giải quyết như: khi tiến trình nhận

vấn đề phát sinh cần giải quyết như: khi tiến trình nhận

nhận cùng lúc hai yêu cầu thì thế nào? cần xử lý yêu cầu

nhận cùng lúc hai yêu cầu thì thế nào? cần xử lý yêu cầu

nào trước hoặc xảy ra tình trạng một tiến trình yêu cầu tiến

nào trước hoặc xảy ra tình trạng một tiến trình yêu cầu tiến

trình server trả lời nhưng chờ đến bất tận nhưng không có

trình server trả lời nhưng chờ đến bất tận nhưng không có

trả lời thì phải xử lý ra sao?... vấn đề này sẽ được bàn kỹ

trả lời thì phải xử lý ra sao?... vấn đề này sẽ được bàn kỹ

hơn trong phần đồng bộ các tiến trình.

Kết luận

Kết luận

Một phần của tài liệu Slide vấn đề thực hiện từ xa và vai trò của nó trong các hệ thống hiện đại (Trang 36 - 40)

Tải bản đầy đủ (PPT)

(41 trang)