Tải bản đầy đủ (.doc) (21 trang)

CÁC BIỂU THỨC SONG SONG và PHÂN tán TRONG các NGÔN NGỮ THUẬT TOÁN các điểm cải TIẾN CHỦ yếu để THUẬT TOÁN LAMPORT HOẠT ĐỘNG NHANH hơn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (256.33 KB, 21 trang )

Tiểu luận Hệ phân tán

LỜI NÓI ĐẦU
Trong tất cả các hệ thống tin học, bao giờ nó cũng cần cung cấp những cơ chế
đồng bộ hóa các tiến trình để bảo đảm hoạt động của các tiến trình đồng hành khơng tác
động sai lệch đến nhau vì hai lý do sau đây:
+

Nhìn chung, các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độc lập

muốn truy cập vào các tài nguyên với số lượng vốn rất hạn chế hay truy cập vào thông
tin dùng chung cùng một lúc. Trường hợp này gọi là truy cập tương tranh. Tương tranh
chính là nguyên nhân chính của các xung đột giữa các tiến trình muốn truy cập vào tài
nguyên dùng chung.
+

Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để giải

quyết các bài tốn đặt ra và cho kết quả nhanh chóng nhất. Điều này cho phép tăng hiệu
năng sử dụng thiết bị và hiệu quả hoạt động của chương trình. Hợp lực là nguyên nhân
chính của sự tác động tương hỗ được lập trình giữa các tiến trình nhằm cho phép chúng
tham gia vào các hành động chung.
Sự tương tranh và hợp lực giữa các tiến trình địi hỏi phải có trao đổi thông điệp
qua lại với nhau. Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật tốn
loại bỏ tương hỗ thông qua các biến cùng tác động trong một vùng nhớ chung. Trong hệ
tin học phân tán, các thông tin cần trao đổi thông qua các kênh thuộc hệ thống viễn
thông.
Trong khuôn khổ phần tiểu luận này, em xin trình bày một số khía cạnh cơ bản
sau:
+ Phần 1: Các biểu thức song song và phân tán trong các ngơn ngữ thuật tốn.
+ Phần 2: Thuật tốn đồng bộ các đồng hồ lôgic [Lamport] và các điểm cải tiến chủ


yếu để thuật toán Lamport hoạt động nhanh hơn.
Trong q trình trình bày tiểu luận chắc chắn có nhiều sai sót. Kính mong sự chỉ bảo
tận tình của thầy hướng dẫn.
Xin trân trọng cảm ơn thầy PGS.TS Lê Văn Sơn đã cung cấp kiến thức, tài liệu để
em hoàn thành tiểu luận này.

Võ Minh Tiến

1


Tiểu luận Hệ phân tán

CHƯƠNG I. TỔNG QUAN VỀ HỆ PHÂN TÁN
I.1. Hệ phân tán (Distributed System):
Hệ tin học phân tán là một hệ thống đa dạng, nhiều thành phần và phức tạp về mặt
cấu trúc, là vùng tri thức hiện đại đang được các chuyên gia công nghệ thông tin đặc
biệt quan tâm nghiên cứu và đổi mới một cách nhanh chóng. Trong điều kiện đó, đứng
trên một quan điểm khác nhau người ta đã đưa ra các định nghĩa khác nhau về hệ phân
tán như sau:
Theo định nghĩa của Andrew Tanenbanum:
Hệ phân tán là một tập hợp các máy tính độc lập mà xuất hiện đối với các người sử
dụng như một máy tính đơn. Với các đặc điểm:
 Nhiều bộ phận.
 Kết nối thông qua mạng truyền thơng.
 Chia sẻ các tài ngun.

Hình 1.1. Ví dụ về hệ phân tán - Một Intranet tiêu biểu
Nói chung, một định nghĩa phổ biến và khá đầy đủ về hệ phân tán được trình bày
trong tài liệu [1] như sau:

“Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ
thống xử lý thông tin bao gồm nhiều bộ xử lý hoặc bộ vi xử lý nằm các tại các vị trí
khác nhau và được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều
khiển thống nhất của một hệ điều hành.”
Mục tiêu của hệ phân tán:
 Tăng tốc độ bình quân trong tính tốn, xử lý.
 Cải thiện tình trạng ln luôn sẵn sàng của các loại tài nguyên.
 Tăng độ an tồn cho dữ liệu.
 Đa dạng hóa các loại hình dịch vụ tin học
 Đảm bảo tính tồn vẹn của thông tin.

Võ Minh Tiến

2


Tiểu luận Hệ phân tán
I.2. Các mơ hình hệ phân tán:
I.2.1. Các lớp dịch vụ phần mềm và phần cứng:

Các lớp phần mềm:
Kiến trúc phần mềm: cấu trúc của phần mềm như là các lớp và các module trong các
thuật ngữ của các dịch vụ đưa ra và yêu cầu giữa các tiến trình trên cùng hoặc trên các
máy tính khác nhau.
Platform (hệ nền): phần cứng mức thấp nhất và các lớp phần mềm (hệ điều hành).
Middleware: một lớp của phần mềm mà mục đích của nó là đánh dấu heterogeneity
và để cung cấp một mơ hình lập trình cho các ứng dụng, như: CORBA, RMI (Remote
Method Invocation), DCOM (Distributed Component Object Model),...
I.2.2. Kiến trúc hệ thống phân tán:
1.Mơ hình Client/Server:


Một WebServer thường là một client của một File Server cục bộ.
Các WebServer và các Server của Internet khác là các client của một DNS Server cái
mà dịch các tên miền Internet thành các địa chỉ mạng.
Một máy tìm kiếm là một Server, nhưng nó chạy chương trình được gọi là Web
Crawlers cái mà truy cập các Web server thông qua Internet cho thông tin yêu cầu.
 Dịch vụ cung cấp bởi nhiều server:

Võ Minh Tiến

3


Tiểu luận Hệ phân tán

Nhiều Server có thể:
 Mỗi phần là một tập hợp các đối tượng.
 Duy trì các bản copy của toàn bộ tập hợp các đối tượng trên một vài máy.
 Ví dụ Web Proxy Server:

Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại một site
hoặc băng qua một vài site khác nhau.
2.Mơ hình tương tác trong hệ phân tán:
 Thực hiện truyền thơng:
 Sự tiềm ẩn (Latency):
Sự trì hỗn lan truyền: thời gian cần thiết để một bit đầu tiên của một thơng
điệp truyền đến được đích.


Sự trì hỗn truyền: là khoảng thời gian giữa sự truyền bit đầu tiên và bit sau

cùng của một thơng điệp.


Sự trì hỗn xử lý: là thời gian cần để hệ điều hành xử lý/gữi/nhận thơng
điệp.


Sự trì hỗn xếp hàng: thời gian cần để một thông điệp xếp hàng ở cuối máy
chủ hoặc ở các node trung gian đợi để truyền đi.


 Băng thơng (bandwidth): Tổng số thơng tin có thể được truyền đi trong một
thời gian đã cho.
Võ Minh Tiến

4


Tiểu luận Hệ phân tán
 Sự biến đống tạp (Jitter): thời gian khác nhau giữa các sự trì hỗn ảnh hưởng
bởi các thông điệp khác nhau.
 Đồng hồ và thứ tự các sự kiện:
 Khơng có khái niệm tồn cục của thời gian.
 Nhịp độ đồng hồ trôi: nhịp độ tương đối ở một đồng hồ máy tính trơi dạt ra
khỏi từ một đồng hồ tham chiếu hoàn hảo.
 Đồng bộ hóa đồng hồ:
 Hệ thống định vị tồn cầu (GPS): một ít máy tính có thể sử dụng máy thu
radio để nhận thời gian đọc từ GPS với độ chính xác là 1 micro-giây. Chúng có
thể gửi các thơng điệp thời gian đến các máy tính khác trong mạng tương ứng của
chúng.

 Các đồng hồ logic: mỗi thông điệp là thời gian đóng dấu lên với một số nối
tiếp mà phản chiếu thứ tự lôgic của chúng.

Võ Minh Tiến

5


Tiểu luận Hệ phân tán

CHƯƠNG II. CÁC BIỂU THỨC SONG SONG VÀ PHÂN TÁN
TRONG NGƠN NGỮ THUẬT TỐN
II.1. Giới thiệu:
Để thực hiện các tính tốn song song, hoặc phân tán một số ngôn ngữ đưa ra một
cách triển khai thực hiện khác nhau, nói chung có thể chia thành hai nhóm:
1. Một số ngơn ngữ cho phép lập trình các ứng dụng với tư cách là thực hiện song
song và hồn tồn khơng quan tâm đến vấn đề là triển khai ứng dụng trên hệ tập trung
hay hệ phân tán. Các ngôn ngữ này triển khai các cấu trúc kiểm tra có tính chất thủ tục.
Mặc dù có một số hạn chế song chúng cũng có thể triển khai trên hệ phân tán.
2. Một số ngôn ngữ khác cho phép triển khai tường minh công việc phân tán. Chúng
cho phép tạo ra các quan hệ cần thiết từ một trạm đến trạm khác trong hệ phân tán.
II.2. Biểu thức song song trong ngôn ngữ:
Hai ngôn ngữ phổ biến cho phép thực hiện các tính tốn song song là CSP
(Communication Sequential Processes) và ADA, các phương tiện định nghĩa các tiến
trình và thực hiện trao đổi thông tin giữa chúng với nhau. Hai ngôn ngữ này cho phép
phân đoạn dữ liệu của một ứng dụng thành các tập hợp độc lập với nhau. Việc quản lý
các tập hợp này được thực hiện nhờ một tiến trình độc lập.
Cả hai ngơn ngữ đều có đặc tính chung như sau:
 Sự liên thơng giữa hai tiến trình khơng cần đặt lại cho sự tồn tại của các biến toàn
cục.

 Các cơ chế cho việc đồng bộ hóa là sơ đẳng như “cuộc gặp gỡ” của hệ CSP, hoặc
“điểm vào” của ADA thường là gần giống nhau.
 Các cấu trúc mô phỏng tạo thuận lợi cho các tiên trình thể hiện việc chờ tương
đối đồng nhất và có điều kiện phù hợp với một trong hai khả năng có thể.
 Các nguyên lý khác nhau cho ta khả năng lựa chọn cấu trúc thể hiện quan hệ giữa
các tiến trình cũng như cơng cụ song song cho phép truy cập đến dữ liệu.
 Trong hệ CSP, các quan hệ và sự đồng bộ hóa giữa các tiến trình được thể hiện
tường minh bằng các trao đổi thông điệp. Ngược lại, trong hệ ADA, một tiến
trình P1 nào đó có thể truy cập vào dữ liệu cục bộ của tiến trình P2 khác bằng
cách sử dụng hàm nguyên thủy mà hiệu ứng của nó là việc thực hiện thủ tục. Các
sự đồng bộ hóa thực tế (tùy vào tình hình) được thể hiện bởi P2 nhờ các cấu trúc
thích hợp.
 Trong hệ CSP, số lượng và lai lịch của các tiến trình được định nghĩa theo kiểu
tĩnh. Một dữ liệu nào đó chỉ có thể được truy cập bởi tiến trình có nhiệm vụ quản
lý rõ ràng, trong khi đó ADA cho phép nhiều tiến trình truy cập đến dữ liệu (việc
kiểm sốt dữ liệu được giao cho một tiến trình đặc biệt).
Dưới đây chúng ta sẽ đi sâu nghiên cứu một cách sơ lược hai ngơn ngữ trên để có
thể nắm được cách thức làm việc về các biểu thức song song trong các ngơn ngữ thuật
tốn nói chung.

Võ Minh Tiến

6


Tiểu luận Hệ phân tán
II.2.1. Ngôn ngữ CSP:
Ngôn ngữ CSP cho phép lập chương trình ứng dụng dưới dạng một số lượng tiến
trình cố định. Các tiến trình này có thể phối hợp với nhau nhờ phép toán liên lạc kiểu
“cuộc gặp gở”.

Một chương trình bao gồm tập hợp các tiến trình có thể thể hiện dưới dạng như sau:
[<Tiến trình 1> || <Tiến trình 2> || ... || <Tiến trình n>]
Trong đó, <Tiến trình i> dựa vào liên hợp một tên với mã chương trình nguồn của
tiến trình:
Name:: <Text>
Ở đây các biến toàn cục bị cấm sử dụng.
Các tiến trình cần phải có hai hàm ngun thủy để trao đổi. Đó là gửi (phép ra) và
nhận (phép vào) một thơng điệp. Mỗi tiến trình cần phải định danh tường minh người
đối thoại (đối tác) của mình và các thơng điệp đúng kiểu. Các vào-ra điển hình được
đảm bảo bằng các tiến trình được định nghĩa trước phối hợp với các ngoại vi mắc nối.
Để gửi một thông điệp cho tiến trình Q, tiến trình P phải sử dụng lệnh ra có dạng như
sau:
Q!<Biểu thức>
Việc tiếp nhận thơng điệp tại Q, được tiến hành thơng qua lệnh có dạng như sau:
P?<Biến>
Ta lưu ý rằng cả hai lệnh đều đòi hỏi phải có trao đổi. Đương nhiên để trao đổi được
tiến hành cần phải có các điều kiện (cuộc gặp gỡ) có nghĩa là trạm nhận cần phải thực
hiện lệnh vào tương ứng với lệnh ra của trạm phát và các định dạng thông điệp phải
được hai bên hiểu rõ ràng. Nói cách khác, bên phát chuyển vào trạng thái chờ đợi thích
hợp.
Ta phải có các thơng điệp cấu trúc hóa ví dụ như chuyển hai giá trị ngun có thể thể
hiện như sau:
Q!(4, 5) trong P
P!(i, j) trong Q
Việc kiểm tra chặt chẻ trên lại lịch của người đối thoại và trên kiểu của các thông
điệp trao đổi được tiến hành khi thử hiệu chỉnh và dịch chương trình. Ngược lại, chính
việc kiểm tra đó có thể lại là việc bắt buộc đối với người lập trình.
 Ví dụ:
Ví dụ này nhằm giúp thể hiện việc đợi một thông điệp nào đó từ một tập hợp các tiến
trình. Một cấu trúc thú vị của phát biểu bảo vệ trong tài liệu Dijkstra cho phép mô tả các

khả năng chờ đợi có thể theo kiểu tương tự như là cơng việc cần lựa chọn.
Một phát biểu bảo vệ thể hiện một sự lựa chọn giữa các tiến trình xử lý căn cứ vào
giá trị điều kiện gọi là bảo vệ (garde). Trong các bảo vệ có thể xuất hiện các biểu thức
logic và các lệnh nhận thơng điệp.
Một bảo vệ có thể thay đổi, nếu và chỉ nếu các biểu thức logic chứa nó thay đổi và
nếu một thơng điệp tương ứng kiểu chờ được tiếp nhận. Việc thực hiện một phát biểu
Võ Minh Tiến

7


Tiểu luận Hệ phân tán
bảo vệ tương ứng với việc thực hiện một xử lý được lựa chọn ngẫu nhiên giữa chúng
mà có giá trị là true. Khi các bảo vệ đều nhận giá trị false, ta chuyển sang trạng thái chờ
nhận thơng điệp; nếu khơng có bảo vệ nào chứa phép tốn “nhận” thì chương trình bị
sai.
Phát biểu bảo vệ thể hiện dưới dạng như sau:
[<Bảo vệ 1>  T1
<Bảo vệ 2>  T2
...
]
Bảo vệ cấu trúc này có thể được sử dụng theo kiểu lặp lại và thể hiện như sau:
*[ ... ... ...]
Việc lặp lại chỉ dừng khi tất cả các bảo vệ nhận giá trị false.
 Ví dụ 1:
Giả sử rằng hai biến X và Y có kiểu tương ứng là T1 và T2 và một chương trình
được viết như sau:
[P:: ...|| Q(I: 1..10):: ... || R:: ... ]
Trong đó, khái niệm Q(I: 1..10) cho phép khai báo 10 tiến trình Q(1), Q(2), ..., Q(10)
cùng một nguồn.

Ta hãy xem xét phát biểu sau đây trong R, nơi mà biến Z được khai báo:
[P?X  T1
Z=0; P?Y  T2
(J: 1..10) Q(j)?X  T3(J) ]
có nghĩa là ta đang đợi một thơng điệp kiểu X từ tiến trình P hoặc nếu biến Z nhận
giá trị 0 thì một thơng điệp loại Y từ P hoặc cịn một thơng điệp kiểu X đến từ một trong
10 tiến trình Q(j). Dựa theo bản chất của thông điệp đầu tiên nhận được và giá trị của Z,
R thực hiện các phát biểu T1 hay T2 hay T3(j).
Nếu có nhiều thơng điệp chấp nhận được đã sẵn sàng, R sẽ chọn theo kiểu ngẫu
nhiên. Ngược lại nếu khơng có thơng điệp nào cả, R chuyển sang trạng thái treo.
II.2.2. Ngôn ngữ ADA:
Chúng ta sẽ tìm hiểu ngơn ngữ ADA một cách tổng qt, bằng cách mơ phỏng (giả
ADA) để có thể hiểu sâu hơn về cách thức làm việc của nó. Thơng qua ngơn ngữ này
người ta có thể phân rã chương trình thành một tập hợp các tiến trình song song mà mỗi
tiến trình ta gọi là hoạt động chia xẻ các biến tồn cục. Số lượng các tiến trình có thể
phát triển động và các trao đổi được tiến hành nhờ vào việc gọi thực hiện thủ tục hay
“điểm vào”.
1. Hoạt động:
Theo ADA, một họat động được định nghĩa tĩnh, nhưng việc thực hiện lại động nhờ
vào lệnh khởi sự từ đầu:
Võ Minh Tiến

8


Tiểu luận Hệ phân tán
 Các dữ liệu cục bộ.
 Các thủ tục cho phép truy cập vào dữ liệu cục bộ.
 Một chương trình tuần tự hay thân của họat động được thực hiện cùng lệnh khởi
sự từ đầu.

Các dữ liệu cục bộ của một họat động không được truy cập bởi các hoạt động khác,
nhưng chúng lại có thể gọi một vài thủ tục có thể thực hiện nhiệm vụ của chương trình
gọi được phản ánh như sau:
Khai báo T1
Thực hiện T2

Khai báo T2
Thực hiện T1
Quá trình trao đổi
từ xa được bắt đầu
bằng tiến trình T1

Thân của
họat động T1
T2.P(X)

Dữ liệu D
Thủ tục P

Bản sao hoạt
động T2
Các đường chấm
chỉ quá trình thực
hiện từ xa.

Hình 2.1.Thực hiện chương trình từ xa trong ADA
2. Điểm vào:
Trong quá trình thực hiện, hai họat động có thể trao đổi thơng tin với nhau hay vào
theo kiểu cạnh tranh để truy cập dữ liệu. Trong ví dụ trên, khi T1 thực hiện P, nó có thể
vào và xung đột với T2 để truy cập vào dữ liệu D. Thực tế T2 hành động như là kiểm

tra để kiểm tra việc truy cập vào D. Tất cả các hành động trên D có thể thực hiện song
song được xác định như là các thủ tục. Ngược lại, các hành động theo kiểu loại trừ
tương hỗ được thực hiện trực tiếp bởi T2; chúng được xác định như là các điểm vào.
Trong một họat động khai báo vào cũng giống như phần đầu của khai báo thủ tục.
Như thế, trong T2 ta có phần khai báo như sau:
Thực thể E (X:nguyên; Y:out nguyên)
Có nghĩa E (thực thể) là một vào với hai tham số kiểu nguyên; tham số thứ hai có thể
thay đổi.
Ta có thể tìm thấy hoạt động khác, ví dụ như T1 một lời gọi có dạng T 2.E(4, Z).
Quan sát từ bên ngồi ta có nhận xét rằng để cho T1, việc gọi này chính là gọi thủ tục;
khi T1 chuyển sang lệnh tiếp theo, việc xử lý tương ứng với E, bằng cách sử dụng Z, đã
được thực hiện. Giá trị của Z là tham số ra có thể đã thay đổi. Thực tế, vịêc xử lý này
được thực hiện bởi T2 bằng một lệnh đặc biệt chấp nhận (Accept). Lệnh này được thể
hiện như sau:
Chấp nhận E(X:in nguyên; Y:out nguyên) do Y:=X+1
Chấm dứt
Võ Minh Tiến

9


Tiểu luận Hệ phân tán
Chừng nào một lệnh gọi vào đã không được thực hiện, lệnh chấp nhận sẽ là một lệnh
treo. Ngược lại, gọi vào treo hoạt động thực hiện nó cho đến khi họat động mà ở đó vào
đã kết thúc việc thực hiện một lệnh chấp nhận tương ứng với vào đó đã được khai báo
có nghĩa là thực hiện các lệnh giữa do và end phối hợp cùng với chấp nhận.
Để cùng một vào, ta có thể tìm thấy nhiều lệnh chấp nhận; điều đó cho phép nhiều xử
lý khác nhau.
Cuối cùng, việc xử lý có thể bị bỏ sót do thiếu do...end chẳng hạn. Điều đó tương
ứng với việc chỉ thực hiện “cuộc gặp gở” trong hệ CSP.

3.Chờ bội:
ADA là ngôn ngữ cho khả năng chờ không hạn định một lời gọi trong nhiều lời gọi
cho phép.
 Vidụ: phát biểu sau:
Lựa chọn
Chấp nhận X(...) thực hiện P1 kết thúc.
TL1
hoặc
Chừng nào C1 => accept Y(...) thực hiện T2 kết thúc
TL2
Kết thúc
Chỉ ra rằng:
1.Nếu C1 nhận giá trị false, thì chờ một lời gọi từ X.
2.Nếu C1 nhận giá trị true, thì chờ bội một lời gọi từ X hay từ Y.
Trong trường hợp sau cùng, nếu khơng có lời gọi nào từ X hay từ Y đã được tiến
hành thì họat động thực hiện lệnh lựa chọn bị treo; nó phải chấp nhận lời gọi đầu tiên
trong số hai “chờ” nêu trên. Mỗi khi việc chọn lựa là có thể thì nó là bấp bênh
(aleatoire).
Việc xử lý từng nhánh được phân định thành hai phần bằng từ khóa kết thúc T i và
TLi; trong q trình Ti hoạt động gọi đang trong trạng thái chờ và trong TLi, nó có thể
thực hiện cơng việc của mình theo kiểu song song.
Cần lưu ý rằng các xử lý Ti và TLi là các dãy phát biểu nào đó và có thể chứa các lựa
chọn và các chấp nhận.
4.Kết luận:
Ngơn ngữ giả định ADA vừa được trình bày có thể được vận dụng để triển khai
trong các kiến trúc phân tán. Việc biên dịch tách biệt cho mỗi tiến trình hay hoạt động là
điều hồn tồn có thể làm được. Việc phiên dịch thực hiện, nhờ vào phép gửi và nhận
các thông điệp, cho phép thực hiện công việc trao đổi trong CSP và các lời gọi thủ tục
hay các điểm vào của ADA.
Trong ví dụ đã chọn, mặt tĩnh của việc xác định tiến trình CSP địi hỏi thành lập số

tiến trình truy vấn bằng số tiến trình hội thoại. Trong ADA việc thành lập một tiến trình
mới diễn ra khi gọi thủ tục truy vấn và tồn tại trong suốt thời gian truy vấn này.
Võ Minh Tiến

10


Tiểu luận Hệ phân tán
Do vậy, số lượng các tiến trình đúng bằng số nhu cầu. Nếu số lượng quá lớn, thì địi
hỏi phải tiếp tục nghiên cứu áp dụng hình thức mới và đương nhiên là phải khác với
chương trình trên.
II.3. Biểu thức phân tán trong các ngơn ngữ thuật tốn:
Sự phân tán thơng thường là trong suốt đối với người sử dụng có nghĩa là bản thân
người sử dụng không hề quan sát được những diễn biến bên trong của hệ. Thậm chí có
những việc họ hồn tồn khơng hề hay biết gì cả. Về mặt kỹ thuật trong nhiều trường
hợp thiết kế, các hệ cho phép cất dấu rất kỹ sự tồn tại của các trạm bằng cách cho ví dụ
một khả năng địa chỉ hóa đồng nhất, các truy cập từ xa dường như cùng kiểu với các
truy cập cục bộ.
Trong khi đó, có một vài trường hợp mà người sử dụng có kiến thức về kiến trúc của
hệ mà anh ta đang làm việc tại đó và các ngơn ngữ , mà anh ra sẽ phải sử dụng để lập
chương trình. Ta coi các ngơn ngữ này như là các trường hợp đặc biệt trong việc lập
trình cho các hệ tin học phân tán.
II.3.1. Ngơn ngữ triển khai:
Các ngôn ngữ này thường được sử dụng bởi các chun viên máy tính đang đảm
trách cơng tác tổ chức, khai thác mạng và vận hành các hệ điều hành lớn.
Xét một cách tổng quát, các ngôn ngữ này có các chức năng chủ yếu như sau:

STT

Chức năng


1

Thành lập cấu hình ban đầu và gọi các cấu hình khởi sự.

2

Thay đổi cấu hình hệ này bằng cách thêm vào hay bớt đi các thành
phần

3

Thực hiện công tác kiểm soát khi các thành phần khác nhau của hệ
đang họat động.
Ví dụ:
Hệ thống SNA của IBM thành lập một ngơn ngữ thuộc loại này, ta có
thể trích một vài lệnh của nó như sau:
Hình thành kênh liên lạc: Activate link <đầu>, <địa chỉ kênh>

4

Nối kết với một thành phần vật lý như:
Activate physical unit <mã>, <thủ tục xử lý lỗi>, <lọc>, ..., <đinh
danh>

II.3.2. Ngôn ngữ lệnh cho mạng:
Loại ngôn ngữ này cho phép người lập chương trình lựa chọn địa điểm thực hiện
chương trình của mình và nơi đặt kết quả thực hiện của chương trình đó.
Võ Minh Tiến


11


Tiểu luận Hệ phân tán
Chọn lựa nơi thực hiện chương trình thực chất là chọn lựa bộ xử lý thực hiện. Việc
chọn lựa nơi đặt kết quả cho phép ta chuyển trực tiếp dữ liệu đến nơi xa có nhu cầu.
II.3.3. Ngơn ngữ lập trình kiến trúc phân tán:
Các ngơn ngữ này cho phép mơ tả trong chương trình các điểm đặc biệt của kiến trúc
phân tán.
Ví dụ:
Ngơn ngữ loại này là CLU [Liskov 77] cho phép mô tả các trạm bao gồm các bộ xử
lý và các bộ nhớ liên thông với nhau thông qua trao đổi.
II.3.4. Kết luận
Như đã biết, một ứng dụng phân tán thông thường rất phức tạp và phải được chia
thành nhiều mức khác nhau. Tại mỗi mức, có nhiều vấn đề đặt ra cần phải giải quyết.
Một trong những vấn đề quan trọng là ta cần phải lựa chọn là ngôn ngữ nào trong q
trình lập chương trình với sự phụ thuộc ít nhất vào cấu trúc vật lý của việc phân tán.
Trong tất cả các trường hợp, người lập chương trình phân tán cần phải xem xét số
lượng các tiến trình song song và phối hợp chúng lại với nhau như thế nào là hợp lý
nhất. Để triển khai các tiến trình này, đầu tiên cần phải có khả năng cho thực hiện trên
một trạm rồi liên thông giữa các trạm lại với nhau.

Võ Minh Tiến

12


Tiểu luận Hệ phân tán

CHƯƠNG III. ĐỒNG BỘ HÓA THỜI GIAN TRONG HỆ PHÂN

TÁN
III.1. Thời gian và thứ tự sự kiện trong hệ phân tán:
III.1.1. Tiến trình và sự kiện:
 Trong một hệ phân tán có thể gồm nhiều tiến trình (process) cùng hoạt động. Mỗi
tiến trình có một trạng thái (giá trị của các biến). Trong qúa trình hoạt động một tiến
trình có thể thay đổi trạng thái của nó hoặc liên lạc với nhau (gữi/nhận thơng điệp).
 Một sự kiện (Event) là sự xảy ra của một hành động. Các sự kiện trong một tiến
trình có thể được sắp đặt (xếp thứ tự) bởi thời gian mà nó xảy ra.
Trong hệ phân tán chúng ta cần biết thứ tự thời gian của các sự kiện trên các bộ xử lý
khác nhau hoặc giữa các tiến trình khác nhau.
Khái niệm của một sự kiện xảy ra trước một sự kiện khác trong một hệ phân tán là
được kiểm tra, và chỉ để định nghĩa một thành phần thứ tự của các sự kiện. Một thuật
toán phân tán được đưa ra để đồng bộ hóa một hệ thống các đồng hồ logic, cái có
thể được sử dụng để định tổng thứ tự các sự kiện. Việc sử dụng tổng thứ tự được
minh họa với một phương pháp cho việc giải quyết vấn đề đồng bộ hóa. Các thuật tốn
đặc trưng để đồng bộ hóa đồng hồ vật lý, và một giới hạn được xuất phát từ trong bao
lâu thì sự đồng bộ của đồng hồ trở nên khơng cịn phù hợp.
Khái niệm thời gian là cơ bản trong cách suy nghĩ của chúng ta, nó xuất phát từ nhiều
khái niệm cơ sở của các thứ tự trong đó các sự kiện xảy ra. Chúng ta nói rằng một cái gì
đó xảy ra vào lúc 3h15’nếu nó xuất hiện sau khi đồng hồ của chúng ta đọc 3h15’ và
trước khi nó đọc 3h16’. Khái niệm thứ tự theo thời gian của các sự kiện thâm nhập vào
suy nghĩ của chúng ta về hệ thống. Chẳng hạn trong một hệ thống đặt vé máy bay nên
được đảm bảo thực hiện trước khi chuyến bay là bị đầy. Tuy nhiên chúng ta sẽ thấy rằng
khái niệm này phải được xem xét lại cẩn thận khi các sự kiện là được quan tâm trong hệ
phân tán.
Hầu hết mọi người có thể nói rằng một sự kiện a là xảy ra trước sự kiện b nếu a xuất
hiện tại thời điểm sớm hơn b. Họ có thể biện minh định nghĩa này trong giới hạn lý
thuyết của thời gian vật lý. Tuy nhiên, nếu hệ thống gặp một sự chỉ định chính xác, thì
sự chỉ định này phải được đưa ra trong giới hạn của các sự kiện tuân theo trong hệ
thống. Nếu sự chỉ định là trong giới hạn của thời gian vật lý, thì hệ thống phải chứa các

đồng hồ thực sự. Thậm chí nếu nó chứa các đồng hồ thực sự, thì vẫn cịn có vấn đề là
các đồng hồ khơng chính xác hồn hảo và khơng giữ đúng thời gian vật lý. Vì thế,
chúng ta sẽ định nghĩa quan hệ “xảy ra trước” mà không dùng các đồng hồ vật lý.

III.1.2. Đồng hồ vật lý và đồng bộ hóa:
 Trong hệ phân tán, mỗi bộ xử lý có một bộ định thời riêng (một đồng hồ riêng).
Các bộ định thời trôi theo thời gian thực trong nhịp khác nhau. Nhịp trôi lớn nhất (MDR
Võ Minh Tiến

13


Tiểu luận Hệ phân tán
– Max Drift Rate) của một đồng hồ phụ thuộc vào đặc tính của đồng hồ và môi trường
xung quanh. Sự khác nhau lớn nhất của hai đồng hồ với MDR tương tự là: 2*MDR.
 Đồng bộ hóa đồng hồ vật lý:
Ci(t): là thời gian đọc được từ phần mềm đồng hồ i khi thời gian thực là t.
 Đồng bộ hóa ngồi: Cho một giới hạn đồng bộ hóa D>0, và nguồn S của thời
gian UTC, | S(t) – Ci(t) | < D, với i=1, 2, ... , n và với tất cả thời gian thực t trong I.
Các đồng hồ Ci là chính xác trong giới hạn D.
 Đồng bộ hóa trong: cho một giới hạn đồng bộ hóa D>0, | C i(t) – Cj(t) | < D với
i, j=1, 2,...,n và với tất cả thời gian thực t trong I.
Các đồng hồ Ci đồng ý trong ranh giới D.
 Người ta đã đưa ra một số thuật tốn để đồng bộ hóa đồng hồ vật lý:
 Thuật toán Cristian.
 Thuật toán Berkeley.
III.1.3. Đồng hồ logic:
 Chúng ta thì quan tâm đến thời gian tương đối giữa các sự kiện (thứ tự của
chúng), định nghĩa mối quan hệ, xảy ra trước ():
 Trên cùng một máy: ab, nếu time(a)

 Nếu H1 gữi m đến H2: send(m)  receive(m)
 Nếu ab và bc thì ac.
 Thuật toán Lamport sử dụng mối quan hệ này để cung cấp một thứ tự sự kiện
riêng.
III.2. Thuật toán Lamport - đồng bộ hóa đồng hồ logic:
III.2.1. Các ký hiệu:
 Một chương trình phân tán được tạo thành bởi tập hợp n tiến trình độc lập và
khơng đồng bộ P1, P2,...,Pn. Các tiến trình này khơng chia xẻ một đồng hồ chung.
 Mỗi tiến trình có thể xử lý một sự kiện tự động; khi gữi một thơng điệp, nó khơng
phải đợi việc phân phát hồn thành.
 Việc xử lý của mỗi tiến trình Pi, sản sinh ra một dãy sự kiện ei0, ei1,..., eix, eix+1,...
Tập hợp các sự kiện được sản sinh ra bỡi Pi có một tổng thứ tự được xác định bởi
dãy các sự kiện eix  eix+1
Chúng ta nói rằng eix xảy ra trước eix+1
Quan hệ xảy ra trước  có tính bắc cầu: eii  eij với mọi i Các sự kiện xảy ra giữa hai tiến trình đồng thời nói chung khơng quan hệ, ngoại
trừ hai tiến trình đó có liên quan theo quan hệ như sau:
Đối với mỗi thông điệp m trao đổi giữa hai tiến trình Pi và Pj, chúng ta có e ix =
send(m), ejy = receive(m) và eix  ejy.
 Các sự kiện trong một sự xử lý phân tán là được sắp xếp riêng biệt.
Võ Minh Tiến

14


Tiểu luận Hệ phân tán
 Các sự kiện cục bộ là tổng thể được sắp đặt.
 Các sự kiện nguyên nhân là tổng thể được sắp đặt.
 Tất cả các sự kiện khác là không được sắp đặt.
Cho bất kỳ hai sự kiện e1 và e2 trong một sự xử lý phân tán, có thể là:

(i)

e1  e2

(ii)

e2  e1

(iii)

e1 || e2 (e1 và e2 là đồng thời).

 Ví dụ:
Những sự kiện nào là quan hệ  ?
Những sự kiện nào là đồng thời ?

III.2.2. Những điều kiện đồng hồ:
 Trong một hệ thống các đồng hồ logic, các tiến trình riêng biệt có một đồng hồ
logic mà được áp dụng theo một giao thức.
 Mỗi sự kiện được gán một timestamp (thời gian đánh dấu) trong cách thức mà
thỏa mãn điều kiện bền chặt đồng hồ: nếu e1  e2 thì C(e1) < C(e2).
Trong đó: C(ei) là timestamp (thời gian đánh dấu) được gán cho sự kiện ei.
 Nếu giao thức thỏa mãn các điều kiện theo sau nữa, thì đồng hồ được nói rằng
bền chặt mạnh: nếu C(e1) < C(e2) thì e1  e2.
III.3. Sự cài đặt đồng hồ logic (Thuật tốn Lamport):
R1:Tất cả các máy (tiến trình - Pi) sử dụng một bộ đếm (đồng hồ - Ci) với giá trị
khởi tạo là 0
R2: Trước khi xử lý một sự kiện (gữi, nhận hoặc ngắt), Pi xử lý như sau: tăng bộ
đếm và gán cho mỗi sự kiện, như là timestamp (thời gian đánh dấu) của nó.
Ci = Ci + d (d>0, thường d=1)

R3: Mỗi thông điệp mang giá trị đồng hồ của người gửi nó tại thời điểm gửi. Khi Pi
nhận một thông điệp với timestamp (thời gian đánh dấu) Cmsg, nó xử lý như sau:
1.Ci = Max(Ci, Cmsg)
Võ Minh Tiến

15


Tiểu luận Hệ phân tán
2.Xử lý R2.
3.Phát thông điệp.
Đồng hồ logic tại bất kỳ tiến trình nào là ngày càng tăng đơn giản.

Hình 3.2.Các thời gian đánh dấu Lamport (Lamport timestamps)
Thời gian vật lý
Trạm 1

0

2

1

7

1
Trạm 2
Trạm 3
Trạm 4


0

0

8
8

2

3

2
3

4

9

5

4

0

6

3

6


5

10
7
7

Các sự kiện logic đồng thời
n Giá trị đồng hồ.

timestamp

Thơng điệp
Hình 3.3.Ví dụ thời gian logic Lamport
III.4. Cải tiến thuật toán Lamport- Vector đồng hồ logic:
 Phát triển bởi một số người độc lập
 Với thời gian logic lamport:
e trước f ⇒ timestamp(e) < timestamp(f), nhưng timestamp(e) < timestamp(f) không
thể ⇒ e trước f.
⇒ Vector thời gian logic đảm bảo điều này:
 Mỗi tiến trình Pi của n tiến trình thành phần duy trì một vector (mảng) ngun có
kích thước n:
 vti[1,..,n], trong đó vti[i] là đồng hồ logic cục bộ của tiến trình Pi, khởi tạo tất
cả bằng 0.
 vti[j] trình bày sự hiểu biết gần đây nhất của Pi về thời gian cục bộ của Pj.
Võ Minh Tiến

16


Tiểu luận Hệ phân tán

 Giao thức vector đồng hồ:
Tại tiến trình Pi:
+Trước khi xử lý một sự kiện, Pi cập nhật thời gian cục bộ logic của nó như sau:
vti[i] = vti[i] + d (d>0, thường d=1). Và gán vector với sự kiện.
+Mỗi tiến trình gữi một thơng điệp m mang giá trị vector đồng hồ (vector timestamp)
của nó tại thời điểm gữi.
+Trên việc nhận một thông điệp như vậy (m, vt), Pi cập nhật vector đồng hồ logic
của nó như sau:
1.vti[k] = max(vti[k] , vt[k]). Với mọi 1 <= k <=n.
2.vti[i] = vti[i] + d (d > 0, thường d=1)
Ví dụ:us

Hình 3.4.Vector timestamp

Thời gian vật lý
Trạm 1

Trạm
2

Trạm 3
Trạm 4

n,m,p,q

Vector đồng hồ logic

Võ Minh Tiến Vector timestamp

Thông điệp


17


Tiểu luận Hệ phân tán

Hình 3.5.Vector thời gian logic
 Vector đồng hồ:
Hệ thống với những vector đồng hồ là bền chặt mạnh:
 Mỗi thông điệp được gán một timestamp trong cách như vậy mà thỏa mãn
điều kiện bền chặt đồng hồ.
Nếu e1  e2 thì vt(e1) < vt(e2), sử dụng so sánh vector, trong đó vt(ei) là timestamp
gán cho sự kiện ei.
 Nếu giao thức thỏa mãn điều kiện sau nữa, thì đồng hồ được nói là gắn bó
chặt.
Nếu vt(e1) < vt(e2) thì e1  e2, sử dụng sự so sánh vector.
 Trong đó sự so sánh vector thực hiện như sau:
Cho hai vector V1 và V2, cùng kích thước n:
V1 < V2, nếu V1[i] <= V2[i] với i = 1, 2, ..., n. Và tồn tại số k, 0 < k < n+1 mà V 1[k] <
V2[k].
Ví dụ: V1 = { 1, 2, 3, 4}; V2 = {2, 3, 4, 5}
thì V1 < V2.
+Bởi vì vector đồng hồ là bền chặt mạnh, chúng ta có thể sử dụng chúng để quyết
định hoặc là hai sự kiện theo quan hệ nguyên nhân bởi việc so sánh vector timestamp
(thời gian đánh dấu) của chúng, sử dụng sự so sánh vector.

KẾT LUẬN
I. Kết quả đạt được:
 Tìm hiểu và nắm vững các kiến thức liên quan đến hệ phân tán.
 Giới thiệu về hai ngơn ngữ cho phép thực hiện các tính tốn song song.

 Trình bày rõ thuật tốn Lamport đồng bộ hóa thời gian trong hệ phân tán và đưa
ra hướng cải tiến của thuật toán để khắc phục các nhược điểm.
II. Kiến nghị và đề xuất:
 Đi sâu nghiên cứu và phân tích kỹ hơn nữa để phát triển đề tài theo hướng hệ
quản trị cơ sở dữ liệu phân tán.
 Viết các chương trình cài thuật tốn Lamport trong môi trường phân tán để minh
họa cho phần lý thuyết đã nêu.

Võ Minh Tiến

18


Tiểu luận Hệ phân tán

TÀI LIỆU THAM KHẢO
1. Tanenbanum and Van Steen, Distributed System: Priciples and Paradigms.
2. TS.Lê Văn Sơn, Hệ tin học phân tán, nhà xuất bản Đại học quốc gia Tp. Hồ Chí
Minh, 2002.
3. Các Website:
 .
 .
 .

Võ Minh Tiến

19


Tiểu luận Hệ phân tán


MỤC LỤC
LỜI NÓI ĐẦU.................................................................................................................................1
CHƯƠNG I. TỔNG QUAN VỀ HỆ PHÂN TÁN.........................................................................2
I.1. Hệ phân tán (Distributed System):........................................................................................2
I.2. Các mơ hình hệ phân tán:......................................................................................................3
I.2.1. Các lớp dịch vụ phần mềm và phần cứng:....................................................................3
I.2.2. Kiến trúc hệ thống phân tán:..........................................................................................3
CHƯƠNG II. CÁC BIỂU THỨC SONG SONG VÀ PHÂN TÁN TRONG NGƠN NGỮ
THUẬT TỐN................................................................................................................................6
II.1. Giới thiệu:............................................................................................................................6
II.2. Biểu thức song song trong ngôn ngữ:..................................................................................6
II.2.1. Ngôn ngữ CSP:.............................................................................................................7
II.2.2. Ngôn ngữ ADA:............................................................................................................8
II.3. Biểu thức phân tán trong các ngơn ngữ thuật tốn:..........................................................11
II.3.1. Ngơn ngữ triển khai:...................................................................................................11
II.3.2. Ngôn ngữ lệnh cho mạng:..........................................................................................11
II.3.3. Ngôn ngữ lập trình kiến trúc phân tán:......................................................................12
II.3.4. Kết luận.......................................................................................................................12
CHƯƠNG III. ĐỒNG BỘ HÓA THỜI GIAN TRONG HỆ PHÂN TÁN..................................13
III.1. Thời gian và thứ tự sự kiện trong hệ phân tán:................................................................13
III.1.1. Tiến trình và sự kiện:................................................................................................13
III.1.2. Đồng hồ vật lý và đồng bộ hóa:................................................................................13
III.1.3. Đồng hồ logic:...........................................................................................................14
III.2. Thuật tốn Lamport - đồng bộ hóa đồng hồ logic:..........................................................14
III.2.1. Các ký hiệu:...............................................................................................................14
III.2.2. Những điều kiện đồng hồ:.........................................................................................15
III.3. Sự cài đặt đồng hồ logic (Thuật toán Lamport):..............................................................15
III.4. Cải tiến thuật toán Lamport- Vector đồng hồ logic:........................................................16
KẾT LUẬN....................................................................................................................................18

TÀI LIỆU THAM KHẢO.............................................................................................................19
MỤC LỤC.....................................................................................................................................20

Võ Minh Tiến

20



×