1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các ngôn ngữ lập trình phân tán

22 1K 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Các ngôn ngữ lập trình phân tán
Tác giả Mai Văn Tùng
Người hướng dẫn Tiến sĩ Lê Văn Sơn
Trường học Đại học Đà Nẵng
Chuyên ngành Khoa học máy tính
Thể loại Tiểu luận
Năm xuất bản 2011–2013
Thành phố Đà Nẵng
Định dạng
Số trang 22
Dung lượng 104,97 KB

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

Nội dung

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ằngcá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ử

Trang 1

LỜI MỞ ĐẦU

Trong những năm gần đây, những thành tựu về Khoa học - Công nghệ pháttriển mạnh mẽ đã làm thay đổi cách nhìn, cách nghĩ của con người từ đó làm thayđổi bộ mặt của xã hội Đặc biệt là sự phát triển vượt bậc trong lĩnh vực công nghệthông tin Từ những chiếc máy tính điện tử đầu tiên đã cho ra đời những hệ thốngmáy tính hoạt động đơn lẻ với nhau ta gọi là máy tính đơn sau đó có thể nối mạngvới nhau để trở thành một mạng máy tính, từ hệ máy tính tập trung đã phát triểnthành hệ máy tính phân tán

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ằngcá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 Khi ứng dụng phân tán trở nên phổ biến hơn

và tinh vi hơn thì cách tiếp cận này đặc biệt trở nên không còn phù hợp Các 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ể choviệc thực hiện các ứng dụng phân tán

Trong nội dung của tiểu luận này sẽ trình bày hai vấn đề sau:

Phần I - LÝ THUYẾT

Các ngôn ngữ lập trình phân tán

Phần II – BÀI TẬP

Quản lý bộ nhớ bằng ngôn ngữ lập trình ADA

Tôi xin chân thành cảm ơn TS Lê Văn Sơn và các bạn lớp Khoa học máy tínhkhoá 2011– 2013 - Đại học Đà Nẵng đã giúp tôi hoàn thành tiểu luận này

Trang 1

Trang 2

PHẦN LÝ THUYẾT

Chương I TỔNG QUAN VỀ HỆ PHÂN TÁN

I 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ôngtin đặc biệt quan tâm nghiên cứu và đỗi mới một cách nhanh chóng Trong điềukiện đó, đứng trên một quan điểm khác nhau người ta đã đưa ra các định nghĩakhá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ácngườ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 nguyên

Hình 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ìnhbà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

Trang 3

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 toán, xử lý

 Cải thiện tình trạng luôn luôn sẵn sàng của các loại tài nguyên

 Tăng độ an toà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 toàn vẹn của thông tin.

II Các mô hình hệ phân tán:

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ềuhành)

Middleware: một lớp của phần mềm mà mục đích của nó là đánh dấuheterogeneity 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 ComponentObject Model),

2 Kiến trúc hệ thống phân tán:

a Mô hình Client/Server:

Trang 3

Trang 4

Hình 3 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 DNSServer 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êucầu

 Dịch vụ cung cấp bởi nhiều server:

Hình 4 Dịch vụ cung cấp bởi nhiều Server

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:

Trang 5

Hình 5 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.

b Mô hình tương tác trong hệ phân tán:

 Thực hiện truyền thông:

 Đồ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

Trang 6

Chương II NGÔN NGỮ LẬP TRÌNH PHÂN TÁN

I Giới thiệu

Khi hệ thống phân tán lần đầu tiên xuất hiện thì hệ thống đã được lập trình vớingôn ngữ tuần tự truyền thống, thường là với việc bổ sung của một vài thủ tục thưviện để gửi và nhận tin nhắn Khi ứng dụng phân tán trở nên phổ biến hơn và tinh

vi hơn, cách tiếp cận này đặc biệt trở nên không thỏa đáng Các nhà nghiên cứutrên toàn thế giới bắt đầu thiết kế ngôn ngữ lập trình mới cụ thể cho việc thực hiệnphân tán các ứng dụng Những ngôn ngữ và lịch sử, nguyên tắc cơ bản, thiết kế,

và sử dụng của chúng là chủ đề của chương này

Các ngôn ngữ lập trình phân tán có thể chia làm hai loại chính:

 Một số ngôn ngữ cho phép lập trình ứng dụng với tư cách là kích hoạt songsong và hoàn toàn không quan tâm đến vấn đề là sẽ triển khai chương trìnhtrên hệ tập trung hay là hệ phân tán Các ngôn ngữ này triển khai cấu trúckiểm tra có tính chất thủ tục Mặc dù có một số hạn chế, song chúng cũngtriển khai trên các hệ phân tán

 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 các mối quan hệ cần thiết từ một trạm đến các trạm kháctrong hệ phân tán

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, Aeolus, ParAlfl,

“Concurrent” PRO-LOG, 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

III Ngôn ngữ ADA

1 Giới thiệu ngôn ngữ ADA

Ada là ngôn ngữ lập trình xuất xứ từ Bộ quốc phòng Mỹ vào khoảng nửa

đầu thập niên 80 của thế kỷ 20 Ngôn ngữ này được đặt tên theo Ada Augusta nữ

bá tước xứ Lovelace (1815 – 1852), nhà toán học với ý tưởng tiên phong coi phầncứng và phần mềm là hai mặt khác nhau đã đi vào lịch sử như lập trình viên đầutiên và hacker đầu tiên của loài người

Nhu cầu của Lầu Năm Góc lúc đó là một ngôn ngữ lập trình duy nhất thay thếcho khoảng 500 ngôn ngữ dùng cho các hệ thống nhúng (embedded) Đặc trưngcủa các hệ thống như thế là phần cứng đa dạng, phần cứng liền với phần mềm,phần mềm hệ thống liền với phần mềm ứng dụng, thời gian sử dụng lâu dài, tính

Trang 7

chất thời gian thực (real-time) và độ bền cao (high-integrity) thể hiện rõ, nhiều hệthống nhúng là hệ phân tán (distributed).

Ngôn ngữ lập trình đáp ứng những yêu cầu đó phải chặt chẽ, nhỏ gọn nhưng

có sức biểu diễn lớn, viết mã nguồn dễ đọc, sinh mã đích hiệu quả

Vì thế 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 interfaceinheritance) hỗ trợ lập trình định hướng đối tượng Ngoài các kết cấu điều khiểnthông thường như rẽ nhánh, lặp, xử lýngoại lệ (exception), và kết cấu đơn vị thôngthườ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ìnhmẫu, kết cấu tác vụ (task) và kiểu có bảo vệ (protected type) hỗ trợ lập trình songsong 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

end hello; nhắc lại tên thủ tục

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

Trang 8

Khai báo T1

Khai báo T2

Khai báo T1 Khai báo T2

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

Hình 5.Thực hiện chương trình từ xa trong ADA

Một vòng lặp viết theo dạng for:

for i in 1 10 loop

put_line("Hello World");

end loop;

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.

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 Khi hai hoạt động cùng truy cập vào một dữ liệu thì cần phải

Trang 9

P, nó có thể vào và xung đột với T2 để 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:

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 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ờ bội:

ADA là ngôn ngữ chờ không hạn định một lời gọi trong nhiều lời gọi cho

phép

Ví dụ phátbiểu sau:

Trang 9

Thực thể E(X: nguyên ; Y: out nguyên)

Chấp nhận E(X: in nguyên ; Y: out nguyên) do Y:=X+1

Chấm dứt

Lựa chọnChấp nhận X(…) thực hiện T1 kết thúc

TL1

hoặcchừng nào C1 accept Y(…) thực hiện

Trang 10

Chỉ ra rằng:

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.

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ì 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ấpbênh

Việc xử lý từng nhánh đuwọc phân định thành hai phần bàng từ khoá ket thuc

Ti 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.

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ênlạ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ùngtrong 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 11

[<Tiến trình 1>]||[<Tiến trình 2>]||…||[<Tiến trình n>]

Accept fincons ; Lec:=lec-1

or when (lec=0) =>

Accept cap_nhat1(Ten : in identifier ; Diem : in integer) do

<cập nhật Table>

End End Select End Loop;

End ;

End TraCuu;

IV 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áckiế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ố địnhcủ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ánliê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ệnbằ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 đầuvào và các lĩnh vực tên của các thông tin liên lạc đến

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ạngsau đây:

Trong đó, <Tiến trình > dựa vào liên hợp một tên với mã chương trìnhnguồn của tiến trình:

Ở đây, các biến toàn cục bị cấm áp dụng

Trang 11Name::<text>

Trang 12

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 rakinh đ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ácngoại vi mắc nối

Để gửi thông điệp cho tiến trình Q, tiến trình P cần phải sử dụng lệnh ra có

dạng như sau:

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 sau:

Ta phải có các thông điệp cấu trúc hoá ví dụ như việc chuyển hai giá trịnguyên có thể thể hiện như sau:

Việc kiểm tra chặt chẽ trên lai lịch của người đối thoại và trên kiểu của cácthông điệp trao đổi được tiến hành khi thử hiệu chỉnh và dịch chương trình Ngượclạ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ụ: [writer :: x: real; || reader(i: 1 2) :: ] tạo ra ba tiến trình, đượcgọi là "writer", "reader (l)" và "reader(2),"writer” có một biến cục bộ x Các biếnchỉ số có thể được sử dụng trong thân của tiến trình reader

Tiến trình gửi thư xác định tên của tiến trình điểm đến và cung cấp một giá trịđược gửi đi Tiến trình nhận được quy định cụ thể tên của tiến trình gửi và cungcấp một biến mà giá trị nhận được phân công Một tiến trình thực hiện, hoặc gửihoặ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ãyxem 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ộttuyê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ữ trongcá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ạcmột chiều xảy ra Kết quả được phân công 3 đến n

Ứ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

Q!<Biểu thức>

P?<Biến>

Q!(4,5) trong PP!(i ,j) trong Q

Trang 13

Occam được mô phỏng trên CSP Hoare và được thiết kế cho các lập trìnhInmos của transputer Inmos Ltd năm 1984 Occam cơ bản là ngôn ngữ lắp ráp củaphần mềm trung gian Ngôn ngữ thiếu tính năng mà đã trở thành tiêu chuẩn trongcá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,

Trang 13

Trang 14

KẾ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ànhnhiề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ếntrì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 xemxé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 chothự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

Ngày đăng: 26/12/2013, 11:13

HÌNH ẢNH LIÊN QUAN

Hình 1. Ví dụ về hệ phân tán - Một Intranet tiêu biểu - Các ngôn ngữ lập trình phân tán
Hình 1. Ví dụ về hệ phân tán - Một Intranet tiêu biểu (Trang 2)
Hình 2. Các lớp dịch vụ - Các ngôn ngữ lập trình phân tán
Hình 2. Các lớp dịch vụ (Trang 3)
Hình 3. Một WebServer thường là một client của một File Server cục bộ. - Các ngôn ngữ lập trình phân tán
Hình 3. Một WebServer thường là một client của một File Server cục bộ (Trang 4)
Hình 4. Dịch vụ cung cấp bởi nhiều Server - Các ngôn ngữ lập trình phân tán
Hình 4. Dịch vụ cung cấp bởi nhiều Server (Trang 4)
Hình 5. Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại - Các ngôn ngữ lập trình phân tán
Hình 5. Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại (Trang 5)
Hình 5.Thực hiện chương trình từ xa trong ADA - Các ngôn ngữ lập trình phân tán
Hình 5. Thực hiện chương trình từ xa trong ADA (Trang 8)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w