keta124
19-05-2011, 01:25
MỤC LỤC
Lời mở đầu .2
I. Tổng quan về hệ phân tán
I.1 Hệ phân tán là gì? . 3
I.2 Các đặc trưng cơ bản của hệ phân tán . 3
II. Các nguyên lý của hệ phân tán
II.1 Truyền thông . . 4
II.2 Tiến trình 5
II.3 Định danh . 7
II.4 Đống bộ hoá . 8
II.5 Nhất quán và Nhân bản 11
II.6 Chịu lỗi 12
II.7 Anh toàn – An ninh . . 14
III. Hệ thống quản trị tệp phân tán
III.1 Sun File Network System . . 16
III.1.1 Tổng quan về NFS . 17
III.1.2 Truyền thông . . 20
III.1.3 Stateless - Stateful . 21
III.1.4 Định danh . 21
III.1.5 Đồng bộ hóa . 25
III.1.6 Lưu đệm và bản sao . . 28
III.1.7 Chịu lỗi . 29
III.1.8 An toàn – an ninh . 31
III.2 Hệ thống file Coda . 33
III.3 Các hệ thống file phân tán khác 34
III.4 So sánh giữa các hệ thống file phân tán . 37
IV. Kết luận 40
- 1 -
LỜI MỞ ĐẦU
Cùng với sự phát triển của mạng máy tính, việc tính toán, quản lý ngày nay không chỉ đơn giản tập trung trong máy tính đơn như trước nữa. Nó đòi hỏi các hệ thống tính toán phải được kết hợp từ một số lượng lớn các máy tính kết nối với nhau qua 1 mạng tốc độ cao. Chúng thường được gọi là các mạng máy tính hay còn có tên khác là các Hệ phân tán, nhằm ám chỉ tương phản với Hệ tập trung trước đây.
Ngày nay, hệ phân tán phát triển rất nhanh và được ứng dụng rộng khắp. Đó có thể là các dịch vụ thông tin phân tán, như các dịch vụ trên Internet chẳng hạn. Đó cũng có thể là các cơ sở dữ liệu phân tán như các hệ thống đặt vé máy bay, xe lửa hoặc các hệ thống tính toán phân tán.
Mục đích của tiểu luận này nhằm nêu ra 1 cách khái quát nhất những khái niệm, những nguyên lý cơ bản của một hệ phân tán nói chung. Đồng thời phân tích sâu vào việc chia sẻ dữ liệu trong hệ phân tán, 1 trong những chức năng cơ bản nhất của hệ phân tán. Chúng ta thường gọi đó là hệ thống quản trị file phân tán. Ta cũng sẽ lần lượt nghiên cứu các mô hình khác nhau của hệ thống file phân tán như Sun NFS, Coda, Plan 9, XFS
- 2 -
I.Tổng quan về hệ phân tán
I.1. Hệ phân tán là gì?
Có nhiều định nghĩa cho 1 hệ phân tán. Tuy nhiên, ta có thể định nghĩa hệ phân tán là một tập hợp bao gồm các máy tính tự trị được liên kết với nhau qua một mạng máy tính, và được cài đặt phần mềm hệ phân tán. Phần mềm hệ phân tán cho phép máy tính có thể phối hợp các hoạt động của nó và chia sẻ tài nguyên của hệ thống như phần cứng, phần mềm và dữ liệu.
Một số tính chất quan trọng của một hệ phân tán:
Thứ nhất chúng cho phép chúng ta chạy những ứng dụng khác nhau trên nhiều máy khác nhau thành một hệ thống duy nhất. Một ưu điểm khác của hệ phân tán đó là khi một hệ thống được thiết kế đúng cách, một hệ phân tán có thể có khả năng thay đổi tuỳ theo quy mô của hệ thống rất tốt. Tuy nhiên, tất cả mọi thứ đều có hai mặt của nó, một hệ phân tán cũng vậy bên cạnh những mặt ưu việt thì nó cũng có những nhược điểm đó là tính bảo mật kém
Những ứng dụng của hệ phân tán:
Cung cấp những thuận lợi cho việc tính toán đa mục đích đến những nhóm người dùng, tự động hoá công việc ngân hàng và hệ thống truyền thông đa phương tiện, ngoài ra chúng còn bao quát toàn bộ những ứng dụng thương mại và kĩ thuật. Hệ phân tán đã trở thành tiêu chuẩn để tổ chức về mặt tính toán. Nó có thể được sử dụng cho việc thực hiện tương tác hệ thống tính toán đa mục đích trong UNIX và hỗ trợ cho phạm vi rộng của thương mại và ứng dụng công nghiệp của những máy tính
I.2. Các đặc trưng cơ bản của hệ phân tán
a. Kết nối người sử dụng với tài nguyên
Chia sẻ nguồn tài nguyên là một đặc tính cơ bản của hệ thống phân tán, nó là cơ sở cho những đặc tính khác và nó ảnh hưởng đến những kiến trúc phần mềm có sẵn trong các hệ phân tán. Các nguồn tài nguyên có thể là mục dữ liệu, phần cứng và các thành phần của phần cứng. Các nguồn tài nguyên được phân biệt từ một dữ liệu được quản lý với những quá trình xử lý đơn bởi nhu cầu của vài quá trình xử lý để chia sẻ chúng
b. Tính trong suốt (transparency)
Một hệ phân tán được gọi là trong suốt nếu nó có khả năng che dấu tính rời rạc và những nhược điểm có thể của nó đối với người sử dụng cuối và người lập trình ứng dụng. Có 8 dạng trong suốt :
ƒ Trong suốt truy cập : che dấu cách biểu diễn dữ liệu và cách thức truy cập
tài nguyên.
ƒ Trong suốt vị trí : che dấu vị trí thực của tài nguyên.
ƒ Trong suốt di trú : che dấu khả năng di trú (di chuyển từ nơi này sang nơi
khác) của tài nguyên.
ƒ Trong suốt định vị lại : che dấu khả năng tài nguyên có thể di chuyển từ nơi
này đến nơi khác ngay cả khi đang được sử dụng.
ƒ Trong suốt bản sao : che dấu các bản sao được nhân ra.
ƒ Trong suốt về tương tranh.
- 3 -
ƒ Trong suốt về lỗi.
ƒ Trong suốt truy cập nhanh.
c. Tính mở (openess)
Một hệ phân tán được gọi là có tính mở nếu nó có khả năng bổ sung thêm các dịch vụ mới mà không làm ảnh hưởng xấu đến các dịch vụ đã có.
d. Tính co dãn (scalability)
Một hệ phân tán được gọi là có tính co dãn nếu nó có thể thích nghi được với những sự thay đổi qui mô của hệ thống Tính co dãn thể hiện trên 3 khía cạnh.
ƒ Dễ dàng bổ sung thêm tài nguyên và người sử dụng.
ƒ Hệ thống thay đổi qui mô về mặt địa lý.
ƒ Hệ thống thay đổi qui mô về quản trị.
e. Tính chịu lỗi (Fault tolerance)
Xử lý được những lỗi xảy ra trong quá trình làm việc. Bên cạnh tính chịu lỗi luôn đi kèm theo là khắc phục lỗi.
f. Tính an toàn an ninh (security)
II. Các nguyên lý của hệ phân tán
Trong phần này, ta sẽ xem xét 1 cách tổng quan, tóm tắt các nguyên lý của hệ phân tán. Bởi nếu đi sâu thì bản thân trong mỗi nguyên lý lại còn có rất nhiều vấn đề cần phân tích. Có tổng cộng 7 nguyên lý cơ bản đối với 1 hệ phân tán, bao gồm:
1. Truyền thông (Commmunication).
2. Tiến trình (Processes).
3. Định danh (Naming).
4. Đồng bộ hóa (Synchronization).
5. Nhất quán và nhân bản (Consistency & Replication).
6. Chịu lỗi (Fault tolerance).
7. An toàn – an ninh (Security).
Sau đây ta đi vào phân tích sơ bộ từng nguyên lý của hệ phân tán.
II.1. Truyền thông
Truyền thông giữa các tiến trình rất quan trọng trong một hệ phân tán. Truyền thông có thể chia thành 2 mức:
ƒ Truyền thông ở mức mạng máy tính.
ƒ Truyền thông ở mức midleware: bao gồm 4 mô hình được sử dụng rộng rãi:
Gọi thủ tục từ xa (RPC), Triệu gọi đối tượng từ xa (RMI), Truyền thông hướng thông điệp (MOC) và Truyền thông hướng dòng (SOC).
II.1.1. Truyền thông ở mức mạng
Mô hình OSI được thiết kế cho phép các hệ thống mở truyền thông với nhau, phục vụ cho các ứng dụng phân tán.
Các tầng trong mô hình OSI:
1. Tầng vật lý (Physical layer)
- 4 -
2. Tầng liên kết dữ liệu (Data link)
3. Tầng mạng (Network)
4. Tầng vận chuyển (Transport)
5. Tầng phiên (Session)
6. Tầng trình diễn (Presentation)
7. Tầng ứng dụng (Application)
Mỗi tầng của mô hình OSI giải quyết một phần của việc giao tiếp. Và ở mỗi tầng lại có giao thức riêng của nó.
Mỗi hệ thống mở có các qui tắc về định dạng, nội dung, và ngữ nghĩa của thông điệp gửi và nhận – các qui tắc này được gọi là các giao thức (protocol). Để 1 nhóm các máy tính có thể truyền thông được với nhau, cần phải có các giao thức thống nhất giữa các máy tính. Có 2 loại giao thức khác nhau: giao thức hướng kết nối (Connection-Oriented protocol) phải thiết lập kết nối trước khi truyền.nhận dữ liệu, sau khi xong phải giải phóng kết nối. Và giao thức phi kết nối (Connectionless- Oriented protocol): không cần kết nối, thông tin được truyền ngay khi đã sẵn sàng.
II.1.2. Truyền thông ở mức midleware
a. Gọi thủ tục từ xa (Remote Procedure Call):
RPC cho phép gọi các thủ tục nằm trên các máy khác. Khi 1 tiến trình trên máy A gọi 1 thủ tục trên máy B, thì tiến trình gọi trên máy A đó sẽ bị tạm dừng, thay vào đó sẽ thực thi thủ tục được gọi trên máy B. Phương pháp này được gọi là Gọi thủ tục từ xa (RPC). Đây là kĩ thuật được sử dụng rộng rãi nhất trong các hệ phân tán.
RPC xảy ra với các bước tóm tắt như sau:
1. Thủ tục client gọi client stub một cách bình thường.
2. Client stub xây dựng một thông điệp và gọi hệ điều hành cục bộ.
3. Hệ điều hành của client gửi thông điệp đến hệ điều hành từ xa.
4. Hệ điều hành từ xa gửi thông điệp cho server stub.
5. Server stub mở gói các tham số ra và gọi server.
6. Server thực thi và trả kết quả đến stub.
7. Server stub đóng gói nó vào thông điệp và gọi hệ điều hành cục bộ.
8. Hệ điều hành của server gửi thông điệp cho hệ điều hành của client.
9. Hệ điều hành của client trao thông điệp đến client stub.
10. Stub mở gói kết quả và trả về cho client.
b. Triệu gọi đối tượng từ xa (Remote Object Invocation):
Kỹ thuật hướng đối tượng được dùng rất phổ biến hiện nay trong việc phát triển các ứng dụng phân tán (distributed) và không phân tán (non-distributed). Một trong điều quan trọng của đối tượng đó là nó ẩn giấu đi những gì bên trong của nó với bên ngoài, mà nó sẽ chỉ cung cấp các giao diện (interface). Hướng tiếp cận này cho phép các đối tượng dễ dàng được thay thế và chỉnh sửa. RPC và ROI giúp ẩn dấu thông tin trong các hệ phân tán, tăng cường sự truy cập trong suốt.
c. Truyền thông hướng thông điệp (Message Oriented Communication) Cơ chế truyền thông điệp có hai loại:
1. Truyền thông tạm thời hướng thông điệp.
- 5 -
2. Truyền thông hướng thông điệp dài lâu.
d. Truyền thông hướng dòng (Stream Oriented Communication)
Cũng có một số dạng truyền thông mà yếu tố đáp ứng thời gian đóng vai trò cốt yếu như dữ liệu âm thanh hoặc hình ảnh chẳng hạn. Do đó cần phải có 1 cơ chế truyền thông hướng dòng.
II.2 Tiến trình
Tiến trình (process) là 1 chương trình đang trong quá trình thực thi nghĩa là một chương trình hiện đang được thực thi bởi một trong các bộ xử lý ảo của hệ điều hành. Đối với tiến trình thì vấn đề quản lý và lập lịch cho các tiến trình những vấn đề quan trọng cần giải quyết. Nhiều tiến trình có thể đồng thời chia sẻ cùng một CPU và các tài nguyên phần cứng khác.
II.2.1 Luồng (threads) và mô hình đa luồng (multi-threading)
Luồng (thread) tương tự một tiến trình, tuy nhiên cũng có điểm khác biệt cơ bản giữa luồng với tiến trình. Một luồng là một đơn vị xử lý cơ bản trong hệ thống . Mỗi luồng xử lý tuần tự đoạn code của nó, sỡ hữu một con trỏ lệnh, tập các thanh ghi và một vùng nhớ stack riêng. Các luồng chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình: khi 1 luồng đang xử lý thì các luồng khác sẽ phải chờ cho đến lượt. Một luồng cũng có thể tạo lập các luồng con. Và 1 tiến trình có thể sỡ hữu nhiều luồng.
Một thuộc tính quan trọng của luồng là chúng cho phép khóa các lời gọi hệ
thống mà không cần phải khóa toàn bộ tiến trình mà có luồng đang chạy.
Kỹ thuật đa luồng (multi-threading) cho phép khai thác tính song song khi thực thi một chương trình trên một hệ thống nhiều bộ xử lý. Khi đó, mỗi luồng được gán cho một CPU khác nhau trong khi dữ liệu dùng chung được lưu trữ trong bộ nhớ chính dùng chung. Phương pháp này thường được dùng trong môi trường UNIX.
II.2.2 Di trú mã (code migration)
Di chuyển tiến trình từ máy này sang máy khác là một nhiệm vụ phức tạp và tốn kém nhưng nó sẽ cải thiện về mặt hiệu suất. Toàn bộ hiệu suất hệ thống có thể được nâng lên, nếu các tiến trình được di chuyển từ máy có mức độ xử lí quá nhiều đến máy có mức độ xử lí ít hơn. Di trú mã ũng có thể giúp tăng hiệu suất bằng cách tận dụng cơ chế song song mà không cần quan tâm đến vấn đề lập trình song song. Bên cạnh đó là tính mềm dẻo của mã di trú. Cách xây dựng ứng dụng phân tán truyền thống là tách rời ứng dụng thành các phần khác nhau, và quyết định phần nào được thực thi. Tuy nhiên nếu mã có thể di chuyển giữa các máy khác nhau ta có thể cấu hình động hệ phân tán.
Quy ước 1 tiến trình bao gồm 3 thành phần :
1. Code segment : chứa tập lệnh chương trình.
2. Resource segment: chứa các tham chiếu đến tài nguyên bên ngoài mà tiến trình cần.
3. Execution segment : chứa trạng thái thực thi hiện hành của tiến trình. Có hai mô hình cơ bản cho việc di trú mã (di trú tiến trình) :
ƒ Mô hình di động yếu (weak mobility): chỉ chuyển code segment kèm theo 1
số điều kiện ban đầu. Một đặc điểm của mô hình mã di trú yếu là một chương trình được chuyển luôn bắt đầu ở trạng thái khởi tạo của nó. Lợi thế của di trú yếu đó là tính đơn giản, nó chỉ cần máy đích có thể thực thi mã là được.
- 6 -
Lời mở đầu .2
I. Tổng quan về hệ phân tán
I.1 Hệ phân tán là gì? . 3
I.2 Các đặc trưng cơ bản của hệ phân tán . 3
II. Các nguyên lý của hệ phân tán
II.1 Truyền thông . . 4
II.2 Tiến trình 5
II.3 Định danh . 7
II.4 Đống bộ hoá . 8
II.5 Nhất quán và Nhân bản 11
II.6 Chịu lỗi 12
II.7 Anh toàn – An ninh . . 14
III. Hệ thống quản trị tệp phân tán
III.1 Sun File Network System . . 16
III.1.1 Tổng quan về NFS . 17
III.1.2 Truyền thông . . 20
III.1.3 Stateless - Stateful . 21
III.1.4 Định danh . 21
III.1.5 Đồng bộ hóa . 25
III.1.6 Lưu đệm và bản sao . . 28
III.1.7 Chịu lỗi . 29
III.1.8 An toàn – an ninh . 31
III.2 Hệ thống file Coda . 33
III.3 Các hệ thống file phân tán khác 34
III.4 So sánh giữa các hệ thống file phân tán . 37
IV. Kết luận 40
- 1 -
LỜI MỞ ĐẦU
Cùng với sự phát triển của mạng máy tính, việc tính toán, quản lý ngày nay không chỉ đơn giản tập trung trong máy tính đơn như trước nữa. Nó đòi hỏi các hệ thống tính toán phải được kết hợp từ một số lượng lớn các máy tính kết nối với nhau qua 1 mạng tốc độ cao. Chúng thường được gọi là các mạng máy tính hay còn có tên khác là các Hệ phân tán, nhằm ám chỉ tương phản với Hệ tập trung trước đây.
Ngày nay, hệ phân tán phát triển rất nhanh và được ứng dụng rộng khắp. Đó có thể là các dịch vụ thông tin phân tán, như các dịch vụ trên Internet chẳng hạn. Đó cũng có thể là các cơ sở dữ liệu phân tán như các hệ thống đặt vé máy bay, xe lửa hoặc các hệ thống tính toán phân tán.
Mục đích của tiểu luận này nhằm nêu ra 1 cách khái quát nhất những khái niệm, những nguyên lý cơ bản của một hệ phân tán nói chung. Đồng thời phân tích sâu vào việc chia sẻ dữ liệu trong hệ phân tán, 1 trong những chức năng cơ bản nhất của hệ phân tán. Chúng ta thường gọi đó là hệ thống quản trị file phân tán. Ta cũng sẽ lần lượt nghiên cứu các mô hình khác nhau của hệ thống file phân tán như Sun NFS, Coda, Plan 9, XFS
- 2 -
I.Tổng quan về hệ phân tán
I.1. Hệ phân tán là gì?
Có nhiều định nghĩa cho 1 hệ phân tán. Tuy nhiên, ta có thể định nghĩa hệ phân tán là một tập hợp bao gồm các máy tính tự trị được liên kết với nhau qua một mạng máy tính, và được cài đặt phần mềm hệ phân tán. Phần mềm hệ phân tán cho phép máy tính có thể phối hợp các hoạt động của nó và chia sẻ tài nguyên của hệ thống như phần cứng, phần mềm và dữ liệu.
Một số tính chất quan trọng của một hệ phân tán:
Thứ nhất chúng cho phép chúng ta chạy những ứng dụng khác nhau trên nhiều máy khác nhau thành một hệ thống duy nhất. Một ưu điểm khác của hệ phân tán đó là khi một hệ thống được thiết kế đúng cách, một hệ phân tán có thể có khả năng thay đổi tuỳ theo quy mô của hệ thống rất tốt. Tuy nhiên, tất cả mọi thứ đều có hai mặt của nó, một hệ phân tán cũng vậy bên cạnh những mặt ưu việt thì nó cũng có những nhược điểm đó là tính bảo mật kém
Những ứng dụng của hệ phân tán:
Cung cấp những thuận lợi cho việc tính toán đa mục đích đến những nhóm người dùng, tự động hoá công việc ngân hàng và hệ thống truyền thông đa phương tiện, ngoài ra chúng còn bao quát toàn bộ những ứng dụng thương mại và kĩ thuật. Hệ phân tán đã trở thành tiêu chuẩn để tổ chức về mặt tính toán. Nó có thể được sử dụng cho việc thực hiện tương tác hệ thống tính toán đa mục đích trong UNIX và hỗ trợ cho phạm vi rộng của thương mại và ứng dụng công nghiệp của những máy tính
I.2. Các đặc trưng cơ bản của hệ phân tán
a. Kết nối người sử dụng với tài nguyên
Chia sẻ nguồn tài nguyên là một đặc tính cơ bản của hệ thống phân tán, nó là cơ sở cho những đặc tính khác và nó ảnh hưởng đến những kiến trúc phần mềm có sẵn trong các hệ phân tán. Các nguồn tài nguyên có thể là mục dữ liệu, phần cứng và các thành phần của phần cứng. Các nguồn tài nguyên được phân biệt từ một dữ liệu được quản lý với những quá trình xử lý đơn bởi nhu cầu của vài quá trình xử lý để chia sẻ chúng
b. Tính trong suốt (transparency)
Một hệ phân tán được gọi là trong suốt nếu nó có khả năng che dấu tính rời rạc và những nhược điểm có thể của nó đối với người sử dụng cuối và người lập trình ứng dụng. Có 8 dạng trong suốt :
ƒ Trong suốt truy cập : che dấu cách biểu diễn dữ liệu và cách thức truy cập
tài nguyên.
ƒ Trong suốt vị trí : che dấu vị trí thực của tài nguyên.
ƒ Trong suốt di trú : che dấu khả năng di trú (di chuyển từ nơi này sang nơi
khác) của tài nguyên.
ƒ Trong suốt định vị lại : che dấu khả năng tài nguyên có thể di chuyển từ nơi
này đến nơi khác ngay cả khi đang được sử dụng.
ƒ Trong suốt bản sao : che dấu các bản sao được nhân ra.
ƒ Trong suốt về tương tranh.
- 3 -
ƒ Trong suốt về lỗi.
ƒ Trong suốt truy cập nhanh.
c. Tính mở (openess)
Một hệ phân tán được gọi là có tính mở nếu nó có khả năng bổ sung thêm các dịch vụ mới mà không làm ảnh hưởng xấu đến các dịch vụ đã có.
d. Tính co dãn (scalability)
Một hệ phân tán được gọi là có tính co dãn nếu nó có thể thích nghi được với những sự thay đổi qui mô của hệ thống Tính co dãn thể hiện trên 3 khía cạnh.
ƒ Dễ dàng bổ sung thêm tài nguyên và người sử dụng.
ƒ Hệ thống thay đổi qui mô về mặt địa lý.
ƒ Hệ thống thay đổi qui mô về quản trị.
e. Tính chịu lỗi (Fault tolerance)
Xử lý được những lỗi xảy ra trong quá trình làm việc. Bên cạnh tính chịu lỗi luôn đi kèm theo là khắc phục lỗi.
f. Tính an toàn an ninh (security)
II. Các nguyên lý của hệ phân tán
Trong phần này, ta sẽ xem xét 1 cách tổng quan, tóm tắt các nguyên lý của hệ phân tán. Bởi nếu đi sâu thì bản thân trong mỗi nguyên lý lại còn có rất nhiều vấn đề cần phân tích. Có tổng cộng 7 nguyên lý cơ bản đối với 1 hệ phân tán, bao gồm:
1. Truyền thông (Commmunication).
2. Tiến trình (Processes).
3. Định danh (Naming).
4. Đồng bộ hóa (Synchronization).
5. Nhất quán và nhân bản (Consistency & Replication).
6. Chịu lỗi (Fault tolerance).
7. An toàn – an ninh (Security).
Sau đây ta đi vào phân tích sơ bộ từng nguyên lý của hệ phân tán.
II.1. Truyền thông
Truyền thông giữa các tiến trình rất quan trọng trong một hệ phân tán. Truyền thông có thể chia thành 2 mức:
ƒ Truyền thông ở mức mạng máy tính.
ƒ Truyền thông ở mức midleware: bao gồm 4 mô hình được sử dụng rộng rãi:
Gọi thủ tục từ xa (RPC), Triệu gọi đối tượng từ xa (RMI), Truyền thông hướng thông điệp (MOC) và Truyền thông hướng dòng (SOC).
II.1.1. Truyền thông ở mức mạng
Mô hình OSI được thiết kế cho phép các hệ thống mở truyền thông với nhau, phục vụ cho các ứng dụng phân tán.
Các tầng trong mô hình OSI:
1. Tầng vật lý (Physical layer)
- 4 -
2. Tầng liên kết dữ liệu (Data link)
3. Tầng mạng (Network)
4. Tầng vận chuyển (Transport)
5. Tầng phiên (Session)
6. Tầng trình diễn (Presentation)
7. Tầng ứng dụng (Application)
Mỗi tầng của mô hình OSI giải quyết một phần của việc giao tiếp. Và ở mỗi tầng lại có giao thức riêng của nó.
Mỗi hệ thống mở có các qui tắc về định dạng, nội dung, và ngữ nghĩa của thông điệp gửi và nhận – các qui tắc này được gọi là các giao thức (protocol). Để 1 nhóm các máy tính có thể truyền thông được với nhau, cần phải có các giao thức thống nhất giữa các máy tính. Có 2 loại giao thức khác nhau: giao thức hướng kết nối (Connection-Oriented protocol) phải thiết lập kết nối trước khi truyền.nhận dữ liệu, sau khi xong phải giải phóng kết nối. Và giao thức phi kết nối (Connectionless- Oriented protocol): không cần kết nối, thông tin được truyền ngay khi đã sẵn sàng.
II.1.2. Truyền thông ở mức midleware
a. Gọi thủ tục từ xa (Remote Procedure Call):
RPC cho phép gọi các thủ tục nằm trên các máy khác. Khi 1 tiến trình trên máy A gọi 1 thủ tục trên máy B, thì tiến trình gọi trên máy A đó sẽ bị tạm dừng, thay vào đó sẽ thực thi thủ tục được gọi trên máy B. Phương pháp này được gọi là Gọi thủ tục từ xa (RPC). Đây là kĩ thuật được sử dụng rộng rãi nhất trong các hệ phân tán.
RPC xảy ra với các bước tóm tắt như sau:
1. Thủ tục client gọi client stub một cách bình thường.
2. Client stub xây dựng một thông điệp và gọi hệ điều hành cục bộ.
3. Hệ điều hành của client gửi thông điệp đến hệ điều hành từ xa.
4. Hệ điều hành từ xa gửi thông điệp cho server stub.
5. Server stub mở gói các tham số ra và gọi server.
6. Server thực thi và trả kết quả đến stub.
7. Server stub đóng gói nó vào thông điệp và gọi hệ điều hành cục bộ.
8. Hệ điều hành của server gửi thông điệp cho hệ điều hành của client.
9. Hệ điều hành của client trao thông điệp đến client stub.
10. Stub mở gói kết quả và trả về cho client.
b. Triệu gọi đối tượng từ xa (Remote Object Invocation):
Kỹ thuật hướng đối tượng được dùng rất phổ biến hiện nay trong việc phát triển các ứng dụng phân tán (distributed) và không phân tán (non-distributed). Một trong điều quan trọng của đối tượng đó là nó ẩn giấu đi những gì bên trong của nó với bên ngoài, mà nó sẽ chỉ cung cấp các giao diện (interface). Hướng tiếp cận này cho phép các đối tượng dễ dàng được thay thế và chỉnh sửa. RPC và ROI giúp ẩn dấu thông tin trong các hệ phân tán, tăng cường sự truy cập trong suốt.
c. Truyền thông hướng thông điệp (Message Oriented Communication) Cơ chế truyền thông điệp có hai loại:
1. Truyền thông tạm thời hướng thông điệp.
- 5 -
2. Truyền thông hướng thông điệp dài lâu.
d. Truyền thông hướng dòng (Stream Oriented Communication)
Cũng có một số dạng truyền thông mà yếu tố đáp ứng thời gian đóng vai trò cốt yếu như dữ liệu âm thanh hoặc hình ảnh chẳng hạn. Do đó cần phải có 1 cơ chế truyền thông hướng dòng.
II.2 Tiến trình
Tiến trình (process) là 1 chương trình đang trong quá trình thực thi nghĩa là một chương trình hiện đang được thực thi bởi một trong các bộ xử lý ảo của hệ điều hành. Đối với tiến trình thì vấn đề quản lý và lập lịch cho các tiến trình những vấn đề quan trọng cần giải quyết. Nhiều tiến trình có thể đồng thời chia sẻ cùng một CPU và các tài nguyên phần cứng khác.
II.2.1 Luồng (threads) và mô hình đa luồng (multi-threading)
Luồng (thread) tương tự một tiến trình, tuy nhiên cũng có điểm khác biệt cơ bản giữa luồng với tiến trình. Một luồng là một đơn vị xử lý cơ bản trong hệ thống . Mỗi luồng xử lý tuần tự đoạn code của nó, sỡ hữu một con trỏ lệnh, tập các thanh ghi và một vùng nhớ stack riêng. Các luồng chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình: khi 1 luồng đang xử lý thì các luồng khác sẽ phải chờ cho đến lượt. Một luồng cũng có thể tạo lập các luồng con. Và 1 tiến trình có thể sỡ hữu nhiều luồng.
Một thuộc tính quan trọng của luồng là chúng cho phép khóa các lời gọi hệ
thống mà không cần phải khóa toàn bộ tiến trình mà có luồng đang chạy.
Kỹ thuật đa luồng (multi-threading) cho phép khai thác tính song song khi thực thi một chương trình trên một hệ thống nhiều bộ xử lý. Khi đó, mỗi luồng được gán cho một CPU khác nhau trong khi dữ liệu dùng chung được lưu trữ trong bộ nhớ chính dùng chung. Phương pháp này thường được dùng trong môi trường UNIX.
II.2.2 Di trú mã (code migration)
Di chuyển tiến trình từ máy này sang máy khác là một nhiệm vụ phức tạp và tốn kém nhưng nó sẽ cải thiện về mặt hiệu suất. Toàn bộ hiệu suất hệ thống có thể được nâng lên, nếu các tiến trình được di chuyển từ máy có mức độ xử lí quá nhiều đến máy có mức độ xử lí ít hơn. Di trú mã ũng có thể giúp tăng hiệu suất bằng cách tận dụng cơ chế song song mà không cần quan tâm đến vấn đề lập trình song song. Bên cạnh đó là tính mềm dẻo của mã di trú. Cách xây dựng ứng dụng phân tán truyền thống là tách rời ứng dụng thành các phần khác nhau, và quyết định phần nào được thực thi. Tuy nhiên nếu mã có thể di chuyển giữa các máy khác nhau ta có thể cấu hình động hệ phân tán.
Quy ước 1 tiến trình bao gồm 3 thành phần :
1. Code segment : chứa tập lệnh chương trình.
2. Resource segment: chứa các tham chiếu đến tài nguyên bên ngoài mà tiến trình cần.
3. Execution segment : chứa trạng thái thực thi hiện hành của tiến trình. Có hai mô hình cơ bản cho việc di trú mã (di trú tiến trình) :
ƒ Mô hình di động yếu (weak mobility): chỉ chuyển code segment kèm theo 1
số điều kiện ban đầu. Một đặc điểm của mô hình mã di trú yếu là một chương trình được chuyển luôn bắt đầu ở trạng thái khởi tạo của nó. Lợi thế của di trú yếu đó là tính đơn giản, nó chỉ cần máy đích có thể thực thi mã là được.
- 6 -