Hệ thống file phân tán
- 6 -
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.