1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu tìm hiểu ứng dụng sóng đệ qui phân tán

78 205 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 1,44 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

: 0i seq= e ≤ ≤i n Một chuỗi tuần tự các sự kiện trong các tiến trình GS= ULS USC Trạng thái toàn cục của hệ thống client-server Mô hình máy chủ - máy khách Deadtime Thời gian chết của

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

ĐẶNG CHUNG KIÊN

TÊN ĐỀ TÀI LUẬN VĂN

Chuyên ngành : XỬ LÝ THÔNG TIN VÀ TRUYỀN THÔNG

LUẬN VĂN THẠC SĨ KHOA HỌC

XỬ LÝ THÔNG TIN VÀ TRUYỀN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC :

TS HÀ QUỐC TRUNG

Hà Nội – 2010

Trang 2

LỜI CAM ĐOAN

Em xin được cam đoan luận văn này không sao chép từ các luận văn khác Các nội dung được đề cập trong luận văn do chính em nghiên cứu và biên soạn, các phần tham khảo từ các tài liệu chuyên môn khác được ghi rõ nguồn gốc và tác giả

Em xin cam đoan những nội dung nêu ra ở trên, nếu không đúng sự thật em xin chịu mọi trách nhiệm

Tác giả luận văn

ĐẶNG CHUNG KIÊN

Trang 3

2 Sóng đệ quy - công cụ đồng bộ hóa 13

II Công cụ thực hiện sóng đệ quy phân tán 14

2 Ví dụ về mô hình toán sóng đệ quy phân tán 21

3 Xây dựng giải thuật trên mô hình toán 21

V Xây dựng giải thuật phân tán bằng sóng đệ quy 22

1 Định nghĩa tập các giá trị cục bộ 23

2 Lựa chọn phương phức dò tìm các tiến trình lân cận 24

3 Thiết kề pha đi 24

I BÀI TOÁN SNAPSHOT TRONG HỆ THỐNG PHÂN TÁN 36

2 Các khái niệm cơ bản trong bài toán snapshot 36

3 Thuật toán snapshot cho hệ thống có các kênh truyền theo mô

hình FIFO

41

4 Thuật toán snapshot cho hệ thống có kênh truyền không theo mô 50

Trang 4

Trang 3 

hình FIFO

a Sơ lược về thuật toán snapshot trên hệ thống phi FIFO 50

II BÀI TOÁN ELECTION TRONG HỆ PHÂN TÁN 52

1 Sơ lược về bài toán election trong hệ phân tán 52

CHƯƠNG III: ỨNG DỤNG SÓNG ĐỆ QUY TRONG VIỆC GIẢI

QUYẾT CÁC BÀI TOÁN PHÂN TÁN

57

I BỐI CẢNH THỰC HIỆN SÓNG ĐỆ QUY PHÂN TÁN: 57

II ỨNG DỤNG SÓNG ĐỆ QUY TRONG BÀI TOÁN SNAPSHOT 57

III ỨNG DUNG SÓNG ĐỆ QUY TRONG BÀI TOÁN ELECTION 62

IV ĐÁNH GIÁ VÀ HIỆU CHỈNH THUẬT TOÁN SÓNG ĐẸ QUY

I Các thành phần cần thiết khi triển khai sóng đệ quy phân tán 66

II Đề xuất Message Passing Interface cho sóng đệ quy 67

1 MPI và lịch sử phát triển 67

2 Cấu trúc chung một ứng dụng MPI 68

a Một số khái niệm cơ bản 69

b Giao tiếp điểm điểm (Point-to-Point Communication) 71

PHỤ LỤC 1: HƯỚNG DẪN CÀI ĐẶT MPICH2 TRÊN MÔI

TRƯỜNG WINDOWS

77

Trang 5

Trang 4 

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

Chữ kí hiệu, chữ viết tắt Ý nghĩa

PC(x,y) Cost của đường đi (x,y)

PCmin(x,y) Cost của đường ngắn nhất giữa (x,y)

C(x,y) Cost của cung (x,y)

Ch(j)={x0=r,xi1,xi2,…,xj} Đường từ gốc đến node j

sons

R Tập các tiến trình con của tiến trình hiện tại

CHƯƠNG II

e = (p,s,s’,c,M) Sự kiện e xảy ra trên tiến trình p có trạng thái là s,

s’ là trạng thái sau khi e xảy ra thì có tin nhắn M trong kênh truyền c liên quan đến tiến trình p ( : 0i )

seq= e ≤ ≤i n Một chuỗi tuần tự các sự kiện trong các tiến trình

GS= ULS USC Trạng thái toàn cục của hệ thống

client-server Mô hình máy chủ - máy khách

Deadtime Thời gian chết của toàn bộ hệ thống khi thực hiện

sóng đệ quy phân tán dạng tuần tự

Deadtime Thời gian chết của toàn bộ hệ thống khi thực hiện

sóng đệ quy phân tán trên cây bao phủ

Trang 6

Trang 5 

Java RMI Java Remote Method Invocation

ISO International Organization for Standardization

HPC High Performance Computer, máy tính hiệu năng

cao MPICH2 High-performance and Widely Portable MPI,

chuẩn MPI được thiết kế cho hiệu năng cao và khả năng áp dụng rộng rãi trên nhiều môi trường

Trang 7

Trang 6 

DANH MỤC HÌNH VẼ

Trang

Hình 1: Pha đi và pha về trong sóng đệ quy phân tán 12

Hình 2: Ví dụ về mô hình sóng đệ quy phân tán 21

Hình 3: Loại bỏ vòng trong tìm đường ngắn nhất 29

Hình 4: Mạng bài toán tìm đường ngắn nhất 34

Hình 5: Sóng đi và về trong bài toán tìm đường ngắn nhất 34

Hình 6: Các thành phần cơ bản trong trạng thái toàn cục 36

Hình 7: bài toán đơn giản gồm hai tiến trình 39

Hình 8: Các chiều đi và về của thẻ trên các kênh 39

Hình 9: Một ví dụ đầy đủ về quá trình gửi nhận token 40

Hình 10: Ví dụ chuyển tiền trong hệ thống gồm 2 tài khoản 41

Hình 11: Quá trình nhận marker và ghi lại trạng thái 42

Hình 13: Quá trình gửi marker trên hệ thống 2 tài khoản 43

Hình 14: Một chu trình trên thuật toán Chandy-Lamport 43

Hình 15: Một ví dụ snapshot trong hệ thống ngân hàng 44

Hình 16: Lắt cắt thể hiện đúng trạng thái toàn cục hệ thống 45

Hình 18: Trạng thái marker trở về 46

Hình 21: Ví dụ về một mạng chạy thuật toán snapshot 57

Hình 22: Pha đi của sóng snapshot trên mạng 58

Hình 23: Mô hình cây của mạng thực hiện sóng snapshot 59

Hình 24: Mạng thực hiện thuật toán election 62

Hình 25: Pha đi và về của sóng áp dụng cho thuật toán election 63

Trang 8

• Sóng đệ quy phân tán là một công cụ mạnh trong việc giải quyết các bài toán phân tán

MỤC ĐÍCH NGHIÊN CỨU CỦA LUẬN VĂN:

• Nghiên cứu các vấn đề liên quan đến sóng đệ quy phân tán như khái niệm, mô hình, khả năng áp dụng và cách thức cài đặt cho một ngôn ngữ cụ thể

TÓM TẮT LUẬN ĐIỂM CƠ BẢN, CÁC ĐÓNG GÓP CỦA TÁC GIẢ

• Khái niệm sóng đệ quy phân tán, phân loại

• Mô hình toán học sóng đệ quy phân tán

• Quy trình xây dựng sóng đệ quy phân tán

• Ứng dụng sóng đệ quy phân tán vào một số bài toán phân tán

• Đề xuất mô hình cài đặt cho sóng đệ quy phân tán

PHƯƠNG PHÁP NGHIÊN CỨU:

• Các khái niệm được hình thức hóa bằng các mô hình toán học và mã giả

(Pseudocode)

• Đi từ các mô hình, sau đó áp dụng vào các ngôn ngữ cụ thể

Trang 9

Trang 8 

Trong quá trình nghiên cứu luận văn em đã gặp phải rất nhiều khó khăn nhưng được

sự giúp đỡ rất tận tình của TS HÀ QUỐC TRUNG cũng như các bạn bè trong lớp

XLTT&TT em đã hoàn thành được luận văn Thời gian thực hiện luận văn còn hạn hẹp cũng như kiến thức bản thân còn có những hạn chế nhất định nên luận văn không tránh khỏi những thiếu sót, rất mong nhận được ý kiến đóng góp của các thầy cô và bạn bè trong lớp Mọi thư từ xin được gửi về địa chỉ kiendc0308g@yahoo.com

Em xin chân thành cám ơn thầy HÀ QUỐC TRUNG cùng toàn thể bạn bè

trong lớp XLTT&TT khóa 2008-2010

Hà nội, ngày 10 tháng 10 năm 2010

Học viên

ĐẶNG CHUNG KIÊN

Trang 10

Trang 9 

PHẦN NỘI DUNG

CHƯƠNG I: KHÁI NIỆM VÀ HÌNH THỨC HÓA SÓNG ĐỆ QUY PHÂN TÁN

Trong các hệ thống song song, khối lượng tính toán được chia ra thực hiện trên nhiều bộ vi xử lý Với một số các hệ thống song song, topology và số lượng các bộ vi

xử lý kết nối vào hệ thống thay đổi trong khi chương trình được thực hiện Để có thể tiến hành phân phối cho các bộ vi xử lý, cần có các cơ chế điều khiển việc phân phối công việc cho các bộ vi xử lý Sóng đệ qui, một cấu trúc lập trình phân tán bằng các lời gọi đệ qui phân tán cho phép

• Lựa chọn bộ vi xử lý trong khi chương trình song song đang được thực hiện

• Quá trình lựa chọn có thể được tùy biến theo nhu cầu của chương trình cũng như theo sự thay đổi của phân bố tài nguyên

Nguyên lý cơ bản của sóng đệ qui là thực hiện song song các lời gọi thủ tục một cách

tự động, cung cấp khả năng cài đặt các thuật toán đệ qui trên các hệ thống song song

Từ khi bắt đầu phát triển lập trình phân tán, các khái niệm được sử dụng là truyền tin nhắn có đến khi xuất hiện lời gọi thủ tục từ xa (RPC Remote Procedure Call) RPC thay thế cho cơ chế gửi tin nhắn được sử dụng trong cách xây dựng các thuật toán dựa trên client-server và hơn nữa là các hệ điều hành phân tán hướng đối tượng Nó được thực thi trong các hệ điều hành một cách hiệu quả bao gồm 2,3 tin nhắn cho mỗi lần gọi Trong thực tế RPC được xem như một công cụ chính cho việc thiết kế hướng đối tượng khi chương trình đầu ra phải chạy được trên môi trường phân tán

Các cấu trúc điều khiển như “if then else”, “do loop” hoặc “while loop” là cơ bản trong lập trình tuần tự Cần một cấu trúc điều khiển phức tạp tương tự trong lập trình phân tán Cấu trúc điều khiển chính liên quan đến RPC là khái niệm các luồng và các hoạt động song song của các luồng thực hiện Sự tính toán lan truyền hay sóng tính toán là khái niệm mới trong cấu trúc điều khiển phân tán, nó có thể được sử dụng để xây dựng giải pháp mới cho nhiều vấn đề phân tán

Trong lập trình tuần tự, sự lặp lại và đệ quy là hai kiểu lập trình bổ sung cho nhau Thiết kế đệ quy dễ dàng trong các trường hợp có sự lặp lại Bởi vậy áp dụng đệ quy trong giải pháp đệ quy phân tán sẽ cho ra một cấu trúc rất mạnh Trong luận văn này chúng ta sẽ tìm hiểu khái niệm sóng đệ quy Nó được định nghĩa bởi một thủ tục được gọi trong quá trình thực thi các sự thực thi tự nó nếu sóng đệ quy xảy ra Chúng ta xem

Trang 11

Các bài toán đòi hỏi khối lượng tính toán lớn được giải quyết trên các hệ thống tính toán song song Các hệ thống này có thể là các máy tính song song siêu máy tính với phần mềm và phần cứng đồng nhất, chuyên dụng, cũng có thể là các máy tính không đồng nhất kết nối với nhau thông qua một mạng truyền thông Trên các máy tính song song, việc phân tải tính toán được thực hiện dựa trên giả thiết là topo mạng và số lượng bộ vi xử lý đều đã được biết trước khi thực hiện chương trình Trên hệ thống các máy tính không đồng nhất, những thông tin này không có sẵn, chương trình song song phải tự tìm kiếm các thông tin và phân phối tải tính toán theo các thông tin thu được Trong các trường hợp như vậy, cần một cơ chế tường minh hoặc ẩn để thu thập các thông tin về tình trạng của các bộ vi xử lý, điều khiển việc phân phối các công việc cho các bộ vi xử lý Đồng thời, khi các thông số của hệ thống thay đổi, cũng cần có cơ chế đảm bảo việc phân phối công việc phù hợp với sự thay đổi đã xảy ra Thông thường, việc này được thực hiện bằng các hệ thống hỗ trợ lập trình phân tán

Tuy nhiên, phân phối công việc ở mức thấp có nhược điểm là không tận dụng được các đặc điểm của bản thân thuật toán để thực hiện có hiệu quả trên cấu hình mạng Để giải quyết nhược điểm này, cần có những cấu trúc bậc cao cho phép chương trình có thể thu thập các thông tin về các bộ vi xử lý và điều khiển (ở mức cao) quá trình phân phối công việc Cơ chế sóng phân tán cho phép thu thập các thông tin về hệ thống Trong lập trình tuần tự, lời gọi thủ tục cho phép phân chia công việc thành các công việc nhỏ hơn để thực hiện Việc sử dụng cơ chế lời gọi thủ tục cho phép xây dựng các thuật toán rõ ràng, đơn giản, mạnh, nhưng lại làm giảm hiệu năng của thuật toán do sử dụng ngăn xếp hệ thống để lưu trữ các thông tin trung gian Các giải thuật phân tán đệ qui thừa kế được khả năng biểu diễn, tính đơn giản, rõ ràng của các giải thuật đệ qui tuần tự và tránh được việc sử dụng ngăn xếp nên không ảnh hưởng đến hiệu năng của giải thuật Các giải thuật phân tán đệ qui sử dụng cấu trúc lời gọi thủ tục từ xa (Remote Procedure Call - RPC) để thực hiện việc gọi các thủ tục trên các bộ vi xử lý khác nhau

Trang 12

Trang 11 

Việc kết hợp cấu trúc lời gọi thủ tục từ xa với cơ chế sóng phân tán cho phép xây dựng các giải thuật phân tán đệ qui rõ ràng, đơn giản, cho phép thu thập thông tin của hệ thống và điều khiển quá trình phân tán công việc trong hệ thống

I KHÁI NIỆM SÓNG ĐỆ QUY

Phần này sẽ đưa ra khái niệm sóng đệ quy, đây là một phương pháp lập trình để viết những thuật toán phân tán Cũng chú ý là thuật toán này được dùng để phát triển cho các máy tính có kiến trúc bộ nhớ kiểu MIMD trong họ các hệ thống phân tán

Một kỹ thuật cho việc thiết kế thuật toán phân tán là sóng đệ quy liên quan đến một khái niệm tính toán khuếch tán (diffusing computation) Một sóng quảng bá thông tin đến tất cả các địa điểm trong mạng, sau đó thu thập thông tin và chuyển ngược về nơi

đã phát đi thông tin quảng bá Tuy nhiên đường thông tin về không nhất thiết phải giống như đường thông tin quảng bá

a

c

e b

• Cái nhìn về tổng quan về lịch sử khái niệm sóng đệ quy

• Một công cụ đồng bộ hóa

• Cuối cùng là một định nghĩa chính thức của thuật toán sóng

Trang 13

Trang 12 

1 Lịch sử phát triển:

Thuật toán sóng đầu tiên, vào năm 1982 Chang đã đưa ra trong một bài báo, một mô tả thuật toán phân tán Echo Bài báo này đã mô tả nguyên lý tương tự như sóng nhưng thuật ngữ sóng chưa được đề cập đến Mô tả thuật toán tiếng vọng được tạo nên bởi các nguyên lý:

• Hoạt động cơ bản của thuật toán tiếng vọng là gửi đi các tin nhắn từ node này đến node khác trong một mạng

• Để đi qua hết mạng, có hai giai đoạn: một giai đoạn được tạo ra do các khám phá (explorer), một giai đoạn dội lại được sinh ra bởi tiếng vang (echo)

• Khi một sóng duyệt đến node đầu tiên, node tiếp theo sẽ phát đi các node khác ngoại trừ node mà đã gửi tin nhắn khám phá đi (node này được gọi là node hàng xóm đầu tiên) Một khám phá truyền đi các tiếng vang một cách

có hệ thống khi gặp một node đã đến bởi một khám phá khác

• Khi đến đồng thời một node từ các khám phá khác nhau, node đó sẽ chọn khám phá đầu tiền, các khám phá khác coi như là các tiếng vọng

• Một node có thể truyền đi tiếng vọng đến hàng xóm đầu tiên chỉ khi nó nhận được tiếng vọng của tất cả khám phá nó gửi đi

• Tất cả khám phá và tiếng vọng mang theo thông tin về các node mà chúng viếng thăm

Thuật toán tiếng vọng hoạt động một cách song song và không đồng bộ sử dụng các tin nhắn mang thông tin Chúng có thể bắt đầu hoặc kết thúc trong một hoặc nhiều node, các node phải hợp tác, nhất quán và khởi tạo các phần độc lập tham gia vào thuật toán Với dạng thuật toán này, Chang đã mang tới một kỹ thuật mới trong tính toán phân tán là tính toán dạng sóng Sau đó Raynal và Helary đã thể hiện thuật toán sóng đầu tiên như một công cụ đồng bộ bằng cách đưa ra một định nghĩa chính thức cho sóng

2 Sóng như một công cụ đồng bộ hóa:

Raynal và Helary đã thể hiện một thuật toán để giải quyết vấn đề về graph, nó bao gồm việc xây dựng một cây bao phủ cho mạng các bộ xử lý Cây phải được xây dựng với khoảng cách giữa các node n và node gốc trong mạng là giống nhau Kết thúc quá trình xử lý, bất kỳ process nào cũng biết kiến trúc cây mới và khoảng cách với node gốc, ID của người tiền nhiệm và người kế thừa

Node gốc là node khởi tạo, nó sẽ gửi đến mỗi láng giềng một tin nhắn Sau một lúc,

nó nhận lại các tin nhắn ngược lại Một quá trình tượng tự lại tiếp tục, sự gia tăng số

Trang 14

Trang 13 

lần gửi được thể hiện như một làn sóng Mỗi thông điệp sẽ mang thông tin cần thiết cho bất kỳ process để nhận diện được node tiền nhiệm và node kế thừa Trong thực tế, khi nó quay trở lại với 3 loại cờ được thiết lập: đã được đánh dấu, tiếp tục hoặc đã hoàn thành Phụ thuộc vào giá trị cờ từ một tiến trình x, tiến trình y có thể xóa nó đi khỏi danh sách node kế thừa hoặc thêm nó vào danh sách node tiền nhiệm Thuật toán kết thúc khi node gốc nhận được cờ đã hoàn thành của các node kế thừa

Khái niệm sóng như trình bày của thuật toán cho thây hai loại đồng bộ hóa: Đồng

bộ hóa địa phương: một tiến trình phải chờ cho đến khi nhận được tin nhắn lại của những node hàng xóm Đồng bộ hóa tổng thể: Quá trình khởi tạo của node gốc không thể bắt đầu một vòng mới nếu nó không nhận được tin nhắn của tất cả các node kế nhiệm

II Công cụ thực hiện sóng đệ quy phân tán:

Trước khi đến khái niệm sóng đệ quy thì ta phải xem khái niệm thủ tục, trong quá trình thực thi thủ tục này gọi n các thực thi của nó ở xa một cách đồng thời Từ đây nó thực hiện một sóng đệ quy dẫn đầy một cây như sau:

• Gốc cây là nơi đầu tiên gọi thủ tục

• Gốc và các lá liên quan đến khối thủ tục chờ tất cả các lời gọi đệ quy song song dừng

• Lá liên quan đến thực thi hiện tại của thủ tục hoặc liên quan đến sự dừng thực thi không có lời gọi đệ quy

Một thủ tục sóng đệ quy thường được gắn với một cấu trúc dữ liệu Cấu trúc dữ liệu bao gồm nhận diện tiến trình hiện tại, một tập các nhận diện các tiến trình trên các node kế cận… Chúng ta giả sử tất cả các giao tiếp và đồng bộ giữa các tiến trình trên các node đã được giải quyết bởi kiến trúc lời gọi thủ tục từ xa RPC (chuyển giao điều khiển và các tham số đầu vào) và thủ tục thoát (trở về lời gọi thủ tục liên quan với chuyển giao tham số đầu ra), không có dữ liệu bổ sung hoặc tin nhắn được truyền giữa các thực thi ở xa của thủ tục trên các bộ xử lý khác nhau

Để có thể thực hiện được các giải thuật sóng đệ quy, chúng ta cần có một số công cụ được sử dụng để biểu diễn Công cụ này bao gồm câu lệnh par để thực hiện gọi thủ tục trên nhiều các tiến trình và cách thức gọi các tiến trình trên các bộ xử lý khác từ bộ xử

lý hiện tại

Chúng ta xem xét n sự thực thi từ xa song song của một thủ tục, đầu tiên chúng ta cần đưa ra một cấu trúc điều khiển chương trình cho thực thi đồng thời của n nhiệm vụ trên

cùng một bộ xử lý, chúng ta sử dụng lệnh par

Trang 15

Khi thực hiện lệnh par chúng ta cần biết vị trí các node nơi tiến trình được thực hiện,

hay nói các khác là biết thông tin về các tiến trình khác để thực hiện, do vậy cần định nghĩa ID cho các tiến trình mà mỗi thủ tục thực thi từ xa, chúng ta xem xét cấu trúc thực hiện lời gọi thủ tục ở xa của một thủ tục (tên là <proc name>) trên một tiến trình

từ xa (tiến trình có ID là proc_id):

<proc name> (<parameter list>) on <proc_id>

Một tiến trình sẽ được gán cho một giá trị ID để nhận biết và các giá trị ID này tạo thành một miền định nghĩa các tiến trình

Việc thực thi của sóng đệ quy được xây dựng một mô hình cây của các tiến trình đang hoạt động trong mạng và quan tâm đến quan hệ giữa tiến trình gọi và tiến trình được gọi, theo ngôn ngữ thông dụng thì là quan hệ cha con, ở đây node gốc của cây chính là khởi đầu của sự tính toán

Với hai cấu trúc ở trên chúng ta có thể biểu diễn các lời gọi phân tán đệ quy như trong cấu trúc sóng đệ quy dưới đây

type processor_identifier is …; kiểu định nghĩa cho một tên bộ xử

Trang 16

Sóng đệ quy tuần tự là loại sóng đơn giản nhất sử dụng một lời gọi đệ quy trong một

hệ thống phân tán là gọi cùng một thủ tục trên chỉ một tiến trình trên một bộ xử lý khác từ xa Cây thực thi được giản lược thành một chuỗi các nhóm thủ tục trên một chuỗi các tiến trình Tại bất kì một thời điểm chỉ có một thủ tục chạy gọi một thủ tục

đệ quy trên một tiến trình khác Trong lập trình phân tán, topology liên quan đến sóng

đệ quy tuần tự là virtual ring, mỗi bộ xử lý được biết đến với bộ xử lý kế cận (bộ xử lý

sẽ được gọi đệ quy) và bộ xử lý đã gọi bộ xử lý hiện tại Bởi vậy sóng đệ quy tuần tự được định nghĩa bởi cấu trúc sau:

type processor_identifier is …; kiểu định nghĩa cho một tên bộ xử

Trang 17

2 Sóng đệ quy trên cây bao phủ

Bước mở rộng tiếp theo sau sóng đệ quy tuần tự là việc thực hiện sóng đệ quy trên một cây bao phủ với giả thiết là đã có một cây bao phủ logic trên hệ thống phân tán, khi đó một tiến trình sẽ có duy nhất một tiến trình cha trừ gốc và một tiến trình con trừ các lá

Có rất nhiều thuật toán hiệu quả để xây dựng một cây bao phủ (tham khảo [10], [11])

Sự tính toán được khởi tạo từ gốc của cây bao phủ, lời gọi đệ quy kết thúc khi sóng đến lá cây vì lá không có node con Định nghĩa bởi mã như sau:

type processor_identifier is …; kiểu định nghĩa cho một tên bộ xử

sons: setof processor_id;

procedure str_wave (<các_tham_số>) is

Trang 18

Một vấn đề với các giải thuật sử dụng kỹ thuật ngập lụt nói chung và sóng đệ qui ngập lụt nói riêng là quản lý việc lan tỏa của sóng đệ qui Có nhiều chiến lược quản lý khác nhau, mỗi chiến lược đều có điểm mạnh và điểm yếu riêng Cấu trúc sóng đệ qui cho phép ứng dụng các chiến lược khác nhau bằng cách thay đổi cách tính tập hợp lân cận neighbor

type processor_identifier is …; kiểu định nghĩa cho một tên bộ xử

ego: processor_id;

Khai báo processor_id hiện tại

neighbours: setof processor_id;

Khai báo các hàng xóm của bộ xử lý hiện tại

procedure flooding_rec_wave (visited_processors:setof processor_id;

<các_tham_số>) is

i: processor_id;

processor_to_visit: setof processor_id;

Các bộ xử lý tiếp theo sẽ được reach

begin

<Khối_lệnh_A>;

Trang 19

Nếu tập này không rỗng, flooding sẽ được thực hiện tiếp

if processors_to_visit <> empty_set then

đệ quy, vừa có tính chất phân tán, vừa có tính chất đệ qui do đó mô hình toán của sóng

đệ quy phải phản ánh cả hai tính chất này

Sóng đệ quy R có thể được định nghĩa bởi một tập 4 thành phần sau:

{D,S,P,R}

V=

Thành phần D: định nghĩa tập các dữ liệu cục bộ tại tiến trình i, có thể có nhiều các

thực thi thủ tục đệ quy đồng thời Mỗi sự thực thi thủ tục sẽ liên quan đến một tập dữ liệu Trong môi trường đệ quy cùng một dữ liệu có thể được sử dụng bởi các thủ tục khác nhau j

i

DL là dữ liệu cục bộ của mức thực thi tiến trình j trên tiến trình i j

i

DL được xây dựng từ hai tập dữ liệu:

Dữ liệu của tiến trình: dữ liệu cục bộ của tiến trình i DS i

Trang 20

Trong quá trình thực thi thủ tục, các giá trị của dữ liệu cục bộ có thể điều chỉnh bởi các

mã cục bộ D là hàm thể hiện các điều chỉnh này, nó phụ thuộc hai tham số: các giá trị của các biến cục bộ được điều chỉnh tại mức thực thi cấp k, k

i

DL và các giá trị tham số đầu vào của thủ tục gọi là VP Vậy có thể định nghĩa hàm D như sau:

DL =D DL VP

Thành phần S: lệnh par kích hoạt trên một loạt các tiến trình, thành phần S sẽ tạo

một tập chỉ mục các tiến trình này Tập này được tính toán với các giá trị cục bộ

i

DL của tiến trình đang hoạt động hiện tại và các giá trị tham số đầu vào VP Vậy hàm

S được định nghĩa như sau:

{ <DOMAIN > }=S(DL ,VP)i

Thành phần P: Nó đưa ra một tập các tham số của lời gọi thủ tục từ xa, cái mà sẽ

được gửi đến tiến trình k từ tiến trình i Tập này được tính toán với các dữ liệu cục bộ của i, các giá trị tham số đầu vào và ID của tiến trình được gọi k Vậy hàm P được định nghĩa như sau:

{PARAMETER VALUES− } =P DL VP k( i, , )

Thành phần R: Tính toán giá trị trả về cho tiến trình gọi Giá trị này được gửi đến

tiến trình, nó được tính toán với các giá trị cục bộ, các giá trị tham số đầu vào và tập các giá trị thu thập được từ các tập tiến trình con của tiến trình hiện tại làR sons Vậy hàm H được định nghĩa như sau:

Trang 21

Trang 20 

2 Ví dụ về mô hình toán sóng đệ quy phân tán:

Hình 2: Ví dụ về mô hình sóng đệ quy phân tán

Tiến trình i thực hiện một RPC trên các node lân cận j,k,l Mỗi RPC có các giá trị tham

i (tiến trình cha của k và l trên cây) Mỗi kết quả được tính toán bởi hàm H

Tiến trình j thực hiện một RPC trên các site x, y, z được tính toán bởi hàm S với các giá trị tham số được tính toán bởi P:

{A,B,C} cho x

{A’,B’,C’} cho y

{A’’,B’’,C’’} cho z

Sau đó kết quả được gửi về tiến trình j

3 Xây dựng giải thuật trên mô hình toán:

Dựa trên mô hình toán đã trình bày ở phần 1, cùng với cấu trúc sóng đệ quy phân tán ở phần II, chúng ta đưa ra được giải thuật trên mô hình toán như sau:

Trang 22

Trang 21 

type processor_id is …; Khai báo dạng processor_id

DS; tập dữ liệu cục bộ của site

V Xây dựng giải thuật phân tán bằng sóng đệ quy:

Quá trình xây dựng một giải thuật phân tán bằng sóng đệ qui có thể chia làm 3 bước:

- Xây dựng pha đi

- Xây dựng pha về

- Định nghĩa các biến và mối liên hệ

Pha đi liên quan đến tất cả các tính toán trước khi các tiến trình được kích hoạt để thực hiện một tính toán thực sự không đệ qui Như vậy, trong pha này có hai thao tác cơ

Trang 23

- Thăm các nút trong mạng theo một đường đi phù hợp với quá trình tính toán

- Kiểm soát các lời gọi sóng đệ qui đảm bảo để quá trình thực hiện tuân thủ đúng đường đi nói trên

- Đảm bảo không có đường đi vô tận

Chiến lược này được cài đặt bằng S

Bước tiếp theo trong pha đi là bước tính toán các tham số cần thiết cho lời gọi sóng đệ qui Cụ thể, P sẽ được tính toán và tạo thành các tham số đầu vào cho các lời gọi đệ qui

Pha về được bắt đầu khi có một lời gọi không sinh ra các lời gọi sóng đệ qui khác, thực hiện các tính toán của mình rồi trả kết quả về cho tiến trình gọi

Bước cuối cùng để xây dựng một sóng đệ qui là định nghĩa các biến Các biến biểu diễn các dữ liệu cục bộ trên từng tiến trình, trong đó có các dữ liệu về các tiến trình sẽ được gọi tiếp theo Việc sử dụng các biến tĩnh cho phép sử dụng các giá trị của chúng trong pha đi cũng như pha về

Mỗi khi một thủ tục được thực hiện tại một tiến trình, các dữ liệu động có thể bị biến đổi Nếu như một tiến trình thực hiện nhiều lời gọi khác nhau, khi đó cần quan tâm đến việc đảm bảo tính toàn vẹn dữ liệu Để thực hiện được mục tiêu này có thể có nhiều phương án giải quyết: sử dụng quyền truy cập loại trừ lẫn nhau, sử dụng các dấu kiểm soát thay đổi của các biến Tuy nhiên một cài đặt của RPC có lẽ sẽ là giải pháp hoàn chỉnh hơn cả

Thuật toán có thể chia được thành 5 bước:

1 Định nghĩa tập các giá trị cục bộ:

Định nghĩa được xem xét trong các tham số sau:

- Định nghĩa dữ liệu của site: DS i

- Định nghĩa dữ liệu thực thi: j

i

DE

Trang 24

Trang 23 

- Định nghĩa các tham số đầu vào

Các tham số này sẽ được khai báo ở phần đầu của mã giải thuật sóng đệ quy

2 Lựa chọn phương thức dò tìm các tiến trình lân cận

Để thiết kế thuật toán phân tán việc đầu tiên là lựa chọn chiến lược dò tìm các node kế cận ở các site khác Ví dụ: cây bao phủ là một phương thức Việc này là cần thiết vì các lý do sau:

- Cách thức thuật toán liên kết với mục tiêu tính toán

- Thể hiện các thành phần của lời gọi đệ quy và điểm dừng tìm kiếm các tiến trình

- Đưa ra điều kiện dừng, ví dụ như chiến lược dò tìm dẫn đến một cây vô hạn

3 Thiết kế pha đi

Sự tính toán phân toán được hoàn thành trong pha: pha đi và pha về Pha đi của sóng

sẽ di chuyển trên cây Trong phần cuối sẽ đưa ra các tham số để tính toán ID tiến trình khác nhau để gửi các RPC đến đó và chúng ta cũng cần biết các giá trị tham số của các RPC

Trong mỗi thủ tục thực thi tại một tiến trình, chúng thực hiện các toán tử với dữ liệu cục bộ và các giá trị tham số đầu vào của thủ tục Sau khi thực hiện các toán tử chúng gửi một RPC với các giá trị tham số mới, kết quả thực hiện trên dữ liệu cục bộ Pha đi được xem xét trong các tham số sau:

• Biểu hiện cho tất các các mức khác nhau của cây

• Tiều chuẩn của sự chính xác của các tham số được tính toán (khác nhau trong mỗi thuật toán)

• Tiêu chuẩn dừng

4 Thiết kế pha về:

Pha về hoàn thành từ lá đến gốc của cây bằng cách quay lại tiến trình cha (tiến trình gọi), và tiến trình cha này lại quy về tiến trình cha của nó, cứ thế cho đến khi nó về đến tiến trình nằm ở gốc của cây bao phủ Cách này đem lại các kết quả thu thập từ các lời gọi đệ quy và một tính toán cục bộ trên dữ liệu cục bộ và kết quả thu thập được Khi tính toán trên các tham số cục bộ cho thấy các lời gọi đã được thực hiện, sau đó quá trình hiện tại là một lá của cây lời gọi đệ quy và đệ quy backtrack có thể bắt đầu Các thuộc tính của sự quay lui được thể hiện trong các tham số:

Trang 25

Trang 24 

• Từ các lá chúng ta có thể chứng tỏ rằng tất cả các lá có chung một node cha

• Cung cấp một con đường từ đỉnh có độ sâu p đến một đỉnh có độ sau p-1 trong cây lời gọi đệ quy

Bước này liên quan đến hàm R

5 Liên kết các giá trị :

Tại mọi thời điểm thủ tục thực thi trên một site, các giá trị cục bộ của site được thay đổi, chúng ta phải kiểm soát việc này vì chúng có thể thay đổi kết quả của thuật toán Trong phần mô hình toán, chúng ta định nghĩa j

i

DL là một tập các dữ liệu cục bộ của sự thực thi tại tiến trình j được gọi từ tiến trình i Mỗi thời điểm một thủ tục được thực thi trên một tiến trình, dữ liệu cục bộ được thay đổi nhưng chúng ta không thể biết sự thay đổi đó Chúng ta bị ép buộc phải đồng bộ hoặc định kỳ cập nhật các sự thay đổi dữ liệu Với mục đích này chúng ta cần sử dụng một số các tham số sau:

• Quản lý lời gọi thủ tục từ xa (Quản lý ở mức thấp của phần mềm, ví dụ hệ điều hành)

• Loại trừ lẫn nhau

• Đánh dấu sự thay đổi của dữ liệu cục bộ

Trạng thái của thuật toán

VI BÀI TOÁN TÌM ĐƯỜNG NGẮN NHẤT VÀ SÓNG ĐỆ QUY PHÂN TÁN

Trong mạng máy tính, mỗi đường có một cost, một vấn đề là tìm đường giữa hai đỉnh sao cho cost nhỏ nhất có thể Vấn đề bao gồm việc tính toán đường ngắn nhất từ một đỉnh r được gọi là gốc đến tất cả các đỉnh khác Có rất nhiều phương pháp được đề nghị cho vấn đề tìm đường ngắn nhất, các giải pháp có thể dựa trên việc liệt kê, tức là quét toàn bộ các đường về gốc Cách khác chúng ta có thể tối ưu để tránh việc quét những đường không cần thiết Sự tối ưu đầu tiên là tránh xây dựng các đường cơ sở, gửi đi các RPC đến người gọi Tối ưu thứ hai là sử dụng nguyên lý Bellman để tính toán độ dài đường đi và sau đó lựa chọn đường ngắn nhất

Chúng ta đưa ra một số giả thiết: tất cả cost là dương, tất cả các đường đi là hai chiều

và giá trị (a,b) không cần giống giá trị của (b,a) Mỗi đỉnh x có các hàng xóm là ( )x

Γ và cost của (a,b) là ( , )C x y

Các ký hiệu sẽ được sử dụng trong phần này:

R ( , , )

G = X Γ C Đồ thị trọng số và hướng

Trang 26

Trang 25 

( )x

Γ Tập hợp các node hàng xóm của node x

PC(x,y) Cost của đường đi (x,y)

PCmin(x,y) Cost của đường ngắn nhất giữa (x,y)

C(x,y) Cost của cung (x,y)

Bước 1: Định nghĩa các giá trị cục bộ, định nghĩa các tham số:

• Định nghĩa dữ liệu cục bộ tại node i là DS i gồm hai thành phần: một thành phần động là DSd ivà một thành phần tĩnh là DSs i DSd ithường xuyên thay đổi (ví dụ khi một site mới được thêm vào) do vậy chúng ta định nghĩa:

Trang 27

local_sonsithể hiện các node con của node i tại thời điểm thực thi j Chúng là tất

cả các “hàng xóm” của site i ngoại trừ node cha của i Bởi vậy local_sonsicó thể được tính như sau:

{pcost,callers_list}

VP=

Ở đây:

pcost: cost of the path

callers_list : danh sách các site được thủ tục gọi

• Định nghĩa hàm D: Trong các phần trước chúng ta đã định nghĩa tập dữ liệu cục bộ như sau:

Đoạn mã như sau:

type InRec is record

caller-list: integer; pcost: string;

end record type OutRec is record

mpc: integer;

farther: integer;

Trang 28

Trang 27 

sons: string;

end record procedure short_path(in_Wave:InRec, out_Res:OutRec) is

Ở đây short_path là tên của sóng đệ quy, InRec và OutRec là các tham số đầu

vào và đầu ra

+ Bước 2: Phương thức dò tìm: Trong vấn đề đường ngắn nhất ta gặp phải vấn đề tìm

các node sẽ nhận được lời gọi RPC Trong phần này chúng ta sẽ xem xét vấn đề này:

• Tính toán tập hợp các node sẽ nhận RPC: Phương án ở đây là xây dựng đệ quy

các đường có độ dài l

(0) 0

Nếu tất cả các đường độ dài n-1 được xây dựng, thì tất cả các đường độ dài n là

có khả năng được xây dựng, điều này phụ thuộc vào thực tế là chúng thu được

từ cách mở rộng các đường độ dài n-1 và bằng tất cả các hàng xóm của cạnh

cuối cùng

• Tránh xây dựng đường vòng và chỉ ra một hành động không tránh được nó khi

tìm đường ngắn nhất: Giả sử circt

PC là cost của đường từ

1

i

x đến x, có cả vòng lặp trong đó, cách tính như sau:

PC − là cost của đường từ x i1đến x, không có cả vòng lặp trong đó,

nó được tính như sau:

Trang 29

Kết quả 1: Nó không hữu dụng để tiếp tục xây dựng một đường đến một node

mà cost lớn hơn một cái tính toán trước

Kết quả 2: Nếu path cost cho RPC hiện tại không tốt hơn một cái được tính toán trước thì sóng sẽ được dừng và RPC đang hoạt động sẽ được dừng

Luật mới được thiết lập:

• Ngọn nguồn của thuật toán dừng lời gọi thủ tục từ xa:

Chỉ trong trường hợp thuật toán không bao giờ dừng được thể hiện với lời gọi

đệ quy liên tục không dừng, điều này có nghĩa là điều kiện dừng của lời gọi đệ quy ( ( )k ) ( (k 1) )

PC ChPC Ch − không bao giờ đúng Hay nói một cách khác là số các cạnh là hữu hạn và …

⎪⎩

Trang 30

• Thể hiện cách tính cost của một đường và path cost nhỏ nhất

• Thể hiện tại lúc kết thúc pha đi, tất cả các node lá sẽ có đường ngắn nhất

Với gốc x0 =rchúng ta thiết lập

(0)

0 0

PC Ch =PC x x = do vậy path cost của gốc đến gốc là 0, từ đó chúng ta

có thể tính toán path cost từ gốc đến các node khác là:

E như là giá trị thứ p của cost nhỏ nhất từ site i khởi tạo

p = 0, cost sẽ là vô hạn đến tất cả các site ngoại trừ site 0

1 ( ( )i ) ( ( )j ) ( , )

PC Ch =PC Ch +C i j

Trang 31

Một giá trị cost thứ hai đến ( ( )k )

PC Ch đến từ một láng giềng khác (hoặc từ cha trong cây đệ quy) Để k là site ID của láng giềng và ( ( )k )

PC Ch là path cost của

nó Khi đó chúng ta có thể tính toán giá trị cost thứ hai từ gốc đến site i:

E sẽ tiến đến giá trị PCmin( , )r i

Kết quả là sau lần đến cuối cùng của sóng đệ quy, đường ngắn nhất sẽ được tính toán

• Định nghĩa hàm P: là hàm tham trị và mọi site cần biết path cost và tập các site gọi, G được định nghĩa như sau:

( j, , ) {pcost,callers_list +i} if { (i)-callers_list } { }

Trang 32

Trang 31 

Mọi site i sử dụng các thông tin sau:

• node cha của nó trong đường ngắn nhất

• cost nhỏ nhất của đường từ gốc đến nó

• Tính toán ID của các site con: Tại bước 3, mỗi site đã biết cha của nó trong đường ngắn nhất *

• Định nghĩa hàm H: tính toán và gửi kết quả trên sóng về đến tất cả các cấp của cây thực thi

fatheri là node cha của node i trong đường ngắn nhất và nó không cần thiết phải

là node cha trong cây thực thi

• Mã Chương trình:

while i in (neighbours – callers_list) do

if father(i) = ego then

Trang 33

Trang 32 

Chúng ta gặp phải vấn đề khi thực hiện tính toán các giá trị toàn cục sau mỗi khoảng thời gian, phụ thuộc vào trạng thái chuyển từ node cha sang node con hoặc ngược lại Khi một đỉnh x với node cha là y, nhận được một sóng đệ quy đến từ đỉnh z, khi đó z trở thành node cha mới và x sẽ quảng bá sóng đệ quy đến tất cả các hàng xóm của nó ngoại trừ node z Trong trường hợp này y là node cha cũ của x nhận được một instance mới của sóng và nó xóa trạng thái con của x và nếu instance mới là improving thì nó

sẽ thực thi thuật toán hiện tại và chúng ta xem xét việc thực thi chồng RPC trên một node Có hai con đường:

Một giải pháp toàn cục cho vấn đề này là đưa ra một chuỗi số (watch stamp) cho mỗi message được gửi hoặc RPC

Có thể sử dụng giá trị cost path để đưa ra thứ tự giữa các sự thay đổi Phần tiếp theo chúng ta sẽ sử dụng phương pháp này

ego: processor_identifier; ID của site hiện tại

callers_list, neighbours: setof processor-identifier;

alien: array [1 MAX_NEIGHBOURS] of OutRec;

R: OutRec;

begin

if Res.mpc < Wave.pcost then Điều kiện dừng của sóng

concat(Wave.callers, ego) Nếuđiều kiện dừng không xảy

ra thì node hiện tại

sẽ được thêm vào tập hợp Wave.callers

Res.mpc = Res.pcost

Trang 34

while i in (neighbours –callers_list) do

if alien(i).father = ego then

R.sons = concat(R.sons, ego)

endif;

enddo;

end short_path;

Để thấy rõ hơn chúng ta xem các biểu đồ sau là một ví dụ:

Hình 4: Mạng bài toán tìm đường ngắn nhất

Hình 5: Sóng đi và về trong bài toán tìm đường ngắn nhất

Trang 35

Trang 34 

Diễn giải:

Trên mạng có 5 node là {0,1,2,3,4}, đường đi giữa các node có cost khác nhau, ví dụ

từ node 0 đến node 2 là 4, từ node 1 đến node 3 là 8

Theo bước 2: xây dựng phương án dò tìm ta có

Xây dựng các tập các node cần gửi RPC

Bước 3: Pha đi

Node 0 sẽ khởi tạo quá trình tính toán đệ quy Node 0 sẽ gửi đến các node 2,3 các RPC với tham số lần lượt là (1,{0}) và (4,{0}) Sau đó từ node 1 nó gửi đi 2 lời gọi thủ tục RPC đến node 2 và 3 với các tham số là (2,{0,1}) và (8,{0,1}) và cứ thế tiếp tục cho đến khi gặp điều kiện dừng

Bước 4: Pha về

Khi đến lá của cây, việc tính toán sẽ được diễn ra và gửi kết quả về node cha

Ví dụ tại node 3, sau khi tính toán nó sẽ gửi về (3,4,nil,8) với 3 là ID của lá, 4 là node cha, nil là do nó là lá nên không có tập node con, 8 là path cost

Bước 5: Tổng hợp kết quả, ví dụ tại node 1 ta nhận được 2 kết quả về là (2,1,4,2) và (3,4,nil,8), vậy ta có kết quả trả về từ node 1 cho node 0

Trang 36

Trang 35 

CHƯƠNG II: TÌM HIỂU MỘT SỐ BÀI TOÁN PHÂN TÁN

I Bài toán snapshot trong hệ thống phân tán:

1 Sơ lược về bài toán snapshot:

Bài toán snapshot là bài toán xác định trạng thái của một hệ thống phân tán trong quá trình tính toán phân tán Các tiến trình trong một hệ thống phân tán giao tiếp với nhau bằng cách gửi và nhận các mẩu tin Một tiến trình có thể ghi lại trạng thái của nó và các mẩu tin được gửi và nhận hoặc cũng có thể không ghi lại gì Để xác định trạng thái toàn cục của hệ thống một tiến trình p phải tham gia vào các tiến trình khác và phải ghi lại trạng thái cục bộ và gửi bản ghi này đến p Tất cả các tiến trình không thể ghi lại trạng thái cục bộ của cùng một instant một cách chính xác trừ khi là truy nhập vào một đồng hồ chung Chúng ta giả sử rằng các tiến trình không chia sẻ nhau đồng hồ hoặc bộ nhớ Trạng thái của tất cả các tiến trình và trạng thái các kênh truyền hình thành một trạng thái toàn cục của hệ thống Thuật toán xác định trạng thái toàn cục được đặt lên trên cùng ngay dưới lớp tính toán, nó phải chạy đồng thời với lớp tính toán chứ không thay được lớp tính toán

Thuật toán dựa trên nguyên tắc của một nhóm các nhiếp ảnh gia, mỗi người sẽ chụp một tấm hình riêng và sau đó ghép lại ta được một tấm hình toàn cảnh, tất nhiên là tấm hình toàn cảnh không thể hoàn toàn chính xác do vấn đề đồng bộ nhưng bức tranh toàn cảnh vẫn đầy đủ ý nghĩa

2 Các khái niệm cơ bản trong bài toán snapshot:

Một hệ thống phân tán chứa một tập hữu hạn các tiến trình và một tập hữu hạn các kênh giữa các tiến trình Các kênh được gán nhãn và có hướng Ví dụ như trong hình sau:

Hình 6: Các thành phần cơ bản trong trạng thái toàn cục

Trang 37

Trang 36 

Các kênh được giả sử là có một số bộ đệm hữu hạn để phân phát các tin nhắn đi theo thứ tự gửi Thứ tự các tin nhắn nhận được trong một kênh giống như thứ tự các tin nhắn trong bộ đệm khi gửi đi.Trạng thái của một kênh là thứ tự của các tin nhắn được gửi đi về phía trước trong kênh và cũng bao gồm các tin nhắn nhận được ở phía trước trong kênh

Một tiến trình được định nghĩa bởi một tập hợp các trạng thái, một trạng thái khởi tạo

và một tập các sự kiện Một sự kiện e trong một tiến trình p là một hành động cơ sở có thể thay đổi trạng thái của p và các kênh c gắn liền với p Trạng thái của c có thể được thay đổi bằng cách gửi một tin nhắn trong c hoặc nhận một tin nhắn trong c Một sự kiện e được định nghĩa bởi:

• Tiến trình p mà trong đó sự kiện e xảy ra

• Trạng thái s của p ngay trước khi sự kiện e xảy ra

• Trạng thái s’ của p ngày sau khi sự kiện e xảy ra

• Kênh c, kênh mà trạng thái thay đổi bởi sự kiện

• Tin nhắn M được gửi bằng c hoặc nhận được bằng c

Nói cách khác chúng ta định nghĩa một sự kiện e bởi 5 thành phần (p,s,s’,c,M) ở đây c

và M các ký hiệu đặc biệt, nó sẽ rỗng nếu sự xảy ra của e không thay đổi trạng thái của bất kì kênh nào

Một trạng thái toàn cục (global state) của một hệ thống phân tán là một tập hợp các tiến trình và các trạng thái kênh: khởi tạo trạng thái toàn cục là trạng thái của mỗi tiến trình khởi tạo và trạng thái của các kênh là có hàng đợi rỗng (bộ đệm rỗng) Sự xảy ra của sự kiện e có thể thay đổi đến trạng thái toàn cục Chúng ta nói e = (p,s,s’,c,M) có thể xảy ra trong trạng thái toàn cục S nếu và chỉ nếu:

• Trạng thái của tiến trình p trong trạng thái toàn cục S là s

• Nếu kênh c là một kênh trực tiếp đến tiến trình p, khi đó trạng thái của c trong trạng thái toàn cục S là chuỗi tuần tự các tin nhắn với M ở vị trí dẫn đầu

Chúng ta định nghĩa một hàm next(S,e) là trạng thái toàn cục ngay sau khi sự kiện e xảy ra xong trong trạng thái toàn cục S Giá trị của next(S,e) là được định nghĩa nếu và chỉ nếu sự kiện e có thể xảy ra trong trạng thái toàn cục S, trong đó next(S,e) là trạng thái toàn cục chính đến S ngoại trừ:

• Trạng thái của p trong next(S,e) là s’

• Nếu e là kênh trực tiếp đến p, khi đó trạng thái của c trong next(S,e) là c’với tin nhắn M đã được xóa khỏi vị trí đầu

Trang 38

là trạng thái khởi tạo toàn cục và

• Sự kiện nội tại (Internal event)

• Sự kiện gửi tin nhắn

• Sự kiện nhận tin nhắn

ij

m là tin nhắn được gửi đi bởi tiến trình i đến tiến trình j, send m( )ijrec m( ij)là sự kiện gửi và nhận Trạng thái của tiến trình i được ký hiệu là LS ilà kết quả của một chuỗi các sự kiện được thực hiện bởi tiến trình i Một kênh là một thực thể phân tán, trạng thái của nó phụ thuộc vào các trạng thái cục bộ của các tiến trình mà nó liên quan Với một kênh C ij, tập các tin nhắn có thể được định nghĩa dựa trên trạng thái cục bộ của tiến trình i và j

( i, j) ij | ( ij) i ( ij) j

transit LS LS = m send mLSrec mLS

Trạng thái toàn cục của hệ thống phân tán là một tập hợp các trạng thái của các tiến trình và các kênh Ký hiệu trạng thái toàn cục là GS, ta có thể định nghĩa như sau:

Trang 39

Trang 38 

Nếu không có một đồng hồ vật lý toàn cục, một thủ tục đơn giản có thể sử dụng để ghi lại trạng thái toàn cục của hệ thống phân tán là: khởi tạo việc thu thập các snapshot được quyết định trong thời gian tương lai mà tại đó các snapshot được tạo ra và quản

bá thời gian này đến từng tiến trình Tất cả các tiến trình sẽ tạo snapshot cục bộ tại mỗi instant của thời gian toàn cục Snapshot của kênh C ijbao gồm tất cả các tin nhắn mà tiến trình j nhận được sau khi nó đã tạo được snapshot Hai vấn đề cần xem xét khi ghi lại trạng thái toàn cục thật sự của một hệ thống phân tán:

• I1:Cách nào phân biệt giữa các tin nhắn được ghi trong snapshot (tin nhắn trong trạng thái kênh và tin nhắn trong trạng thái tiến trình) Câu trả lời đến từ điều kiện C1 và C2 như sau: Bất kì tin nhắn được gửi đi bởi một tiến trình trước khi ghi lại trạng thái của nó phải được ghi trong trạng thái toàn cục (từ C1) Bất kỳ tin nhắn gửi đi bởi một tiến trình sau khi ghi lại trạng thái của nó không cần ghi trong trạng thái toàn cục (từ điều kiện C2)

• I2:Cách xác định một thể hiện khi một tiến trình ghi lại trạng thái của nó Câu trả lời đến từ điều kiện C2: Một tiến trình j phải ghi lại trạng thái của nó trước khi xử lý tin nhắn m ijđược gửi bởi tiến trình i sau khi ghi lại trạng thái của nó

Ví dụ 1: Để mô tả định nghĩa của một hệ thống phân tán, chúng ta xem xét một hệ

thống đơn giản bao gồm hai tiến trình p và q và có hai kênh c và c’ như trong hình dưới:

Hình 7: Bài toán đơn giản gồm hai tiến trình

Hệ thống chứa một token dùng để chuyển từ một tiến trình này sang một tiến trình khác và bởi vậy chúng ta gọi hệ thống này là single-token conversation Mỗi tiến trình

có hai trạng thái s0 và s1, ở đây s0 là trạng thái mà trong đó các tiến trình không xử lý token và s1 là trạng thái xử lý Trạng thái khởi tạo của p là s1 và của q là s0 Mỗi tiến trình có hai sự kiện:

• Gửi token từ trạng thái s1 đến trạng thái s0

• Nhận token từ trạng thái s0 đến trạng thái s1

Mô hình chuyển trạng thái của một tiến trình được thể hiện trong hình dưới:

Ngày đăng: 27/07/2017, 20:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Distributed recursive waves – Trung Ha Quoc, Marc Bui Khác
[2] An efficient APSP algorithm – Ivan Lavallée, Marc Bui, Trung Ha Quoc - 2004 [3] Systematic building of a distributed recursive algorithm – Gérard Florin, Roberto Gómez, Ivan Lavallée Khác
[4] Distributed system: Principles and Paradigms – Andrew S. Tanenbaum Maarten Van Steen Khác
[5]Echo Algorithms: Depth Parallel Operations on General Graphs – Ernest J. H. Chang - 1982 Khác
[6]Principles of Concurrent and Distributed Programming –M. Ben-Ari - 2 nd version 2006 Khác
[7]Recursive Distributed programming scheme – G. Florin, R. Gomez, I. Lavallée [8]The wave algorithms as a Self-stabilizing control structure – L. Duchien, G. Florin, R. Gomez, L. Seinturier Khác
[9] Introduction to Distributed Algorithms – Rachid Guerraoui, Luís Rodrigues - draff version Khác
[10] A Distributed Algorithm for Minimum-Weight Spanning Trees – R.G.Gallager, P.A. Humblet, P. M. Spira Khác
[11] Yet another distributed election and spanning tree algorithm – Ivan Lavallee, Christian Lavault Khác
[12] Distributed Snapshots: Determining Global States of Distributed Systems - K. Mani Chandy, Leslie Lamport -1985 Khác
[13] Elections in a Distributed Computing System - Hector Garcia, Molina - 1982 [14] Implementing Remote Procedure Calls - Andrew D. Birrell, Bruce Jay Nelson - 1984 Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w