Giải thuật phân tán

Một phần của tài liệu Mô phỏng giải thuật phân tán (Trang 32 - 35)

Với hệ truyền thông điệp hình thức hoá như trên, một giải thuật sẽ là một chương trình mang tính địa phương cho mỗi tiến trình trong hệ thống.

Chương trình này thực hiện tính toán, nhận và gửi các thông điệp tới các tiến trình lân cận trên đồ thị. Giải thuật phân tán do đó là giải thuật thực hiện đồng thời trên nhiều tiến trình. Giải thuật phân tán có những đặc trưng sau:

• Các bộ xử lý hoạt động độc lập (ràng buộc không chặt).

• Dữ liệu vào độc lập, dữ liệu ra tại nhiều vị trí.

• Các tiến trình có chương trình quản lý riêng rẽ, thực hiện đồng

• Các tiến trình có tốc độ chạy khác nhau.

• Truyền thông giữa các tiến trình không đồng bộ và không xác định.

• Trạng thái hệ thống không xác định, mỗi tiến trình chỉ nhận biết một phần trạng thái của hệ thống.

• Số bộ xử lý có thể không xác định.

Giải thuật phân tán được mô tả dưới dạng giả mã như sau: Mỗi tiến trình t trong hệ thống sẽ được điều khiển bởi thông điệp theo nghĩa nó chỉ thực hiện tính toán khi nhận được thông điệp từ tiến trình khác. Ngoại lệ duy nhất được phép là ít nhất một tiến trình lúc đầu gửi thông điệp một cách tự phát tới các tiến trình khác nếu không toàn bộ hệ thống sẽ rơi vào trạng thái để không vô hạn và không có quá trình tính toán nào diễn ra. Tương tự như thế một tiến trình lúc đầu có thể thực hiện các tính toán với mục đích khởi tạo.

Giải thuật Task_t dưới đây mô tả toàn bộ hành trạng của một tiến trình t bất kỳ (các ký hiệu được lấy theo các ký hiệu đã mô tả trong hệ truyền thông điệp ở trên). Số kênh ra từ tiến trình được ký hiệu bởi t nt.

Giải thuật Task_t: Tính toán

Gửi thông điệp trên mỗi kênh của một tập con (có thể rỗng) của Out T.

Repeat

Nhận thông điệp từ kênh c 1 thuộc In T and B 1. Tính toán

Gửi thông điệp trên mỗi kênh của một tập con (có thể rỗng) của Out T.

or

… or

Nhận thông điệp từ kênh c nt thuộc In t and B nt. Tính toán

Gửi thông điệp trên mỗi kênh của một tập con (có thể rỗng) của Out T.

Until tnhận biết điều kiện kết thúc toàn cục.

Bảng 2.1. Giải thuật Task_T

Tiến trình bắt đầu bằng việc thực hiện một số tính toán sau đó gửi t thông điệp tới một số tiến trình khác thông qua các kênh tin đi ra khỏi nó. Nó cũng có thể không gửi thông điệp gì cả. Sau đó t bước vào vòng lặp và thực hiện cho đến khi nhận biết điều kiện kết thúc toàn cục. Tại mỗi lần lặp t đều thực hiện tính toán và gửi thông điệp. Tiến trình nhận thông điệp kết thúc t quá trình xử lý địa phương của nó thông qua các thông điệp nhận được trong quá trình lặp. Các thông điệp này báo cho t biết không còn thông điệp nào đến nó nữa và nó có thể thoát khỏi vòng lặp.

Mỗi lần lặp của t gồm một tập các lệnh được liên kết qua toán tử or.

Mỗi lệnh chỉ được thực hiện khi nhận được thông điệp, đồng thời một điều t kiện Bk nào đó phải được thoả mãn. Điều kiện này phụ thuộc vào các thông điệp có thể nhận được. Như thế mỗi lần chỉ thực hiện một lệnh. Nếu không t có điều kiện nào được thực hiện tiến trình sẽ bị treo. Nếu nhiều hơn một điều kiện được thoả mãn một lệnh trong chúng sẽ được chọn một cách tuỳ tiện.

Tính bất định này cung cấp nhiều lựa chọn hơn khi thiết kế.

điệp có thể gửi tới tiến trình nhận trừ khi tiến trình nhận bị treo trong lúc nhận thông điệp trên kênh tin tương ứng khi toán tử gửi thông điệp đang thực hiện.

Nó là không chặn khi tiến trình truyền thông điệp ngay lập tức rồi quay lại tiếp tục thực hiện các lệnh khác. Toán tử gửi và nhận khi mang tính chặn hình thành cơ chế đồng bộ cho tiến trình. Toán tử gửi không chặn đòi hỏi một vùng đệm cho các thông điệp đã được gửi đi nhưng chưa được nhận. Khi truyền thông điệp tới nhiều hơn một tiến trình toán tử gửi được giả định truyền thông điệp đồng thời.

Tính chặn hay không chặn của toàn tử gửi đặt ra một số vấn đề trong thiết kế giải thuật phân tán. Khi toán tử gửi là chặn chúng ta không cần bộ đệm thông điệp. Kịch bản này đem lại nhiều khó khăn cho người thiết kế khi bế tắc trong truyền thông rất dễ xảy ra. Toán tử gửi không bị chặn đòi hỏi một bộ đệm thông điệp không giới hạn. Như vậy chúng ta đứng trước hai thái cực khác nhau với bộ đệm bằng không và bộ đệm vô hạn. Giữa hai thái cực này người ta đưa ra khái niệm dung lượng kênh là số thông điệp lớn nhất một k kênh tin có thể chứa trên bộ đệm. Trong thiết kế người ta bắt đầu bằng giả định bộ đệm vô hạn sau đó thiết kế dần dần cho tới khi đạt tới một trạng thái nào đó giữa bộ đệm vô hạn và không có bộ đệm. Trong nghiên cứu lý thuyết chúng ta sẽ giả định toán tử gửi có tính không chặn.

Một phần của tài liệu Mô phỏng giải thuật phân tán (Trang 32 - 35)

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

(85 trang)