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: ab, nếu time(a) Nếu H1 gữi m đến H2: send(m) receive(m) Nếu ab và bc thì ac. 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