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

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

Đ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

Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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át triể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ống má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ạng vớ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ển thà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ằ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. 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ể cho việ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ính khoá 2011– 2013 - Đại học Đà Nẵng đã giúp tôi hoàn thành tiểu luận này. Trang 1 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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ô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 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ì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 Trang 2 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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: 1. Các lớp dịch vụ phần mềm và phần cứng: Hình 2. Các lớp dịch vụ 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), . 2. Kiến trúc hệ thống phân tán: a. Mô hình Client/Server: Trang 3 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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 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: 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 4 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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:  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.  Đồ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 5 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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ới ngô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ứu trê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ện phâ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 song song và hoàn toàn không quan tâm đến vấn đề là sẽ triển khai chương trình trê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ú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 triể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ác trong 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ần cứ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 đầu tiê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ưng củ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 6 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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 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. 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ự procedure hello is begin put_line("Hello World"); -- in dòng chữ 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 i := 10; loop i := i - 1; put_line("Hello World"); exit when i = 0; end loop; Trang 7 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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 có sự kiểm tra. Khai báo T 1 Khai báo T 2 Khai báo T 1 Khai báo T 2 Thân của hoạt động T 1 Quá trình trao đổi từ xa được bắt đầu bằng tiến trình T 1 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 Các dữ liệu cục bộ của một hoạt độ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 như phản ảnh trong hình vẽ (Hình 5). Đ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. Trang 8 Hệ phân tán - Đề 39 Học viên: Mai Văn Tùng 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. 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 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át biểu sau: Chỉ ra rằng: 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ọn Chấp nhận X(…) thực hiện T 1 kết thúc TL 1 hoặc chừng nào C 1 ⇒accept Y(…) thực hiện kết thúc Hệ phân tán - Đề 39 Học viên: Mai Văn Tù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ấp bê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 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 TL i , 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ê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 Entry debcons; Entry fincons; Lec:integer:=0; Procedure truy_van1(Ten : in identifier ; Diem:out integer) is Begin Debcons; Diem:=<Tìm trong Table>; Ficons; End; Begin Loop Select Accept debcons; Lec :=Lec+1 or Trang 10 . 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. 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

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan