Các lỗi thường gặp trong các hệ thống phân tán là: 1.4.5.1 Lỗi thiết bị:
Một số thành phần trong hệ thống có thể bị lỗi như bộ xử lí, bộ nhớ, thiết bị I/O, cable hay phần mềm. Nếu gọi khả năng không hoạt động của một thiết bị là p trong một giây, xác suất để có k giây liên tiếp sau đó không bị lỗi rồi mới bị lỗi là p(1-p)P
k
P
. Thời gian kì vọng bị lỗi là: Thời gian lỗi trung bình=∑∞ ( )
= − − 1 1 1 k k p kp =1/p 1.4.5.2 Lỗi hệ thống:
Khi ta không quan tâm đến hoạt động của từng thành phần trong hệ thống phân tán mà chỉ quan tâm đến tính chất có hoạt động hay không của ứng dụng thì các lỗi làm cho ứng dụng ngừng chạy đều gọi là lỗi hệ thống.
Để tránh lỗi người ta thực hiện kĩ thuật Redundancy, kĩ thuật này gồm 3 loại, dư thừa thông tin, dư thừa thời gian và dư thừa vật lí. Dư thừa thông tin là thực hiện thêm thông tin vào để phục vụ quá trình khôi phục thông tin khi bị mất (ví dụ mã Hamming). Dư thừa thời gian tức là có thể thực hiện lại một hành động nào đó nếu thấy cần thiết, ví dụ giao dịch nguyên tử. Dư thừa vật lí là sử dụng thêm các thiết bị để đề phòng trường hợp một số thiết bị đang làm việc không hoạt động.
1.4.6 Các hệ thống phân tán thời gian thực:
Một hình thức khác của hệ thống phân tán là hệ thống thời gian thực, trên đó chạy các ứng dụng tương tác thời gian thực. Khi có yêu cầu hệ thống phải đáp ứng theo một cách nhất định và có một mốc thời gian hoàn thành nhất định.
Nếu hệ thống kết thúc công việc sau mốc thời gian này thì coi như không hoàn thành công việc.
Hệ thống thời gian thực có thể phân làm 2 loại tuỳ thuộc mức độ cần thiết của mốc thời gian và hậu quả của việc mất thông tin:
1. Các hệ thống thời gian thực mềm 2. Các hệ thống thời gian thực cứng
Thời gian thực mềm có nghĩa là việc thỉnh thoảng xử lí không kịp mốc thời
gian nêu trên là có thể chấp nhận được. Ngược lại, thời gian thực cứng là không thể chấp nhận được. Thực tế còn có các hệ thống trung gian, nghĩa là nếu không đạt được mốc thời gian này thì phải kill tiến trình hiện tại nhưng kết quả không bị gián đoạn.
Việc thiết kế các hệ thống thời gian thực có một số đặc điểm riêng, ta sẽ xem xét các đặc điểm quan trọng nhất.
1.4.6.1 Đồng bộ đồng hồ:
Vấn đề đồng bộ đồng hồ cũng giống như trong các hệ thống phân tán thông thường như ta đã phân tích ở trên.
1.4.6.2 Các hệ thống Event-Triggered và Time-Triggered:
Trong hệ thống thời gian thực event-triggered, khi một sự kiện có ý nghĩa xẩy ra, các cảm biến sẽ xác định sự kiện này và gửi một ngắt đến CPU. Hầu hết
các hệ thống thời gian thực hoạt động theo nguyên lí này. Vấn đề của hệ thống này là khi có nhiều sự kiện xẩy ra cùng một lúc, hệ thống có thể bị quá tải.
Hệ thống thời gian thực time-triggered không gặp phải vấn đề này, các ngắt
gửi tới CPU được quản lí bằng một đồng hồ, và được thực hiện sau mỗi khoảng thời gian ∆T nhất định. Khoảng thời gian ∆T phải được chọn một cách hợp lí, vì nếu nó quá ngắn thì sẽ có quá nhiều ngắt hệ thống sẽ tốn nhiều thời gian không cần thiết để triển khai nó; còn nếu nó quá dài thì các sự kiện quan trọng sẽ không được cảnh báo kịp cho hệ thống.
Tóm lại, hệ thống event triggered phù hợp trong môi trường ít tải, và sẽ bị - quá tải khi tải của hệ thống tăng cao. Còn hệ thống time triggered thì ngược - lại.
1.4.6.3 Khả năng dự báo trước:
Một trong những đặc tính quan trọng nhất của hệ thống thời gian là khả năng đoán trước. Thông thường, khi sự kiện E xẩy ra, tiến trình X sẽ chạy, sau đó
là các tiến trình Y và Z, hoặc là chạy lần lượt hoặc là chạy song song với nhau. Ví dụ, nếu tiến trình X cần 50ms, Y và Z cần 60ms và tiến trình cần 5ms để khởi động thì hệ thống có thể đảm bảo trước là có thể thực hiện được 5 sự kiện E trong 1 giây.
1.4.6.4 Truyền thông thời gian thực:
Truyền thông trong các hệ thống thời gian thực khác với trong các hệ thống phân tán khác, vì luôn quan tâm đến performance, mà khả năng dự đoán và quyết định là các yếu tố quan trọng.
Để đạt được khả năng dự báo thì truyền thông giữa các bộ xử lí phải có khả năng dự báo được. Các giao thức LAN vốn đã mang tính ngẫu nhiên, chẳng hạn như Ethernet và chúng ta không thể đảm bảo thời gian truyền dẫn ở một ngưỡng nhất định nào đó. Khi một máy gửi một bản tin vào mạng Ethernet, nó có thể có xung đột với các máy khác, các máy sau đó phải chờ một khoảng thời gian ngẫu nhiên rồi mới gửi lại gói tin định gửi, nhưng nó vẫn có thể gây xung đột trong mạng… Như vậy thời gian gửi một gói tin trong mạng là không thể đoán trước.
Không giống mạng Ethernet, mạng token ring LAN sẽ xử lí gói tin theo một cách khác. Khi một bộ xử lí có một gói tin cần gửi, nó chờ cho token chuyển đi một vòng trong mạng, sau đó thu lại token rồi mới gửi gói tin, trả lại token cho các máy khác trong mạng. Ví dụ một vòng ring có k máy, một máy định gửi gói tin n-byte khi nhận được token, nó có thể đảm bảo rằng gói tin này có
thể đến bất kì đâu trong hệ thống mà thời gian truyền không vượt quá kn byte thời gian. Rõ ràng tính năng này đáp ứng được yêu cầu của hệ thống phân tán thời gian thực. Người ta có thể thêm vào trường ưu tiên để dành quyền ưu tiên cho các gói cần được ưu tiên trong mạng ring.
Một phương pháp khác để đảm bảo truyền thông trong hệ thống thời gian thực là sử dụng công nghệ đa truy cập phân chia theo thời gian (TDMA) như hình 1.19.
Hình 1.19: Khung đa truy cập phân chia theo thời gian.
Ở đây traffic được tổ chức thành các khung kích thước cố định, mỗi khung chứa n khe thời gian. Mỗi khe thời gian ứng với thời gian của một bộ xử lí để truyền gói tin. Cách tổ chức như vậy sẽ tránh được xung đột, trễ truyền dẫn bị hạn chế, mỗi bộ xử lí được đảm bảo một tỉ lệ băng thông nhất định phụ thuộc vào số lượng khe thời gian trong mỗi khung.
Các hệ thống thời gian thực hoạt động trên mạng WAN có yêu cầu tương tự về khả năng dự đoán. Truyền thông trên mạng WAN luôn là hướng kết nối (connection oriented), nên có thể thiết lập các kết nối thời gian thực giữa các máy ở khoảng cách xa với nhau. Khi kết nối này được thiết lập, QoS sẽ được thoả thuận trước, chẳng hạn về độ trễ tối đa, jitter tối đa, băng thông tối thiểu, và các thông số khác. Để đảm bảo cho các thoả thuận này, mạng sẽ phải dành riêng các memory buffer, tables entry, CPU cycle, khả năng đường truyền, và các nguồn lực tài nguyên khác.
Vấn đề của các hệ thống thời gian thực trên mạng WAN là tỉ lệ mất gói tương đối cao của chúng, các giao thức xử lí mất gói chuẩn thường đặt một timer khi mỗi gói được gửi đi. Nếu timer hết giờ trước khi nhận được xác nhận cho gói tin đã gửi đi thì gói tin sẽ được gửi lại. Trong hệ thống thời gian thực, việc này là không thể chấp nhận được. Có một giải pháp là phía gửi luôn gửi mỗi gói tin 2 lần, trên các kết nối khác nhau nếu có điều kiện. Dù giải pháp này lãng phí mất một nửa tài nguyên băng thông, nhưng nếu có tỉ lệ một gói trong số 10P
5
P
gói bị mất trên đường truyền thì bằng giải pháp này, chỉ có 1 trong 10P
10
P
gói có thể bị mất.
1.4.6.5 Real Time Scheduling:-
Các hệ thống thời gian thực thường được xem là một tập hợp các tác vụ ngắn (tiến trình hoặc thread), mỗi một tác vụ là một hàm đã biết và phải được thực hiện trong khoảng thời gian nhất định.
Các giải thuật scheduling thời gian thực có thể được phân chia theo các thông số sau:
1. Thời gian thực cứng (đảm bảo được tất cả các mốc thời gian) và thời gian thực mềm (best effort approach).
2. Preemptive (cho phép một tác vụ tạm ngừng để thực hiện một tác vụ khác quan trọng hơn, rồi khôi phục hoạt động khi không còn tác vụ quan trọng hơn nó) và nonpreemptive (không có chế độ ưu tiên cho các ứng dụng có độ ưu tiên cao hơn tác vụ hiện tại)
3. Động (khi có một sự kiện xẩy ra, giải thuật này sẽ quyết định liệu có chạy tác vụ gắn với sự kiện đó hay vẫn tiếp tục thực hiện tác vụ hiện tại) và tĩnh (quyết định scheduling sẽ được xác định trước khi thực hiện tác vụ)
4. Tập trung (một máy có trách nhiệm thu thập tất cả các thông tin và thực
hiện tất cả các quyết định scheduling) và phi tập trung (mỗi bộ xử lí tự ra quyết định).
Giả sử một hệ thống phân tán thời gian thực có m tác vụ và N bộ xử lí, gọi CRiR
là thời lượng CPU cần thiết để thực hiện tác vụ i, PRiR là chu kì giữa 2 lần ngắt liên tiếp. Độ xử dụng của hệ thống, sẽ có mối quan hệ với N theo phương µ trình sau: ∑ = ≤ = m i i i N P C 1 µ
Ví dụ, nếu một tác vụ bắt đầu sau mỗi 20ms và mỗi lần kéo dài 10ms, nó sẽ sử dụng 0.5 thời lượng CPU. Năm tác vụ như thế sẽ cần 3 CPU để thực hiện tất cả các công việc của 5 tác vụ này. Tập các tác vụ đáp ứng được yêu cầu như trên được gọi là có khả năng schedulable. Ta thấy rằng số lượng CPU nêu trong phương trình trên sẽ nhỏ hơn số lượng thực tế vì ta không tính tới thời gian chuyển từ tác vụ này sang thực hiện tác vụ khác, thời gian truyền các thông điệp, sự quá tải của các tài nguyên khác và khả năng scheduling tối ưu nhất có thể có.
1.5 Các hệ thống file phân tán:
Thành phần quan trọng nhất của một hệ thống phân tán là hệ thống file. Cũng giống như trong hệ thống một bộ xử lí, trong các hệ thống phân tán, nhiệm vụ của hệ thống file là chứa các chương trình và dữ liệu cũng như sẵn sàng sử dụng chúng khi cần. Ta sẽ tập trung vào các khía cạnh đặc trưng của hệ thống file phân tán so với các hệ thống tập trung khác.
Đầu tiên ta sẽ phân biệt 2 khái niệm file service và file server. File service là chi tiết về những gì hệ thống file yêu cầu client. Nó mô tả các hàm nguyên thuỷ, các thông số cũng như hoạt động của chúng. Ngược lại, file server là một tiến trình chạy trên một số máy và giúp thực hiện file service.