Lê Văn Sơn Học viên: Mai Văn TùngTIỂU LUẬN HỆ TIN HỌC PHÂN TÁN Các ngôn ngữ lập trình phân tán... Hệ phân tán Distributed System:“Hệ tin học phân tán hay nói ngắn gọn là hệ phân ta
Trang 1GVHD: PGS TS Lê Văn Sơn Học viên: Mai Văn Tùng
TIỂU LUẬN
HỆ TIN HỌC PHÂN TÁN
Các ngôn ngữ lập trình phân tán
Trang 2LỜI MỞ ĐẦU
Khi hệ thống phân tán đầu tiên xuất hiện thì trên hệ thống được lập trình bằng các ngôn ngữ truyền thống tuần tự, thường làm việc bổ sung thêm vài thủ tục, thư viện cho việc gửi và nhận thông tin.
nhà thiết kế trên toàn thế giới đã bắt đầu thiết kế các ngôn ngữ lập trình mới cụ thể cho việc thực hiện các ứng dụng phân tán.
Trang 3I Hệ phân tán (Distributed System):
“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.”
Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN
Trang 4Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN
II Các mô hình hệ phân tán
1 Các lớp dịch vụ phần mềm và phần cứng:
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),
Trang 5Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN
II Các mô hình hệ phân tán
2 Kiến trúc hệ thống phân tán:
Mô hình Client/Server:
Trang 6Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN
II Các mô hình hệ phân tán
2 Kiến trúc hệ thống phân tán:
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ì hoã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ì hoã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ì hoã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ì hoã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.
Sự biến động tạp (Jitter): thời gian khác nhau giữa các sự trì hoãn ảnh hưởng bởi
các thông điệp khác nhau.
Trang 7Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN
II Các mô hình hệ phân tán
2 Kiến trúc hệ thống phân tán:
Đồng hồ và thứ tự các sự kiện:
Không có khái niệm toà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ị toà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.
Trang 8I Giới thiệu
Hiện nay có nhiều ngôn ngữ khác nhau cho phép lập trình phân tán như: CSP, Occam, NIL, Ada, Java, “Concurrent” C, SR, Emerald, Argus,
PARLOG, Linda, Orca, …
Tiểu luận này sẽ đi vào giới thiệu 2 ngôn ngữ lập trình là ADA và CSP.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 9II Ngôn ngữ ADA
1 Giới thiệu ngôn ngữ ADA
Ada xuất phát từ Pascal, nhưng kiểm tra kiểu mạnh hơn Mở rộng kiểu (type extension), kế thừa (inheritance) và đa kế thừa giao diện (multiple interface inheritance) hỗ trợ lập trình định hướng đối tượng Ngoài các kết cấu điều khiển thông thường như rẽ nhánh, lặp, xử lý ngoại lệ (exception), và kết cấu đơn vị thông thường như thủ tục (procedure), hàm (function), Ada còn có kết cấu gói (package) hỗ trợ lập trình theo thành phần (modular), kết cấu mẫu (generic) hỗ trợ lập trình mẫu, kết cấu tác vụ (task) và kiểu có bảo vệ (protected type) hỗ trợ lập trình song song và tương tranh.
Trên thế giới, tỉ lệ lập trình viên sử dụng ngôn ngữ Ada chiếm khoảng 5%.
Ada có bộ biên dịch miễn phí GNAT và môi trường phát triển miễn phí GPS, sinh mã đích cho rất nhiều platform khác nhau.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 10II Ngôn ngữ ADA
2 Cú pháp
Ada có cú pháp tương tự như ngôn ngữ lập trình Pascal, thể hiện rõ nhất ở
kí hiệu := dùng trong lệnh gán và begin end bao quanh mỗi khối lệnh.
Trong một file chương trình Ada, cần có một thủ tục (procedure) có tên trùng với tên chương trình, nó sẽ được kích hoạt khi chạy chương trình:
dòng chữ bắt đầu bằng hai dấu gạch ngang là dòng chú thích
ví dụ file chương trình có tên là hello.adb
with text_io; use text_io; sử dụng thư viện nhập - xuất chuỗi kí tự
Trang 11II Ngôn ngữ ADA
2 Cú pháp
Một số đặc điểm cú pháp khác như sau:
vòng lặp thoát bởi exit:
i : integer; khai báo i là biến số nguyên
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Một vòng lặp viết theo dạng for:
for i in 1 10 loop
put_line("Hello World");
end loop;
Trang 12II Ngôn ngữ ADA
3 Hoạt động
Khi mô tả một hoạt động trong ngôn ngữ Ada cần phải xác định các điểm:
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 hoạt động
được thực hiện cùng lệnh khởi sự ban đầu.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 13II Ngôn ngữ ADA
Thân của hoạt động T1
Quá trình trao đổi từ xa được bắt đầu
bằng tiến trình T1
Các đường chấm chỉ quá trình thực hiện
lệnh từ xa.
Dữ liệu D Thủ tục P
Trang 14II Ngôn ngữ ADA
3 Hoạt động
Điểm vào:
Trong quá trình thực hiện, hai hoạt độ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 T 1 thực hiện P, nó có thể vào và xung đột với T 2 để truy cập dữ liệu D Thực tế T2 hành động như là
kiem_tra để kiểm tra cá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à 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 T 2; chứng được xác định như là một điểm vào
Trong hoạt độ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 T 2, ta có phần khai báo như sau:
Có nghĩa là 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.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Thực thể E(X: nguyên ; Y: out nguyên)
Trang 15II Ngôn ngữ ADA
3 Hoạt động
Điểm vào:
Ta có thể tìm thấy hoạt động khác ví dụ như T 1 một lời gọi
có dạng T 2 E(4,Z) Quan sát từ bên ngoài, ta có nhận xét rằng để cho T 1 , việc gọi này chính là gọi thủ tục; khi T 2, 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ị Z là tham số ra có thể đã thay đổi Thực tế, việc xử lý này được thực
hiện bởi T 2 bằng một lệng đặc biệt chap_nhan(accept)
Lệnh này được thực hiện như sau:
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Chấp nhận E(X: in nguyên ; Y: out nguyên) do Y:=X+1
Chấm dứt
Trang 16II Ngôn ngữ ADA
3 Hoạt động
Điểm vào:
Chừng nào một lệnh gọi vào đã không được thực hiện, lệnh
chap_nhan sẽ là một lệnh treo Ngược lại phải gọi vào treo hoạt
động thực hiện nó cho đến khi hoạt động mà ở đó vào đã kết
thức việc thực hiện một lệnh chap_ nhan 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 chap_nhan.
Để cùng một vào, ta có thể tìm thấy nhiều lệnh chap_nhan; điều
đó cho phép kết hợ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ỡ".
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 17II Ngôn ngữ ADA
Nếu C 1 nhận giá trị false, thì chờ một lời gọi từ X.
Nếu C 1 nhận giá trị true, thì chờ một lời gọi từ X hay từ Y.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Lựa chọn Chấp nhận X(…) thực hiện T1 kết thúc
TL1hoặc chừng nào C1 accept Y(…) thực hiện
Trang 18II Ngôn ngữ ADA
3 Hoạt động
Chờ bội:
được tiến hành thì hoạt động thực hiện lệnh lua chon 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.
ket thuc T i và TL i ; trong tiến trình T i , 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ý T i và TL i 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.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 19II Ngôn ngữ ADA
4 Ứng dụng
Ngoài các ứng dụng truyền thống trong vũ khí, khí tài và các hệ thống liên lạc, tham mưu, chỉ huy, tác chiến, sau hơn 2 thập kỷ ngày nay Ada còn được dùng trong các ứng dụng của ngành thám hiểm không gian, hàng không, giao thông sắt & bộ, năng lượng hạt nhân, viễn thông, và tài chính – ngân hàng.
Chương trình viết bằng ngôn ngữ giả định Ada
Task TraCuu is
Procedure truy_van1(Ten : in identifier ; Diem : out interger);
Entry cap_nhat1(Ten : in identifier ; Diem : in integer);
Task body TraCuu is
Trang 20II Ngôn ngữ ADA
4 Ứng dụng
Chương trình viết bằng ngôn ngữ giả định Ada
Procedure truy_van1(Ten : in identifier ; Diem:out integer) is
Trang 21II Ngôn ngữ ADA
or when (lec=0) =>Accept cap_nhat1(Ten : in identifier ; Diem : in integer) do
<cập nhật Table>
Trang 22III Ngôn ngữ CSP (Communicating Sequential Processes)
CSP được thiết kế bởi Hoare, cho phép thực hiện có hiệu quả trên một loạt các kiến trúc CSP cung cấp một câu lệnh đơn giản song song để tạo ra một số cố định của các tiến trình song song CSP cho phép lập 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 "kiểu gặp gỡ" Tất cả thông tin liên lạc trong tiến trình được thực hiện bằng cách sử dụng đồng bộ việc tiếp nhận và gửi
CSP cho phép một tiến trình tiếp nhận có chọn lọc, dựa trên sự sẵn có của đầu vào và các lĩnh vực tên của các thông tin liên lạc đến
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 23III Ngôn ngữ CSP (Communicating Sequential Processes)
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 sau đây:
Trong đó, <Tiến trình > 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:
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
[<Tiến trình 1>]||[<Tiến trình 2>]||…||[<Tiến trình n>]
Name::<text>
Trang 24III Ngôn ngữ CSP (Communicating Sequential Processes)
Ở đây, các biến toàn cục bị cấm áp dụng.
Các tiến trình cần có hai hàm nguyên thuỷ để 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 phải đúng kiểu Các vào ra kinh điển được đảm bảo bằng các tiến trình đựoc định nghĩa trước khi phối hợp các ngoại vi mắc nối.
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 25III Ngôn ngữ CSP (Communicating Sequential Processes)
Ví dụ: [writer :: x: real; || reader(i: 1 2) :: ] tạo ra ba tiến trình, được gọi là "writer", "reader (l)" và
"reader(2),"writer” có một biến cục bộ x Các biến chỉ số có thể được sử dụng trong thân của tiến trình reader
Một tiến trình thực hiện, hoặc gửi hoặc nhận bị chặn lại cho đến khi đối tác của nó đã thực hiện báo cáo bổ sung Hãy xem xét ví dụ sau đây:
[X :: Y! 3||Y :: n: số nguyên; X? n]
Trong một tuyên bố của tiến trình X, giá trị 3 được gửi đến
Y Trong một tuyên bố của tiến trình Y, đầu vào được đọc từ tiến trình X và được lưu trữ trong các biến cục bộ n Khi cả hai X và Y đã thực hiện báo cáo, các thông tin liên lạc một chiều xảy ra Kết quả được phân công 3 đến n
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 26III Ngôn ngữ CSP (Communicating Sequential Processes) Ứng dụng:
CSP cơ bản là một thiết kế giấy, nhưng nó đã ảnh hưởng đến thiết kế của một số ngôn ngữ, đáng chú ý nhất là ngôn ngữ Occam
Occam được mô phỏng trên CSP Hoare và được thiết kế cho các lập trình Inmos của transputer Inmos Ltd năm 1984 Occam cơ bản là ngôn ngữ lắp ráp của phần mềm trung gian Ngôn ngữ thiếu tính năng mà đã trở thành tiêu chuẩn trong các ngôn ngữ lập trình hiện đại nhất, chẳng hạn như thủ tục đệ quy, các mô-đun,
Chương II
NGÔN NGỮ LẬP TRÌNH PHÂN TÁN
Trang 27KẾT LUẬN
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 ta cần phải lựa chọn là ngôn ngữ nào trong tiến trình lập 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ỉa 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