Nguyễn Đức Hòa – HTTT 14, MTA
CÂU HỎI ÔN TẬP
Môn: Hệ thống phân tán
1. Làm rõ các dạng trong suốt của hệ phân tán. (Chương 1, slide 18)
2. Tính co dãn của hệ phân tán. Các biện pháp nâng cao khả năng co dãn của hệ phân tán.
(Chương 1, slide 23)
3. Trình bày những hiểu biết về thin client và fat client trong các hệ phân tán. Từ những hiểu biết
đó hãy cho biết trường hợp vận dụng cụ thể. (Chương 2, slide 18)
4. Trình bày những hiểu biết về đặc điểm phần cứng của hệ phân tán. Phân biệt hệ thống
multiprocessor và multicomputer. (Chương 1, slide 32)
5. Trình bày những hiểu biết về truyền thông RPC. Yếu tố nào đảm bảo các lời triệu gọi thủ tục
từ xa khác nhau thì thực hiện các công việc khác nhau. (Chương 3, slide 22)
6. Nêu những hiểu biết về truyền thông hướng thông điệp và trường hợp vận dụng. (Chương 3,
slide 43)
7. Nêu những hiểu biết về truyền thông hướng dòng. Tại sao trong truyền thông hướng dòng thì
đồng bộ hóa các dòng lại có ý nghĩa quan trọng. (Chương 3, slide 53)
8. Trình bày những hiểu biết về tiến trình trong các hệ phân tán. (Chương 4, slide 4)
9. Luồng trong các hệ phân tán. Ý nghĩa của việc sử dụng các hệ thống đa luồng. (Chương 4,
slide 5)
10.Trình bày những hiểu biết về mô hình đa luồng phía client và mô hình đa luồng phía server.
Cho ví dụ sử dụng trên thực tế. (Chương 4, slide 10)
11.Trình bày các mô hình di trú mã. Ý nghĩa. (Chương 4, slide 16)
12.Trình bày các hiểu biết về tên, địa chỉ và điểm truy cập. (Chương 5, slide 5)
13.Ý nghĩa của phân giải tên. Trình bày phương pháp phân giải tên tuần tự (Chương 5, slide 19)
14.Ý nghĩa của phân giải tên. Trình bày phương pháp phân giải tên đệ quy (Chương 5, slide 19)
15.Trình bày những hiểu biết về phân giải tên tuần tự và phân giải tên đệ quy. Trường hợp nào thì
sử dụng kiểu phân giải tên nào. (Chương 5, slide 19)
16.Tại sao đối với các thực thể di động thì phải có cách tổ chức tên và phân giải tên đặc biệt.
Trình bày phương pháp định vị thực thể di động bằng phương pháp truyền thông nhóm rộng
rãi. (Chương 5, slide 25)
17.Tại sao đối với các thực thể di động thì phải có cách tổ chức tên và phân giải tên đặc biệt.
Trình bày phương pháp định vị thực thể di động bằng phương pháp chuyển con trỏ. (Chương
5, slide 27)
18.Tại sao đối với các thực thể di động thì phải có cách tổ chức tên và phân giải tên đặc biệt.
Trình bày phương pháp định vị thực thể di động bằng phương pháp thông qua điểm gốc
(Chương 5, slide 29)
1
Nguyễn Đức Hòa – HTTT 14, MTA
19.Đồng bộ hóa. Khái niệm, lý do. (Chương 6, slide 2)
20.Ý nghĩa của đồng bộ hóa đồng hồ vật lý. Trình bày các giải thuật đồng bộ hóa đồng hồ vật lý.
(Chương 6, slide 4)
21.Đồng bộ hóa đồng hồ logic. Ý nghĩa, trường hợp vận dụng. (Chương 6, slide 14)
22.Trình bày các giải thuật bầu chọn trong đồng bộ hóa đồng hồ logic. (Chương 6, slide 43)
23.Đồng bộ hóa đồng hồ logic. Nêu các giải pháp cấp khóa, khóa file và thu hồi khóa trong các hệ
thống file phân tán. (Chương 6, slide )
24.Trình bày những hiểu biết về nhất quán và nhân bản trong các hệ thống phân tán. (Chương 7,
slide 2)
25.Trình bày những hiểu biết về các giao thức kéo và đẩy trong quản lý các bản sao. (Chương 7,
slide 32)
26.Phân biệt bản sao khởi tạo bởi client và bản sao khởi tạo bởi server. Ý nghĩa và trường hợp vận
dụng. (Chương 7, slide 27)
27.Sao chép và caching được sử dụng trong các hệ phân tán như thế nào? (Chương 7, slide)
28.Trình bày các cách thức lan truyền cập nhật (chỉ thông báo là có cập nhật, truyền dữ liệu cập
nhật từ bản sao này tới bản sao khác, lan truyền các thao tác cập nhật) (Chương 7, slide 28)
29.Tính chịu lỗi trong các hệ phân tán. Ý nghĩa, ví dụ một hệ thống có tính chịu lỗi (Chương 8,
slide 2)
30.Làm rõ tính sẵn sàng, tính tin cậy, tính an toàn và khả năng bảo trì của một hệ thống có tính
chịu lỗi (Chương 8, slide 4).
31.Các loại dư thừa được sử dụng để tăng tính chịu lỗi trong các hệ phân tán. Làm rõ các hiểu biết
về che dấu lỗi bằng dư thừa thông tin. (Chương 8, slide 10)
32.Các loại dư thừa được sử dụng để tăng tính chịu lỗi trong các hệ phân tán. Làm rõ các hiểu biết
về che dấu lỗi bằng dư thừa thời gian. (Chương 8, slide 10)
33.Các loại dư thừa được sử dụng để tăng tính chịu lỗi trong các hệ phân tán. Làm rõ các hiểu biết
về che dấu lỗi bằng dư thừa vật lý. (Chương 8, slide 10)
34.Hiểu thế nào là phân tán theo chiều dọc và chiều ngang?
35.Nhắc lại hiểu biết về mạng các server cạnh.
36.Trình bày hiểu biết về di trú mã. Nêu ví dụ ứng dụng. (Chương 4, slide 16)
2
Nguyễn Đức Hòa – HTTT 14, MTA
TRẢ LỜI CÂU HỎI
Câu 1+2
- Hệ phân tán (distributed system): là một hệ thống có chức năng và dữ liệu phân tán trên các
máy tính độc lập được kết nối với nhau bởi một mạng máy tính và được cài đặt phần mềm hệ phân
tán, giao tiếp với người dùng như một hệ thống thống nhất, toàn vẹn.
- 6 đặc trưng cơ bản của hệ phân tán: kết nối người dùng với tài nguyên, tính trong suốt, tính mở,
tính co dãn, tính chịu lỗi, tính an toàn bảo mật
* Tính trong suốt (transparency): là khả năng che dấu tính rời rạc và nhược điểm có thể đối với
người dùng và người lập trình ứng dụng về sự tồn tại độc lập của các thành phần hệ thống, làm họ
cảm nhận hệ thống như là một thể đồng nhất.
1. Trong suốt truy cập: che giấu sự khác biệt về cách biểu diễn và cách thức truy cập tài
nguyên (toàn cục/ cục bộ như nhau).
2. Trong suốt vị trí: che giấu vị trí đích thực của tài nguyên (đã được định vị và chỉ dẫn theo
tên logic trong một hệ thống thống nhất)
3. Trong suốt di trú: che giấu khả năng chuyển vị trí của tài nguyên (di chuyển định vị vật lý
mà không cần đổi tên)
4. Trong suốt tái định vị: che giấu việc di chuyển của tài nguyên (giữa các máy trạm) ngay cả
khi đang được sử dụng.
5. Trong suốt nhân bản: che giấu các bản sao của tài nguyên khi được nhân bản.
6. Trong suốt về tương tranh (truy xuất đồng thời): một tài nguyên có thể được chia sẻ cho
nhiều người và bởi nhiều người, nhưng người dùng ko biết về sự chia sẻ này.
7. Trong suốt lỗi: che giấu lỗi hệ thống nếu có (cách truy xuất đến tài nguyên nằm trên vị trí
khác, sau khi lỗi được khắc phục thì tự động cho phép truy xuất lại)
8. Trong suốt bền vững: che giấu việc di chuyển tài nguyên từ bộ nhớ ngoài vào bộ nhớ trong
và ngược lại.
* Tính co dãn (scalability): một hệ phân tán được gọi là có tính co giãn nếu nó thích nghi với sự
thay đổi quy mô của hệ thống
+ Dễ bổ sung người sử dụng và tài nguyên hệ thống: khi hệ thống thay đổi quy mô về mặt địa
lý dẫn đến sự thay đổi vị trí địa lý của người sử dụng và các tài nguyên.
+ Hệ thống có thể đáp ứng những thay đổi quy mô về quản trị.
- 3 biện pháp nâng cao khả năng co dãn của hệ phân tán:
3
Nguyễn Đức Hòa – HTTT 14, MTA
+ Rút ngắn thời gian đợi: Sử dụng trong trường hợp mở rộng về mặt địa lý. Ý tưởng của nó là
hạn chế tối đa thời gian chờ đối với trả lời từ server ở xa. VD: hạn chế khối lượng thực hiện trên
Server bằng cách san sẻ công việc cho Client.
+ Phân tán: phân nhỏ các thành phần hệ thống và phân tán chúng ở các nơi khác nhau trong
hệ thống (quản lý phân cấp). VD: DNS xác định theo cách phân cấp miền lớn thành các miền con.
Tên miền mỗi vùng được xử lý bởi 1 server tên miền. Với phương pháp này sẽ giải quyết được
vấn đề khi thêm người dùng hay tài nguyên vào hệ thống.
+ Nhân bản: sao chép giữa các thành phần của hệ thống nhằm cân bằng tải giữa các thành
phần và tăng hiệu suất làm việc của hệ thống. VD: bộ nhớ cache
Câu 3
- Mô hình kiến trúc (architectural styles): mô tả một cách đặc biệt các cấu hình của các thành
phần (component) và các kết nối (connector).
- 3 kiến trúc hệ thống trong hệ phân tán: tập trung, phi tập trung, hỗn hợp
- Kiến trúc tập trung: kiến trúc client-server, kiến trúc phân tầng, kiến trúc đa tầng
* Kiến trúc đa tầng: client chỉ chứa các chương trình thực hiện các cấp giao diện người dùng,
server chứa các chương trình thực hiện ở mức xử lý và mức độ dữ liệu.
- Cách tiếp cận để tổ chức các máy client – server là phân phối các chương trình ở các lớp ứng
dụng của phân tầng ứng dụng với các máy khác nhau. Ở dạng đơn giản máy client được sử dụng
trong hai dạng là thin-client và fat-client.
- Thin client: máy khách chỉ đảm nhiệm phần giao diện, máy chủ thực hiện chức năng của lớp
chức năng và lớp CSDL, mọi tính toán tập trung ở máy chủ.
Nếu sử dụng thin - client, server sẽ cung cấp các quá trình xử lý và quản lý dữ liệu; cung cấp
cho khách hàng những giao diện đồ họa đơn giản. Với kiến trúc này ta sẽ dễ dàng quản lý hơn,
đáng tin cậy hơn, các máy client không cần phải quá lớn và cấu hình cao nhưng lại làm mất các
hoạt động nhận thức của client.
4
Nguyễn Đức Hòa – HTTT 14, MTA
+ Ưu điểm: là giảm sự lưu thông trên mạng và tốc độ nhanh hơn do lớp chức năng của
chương trình nằm ở máy chủ cùng với CSDL, do đó mọi thao tác với CSDL của chương trình đều
được thực hiện ngay trên máy chủ và thông tin lưu thông trên mạng chỉ là những kết quả được trả
về cho người dùng sau khi được tính toán. Mặt khác, do phần lõi của chương trình được đặt tập
trung tại máy chủ nên việc cập nhật chương trình sẽ dễ dàng hơn.
+ Nhược điểm: do công việc được tập trung quá nhiều tại máy chủ nên đòi hỏi cấu hình máy
chủ phải đủ mạnh đặc biệt là khi có nhiều máy khách cùng truy xuất tới máy chủ cùng lúc.
- Fat client: client thường phải đảm nhận cả 2 lớp là giao diện và chức năng, còn server thường
chỉ đảm nhận nhiệm vụ của lớp CSDL.
Nếu sử dụng fat – client, tất cả các ứng dụng xử lý dữ liệu và một số dữ liệu tại phía client sẽ
làm giảm khối lượng công việc tại máy chủ, có khả năng mở rộng hơn nhưng lại khó quản lý bời
quản trị hệ thống và kém an toàn
+ Ưu điểm : đơn giản, hợp cho những ứng dụng nhỏ.
+ Nhược điểm: Do tính toán nghiêng về phía client nhiều nên đòi hỏi client phải có cấu hình
đủ mạnh. Do lớp chức năng của chương trình nằm ở phía client nên khi cần nâng cấp chương trình
thì sẽ rất khó khăn vì phải cập nhật lại chương trình nằm ở toàn bộ các client. Do mọi thao tác nằm
trên client nên thao tác yêu cầu dữ liệu giữa client và server nhiều dẫn đến tốc độ chương trình
chậm.
* Vận dụng:
+ Thin - client: mô hình học trực tuyến vì cần quản lý dữ liệu tập trung, có sự thống nhất
trong việc test, cập nhật… nên cần sự trao đổi giữa client và server thường xuyên. Năng lực của
Server đảm bảo quản lý tập trung dữ liệu.
+ Fat - client: với các game cần năng lực xử lý cao thì không cần server xử lý nhiều, server
chỉ xử lý các thông tin quan trọng, client sẽ xử lý nhiều hơn.
Câu 4
- Phần cứng của một hệ phân tán bao gồm các máy tính độc lập và các kết nối mạng truyền dẫn .
Cụ thể tài nguyên phần cứng như : CPU, máy in, RAM, .....
- Có 2 loại máy tính:
+ Các loại máy tính có chia sẻ bộ nhớ (Shared memory): các loại máy đa xử lý
(multiproccessor) - tất cả các máy tính đều sử dụng chung một bộ nhớ (chỉ có một không gian địa
chỉ duy nhất được sử dụng cho tất cả các bộ vi xử lý).
+ Các máy tính không chia sẻ bộ nhớ (Private memory): các hệ thống đa máy tính
(multicomputer) - mỗi máy tính sử dụng bộ nhớ của mình
5
Nguyễn Đức Hòa – HTTT 14, MTA
- Trong mỗi loại lại chia thành 2 loại theo kiểu mạng kết nối:
+ Kết nối dựa trên bus (bus-based): chỉ có một đường kết nối chung duy nhất.
+ Kết nối dựa trên chuyển mạch (switch-based): có nhiều đường kết nối từ máy này sang máy
khác theo kênh riêng với các công nghệ khác nhau.
* Phân biệt hệ thống multiprocessor và multicomputer
Multiprocessor
Multicomputer
- Một hệ thống đa xử lý chỉ đơn giản là một - Đa máy tính là một hệ thống được tạo thành từ
máy tính có nhiều hơn một CPU xử lý. Nhờ vậy một số máy tính, mỗi máy có thể có nhiều bộ xử
hệ thống có thể thực thi nhiều tác vụ cùng một lý. Các máy được kết nối với nhau thông qua
lúc. Lỗi trong một bộ xử lý sẽ không ảnh hưởng mạng truyền thông, hoạt động cùng nhau để giải
đến nhiệm vụ của các bộ xử lý khác. Do đó, một quyết vấn đề.
bộ đa xử lý là đáng tin cậy hơn.
- Có một bộ nhớ (không gian địa chỉ vật lý) - Mỗi bộ xử lý có bộ nhớ riêng và chỉ có thể
được chia sẻ cho tất cả các CPU. Vì vậy tốc độ truy cập được bởi bộ xử lý cụ thể đó. Do đó, tốc
xử lý của hệ thống cũng chậm hơn.
độ nhanh hơn hệ thống đa xử lý.
- Lập trình một hệ thống đa xử lý sẽ dễ dàng - Xây dựng một hệ thống multicomputer dễ
hơn việc lập trình hệ thống đa máy tính. Tuy dàng và tiết kiệm chi phí hơn so với
nhiên, việc xây dựng hệ thống khá khó khăn và multiprocessor. Mặt khác, lập trình một hệ
tốn kém.
thống đa máy tính là khó khăn.
- Phù hợp với xử lý song song
- Thích hợp để xử lý phân tán do hệ thống đa
máy tính có khả năng truyền thông điệp giữa
các bộ xử lý, có thể phân chia nhiệm vụ giữa
các bộ xử lý để hoàn thành nhiệm vụ.
Câu 5+6+7
- Truyền thông giữa các tiến trình trong hệ phân tán có thể chia thành hai mức:
+ Mức mạng máy tính (OSI: ứng dụng, trình diễn, phiên, giao vận, mạng, liên kết, vật lý)
+ Mức middleware (thay thế cho tầng phiên và tầng trình diễn trong mô hình OSI)
- Có 4 mô hình dịch vụ được sử dụng rộng rãi cho truyền thông ở mức middleware:
+ Gọi thủ tục từ xa RPC (Remote Procedure Call)
+ Triệu gọi đối tượng từ xa ROI (Remote Object Invocation)
+ Middleware hướng thông điệp (Message - oriented Middleware)
+ Middleware hướng dòng (Stream - oriented Middleware)
6
Nguyễn Đức Hòa – HTTT 14, MTA
* Truyền thông RPC:
- Cho phép các chương trình gọi các thủ tục ở các máy khác, thực hiện chủ yếu theo mô hình
Client - Server.
- Khi 1 tiến trình trên máy client muốn thực hiện 1 thủ tục trên server thì nó sẽ thực hiện lời gọi
thủ tục từ xa tới server. Thủ tục đó sẽ được thực hiện trên server với tham số được truyền từ client
và kết quả sẽ được trả lại cho client. Các thông điệp được gửi là trong suốt. Cơ chế RPC được hỗ
trợ bởi hầu hết các hệ điều hành mạng cũng như các ngôn ngữ lập trình.
- Cụ thể, trong mô hình client – server thì lời gọi thủ tục từ xa được thực hiện qua các bước sau:
Client program – Client stub – Client OS – Server OS – Server stub – Server procedure
+ Tiến trình muốn thực hiện thủ tục ở máy client sẽ gọi client stub.
+ Client stub sẽ tạo một bản tin và có lời gọi đến hệ điều hành của client đó.
+ Hệ điều hành của máy client sẽ gửi bản tin đó tới hệ điều hành của máy server.
+ Hệ điều hành của server sẽ gửi bản tin tới server stub.
+ Server stub lấy các thông tin của gói tin và gọi server tương ứng.
+ Server thực hiện công việc được yêu cầu và trả kết quả về cho server stub.
+ Server stub đóng gói kết quả đó vào bản tin rồi gọi hệ điều hành của server đó.
+ Hệ điều hành của máy server này sẽ gửi bản tin kết quả đó hệ điều hành của máy client.
+ Hệ điều hành của máy client sẽ gửi bản tin cho client stub.
+ Client stub sẽ mở gói tin kết quả và trả về cho client.
Trong đó, client stub và server là các thành phần nhằm giảm nhẹ công việc cho client và
server, làm cho hệ thống hoạt động một cách trong suốt hơn.
- Chi tiết các thao tác RPC:
+ Đóng gói các tham số (parameter marshaling): Client stub sẽ sắp xếp các tham số và đưa
vào hàng đợi để chuẩn bị truyền đi. Các tham số này giúp cho server hiểu được công việc mình
cần thực hiện tương ứng là gì để xác định lời gọi đến thủ tục thích hợp.
+ Truyền tham số: có hai cách truyền tham số từ client
Truyền tham biến: các tham số được truyền đi là con trỏ hay biến chứa địa chỉ của nơi
chưa giá trị thực của chúng. Các thủ tục được gọi sẽ căn cứ vào địa chỉ này để tham chiếu
đến giá trị khi tính toán. Khi giá trị này bị thay đổi trong khi thực hiện thủ tục thì sẽ được
thông báo cho client và các lần gọi sau sẽ dùng giá trị mới đó.
Truyền tham trị: các tham số được truyền đi là các giá trị cụ thể. Các thủ tục được gọi đến
sẽ coi các tham số này như là các biến được khởi tạo cục bộ, có thể thay đổi giá trị nhưng
không ảnh hưởng tới giá trị gốc trong lần gọi sau. Vấn đề đặt ra khi truyền tham trị là yêu
cầu giữa các máy phải có sự đồng nhất về việc biểu diễn dữ liệu và các kiểu dữ liệu.
- Các mô hình RPC mở rộng: truyền thông không đồng bộ (RPC dị bộ), RPC đồng bộ trễ, RPC
đơn tuyến.
7
Nguyễn Đức Hòa – HTTT 14, MTA
- RMI là một sự cài đặt cơ chế RPC trong ngôn ngữ lập trình hướng đối tượng Java.
* Truyền thông hướng thông điệp:
- Thông điệp là một tập các đối tượng dữ liệu được định kiểu nhằm dễ dàng chuyển đổi đối tượng
dữ liệu trong hệ thống.
- Thông điệp gồm: đầu thông điệp (chứa thông tin điều khiển phụ thuộc hệ thống) và thân thông
điệp (chứa các đối tượng dữ liệu)
- Các loại truyền thông hướng thông điệp:
+ Truyền thông cơ bản:
Truyền thông kiên trì: Khi 1 trạm muốn gửi bản tin trên mạng, nó sẽ gửi bản tin đến
interface của máy mình. Qua bộ nhớ đệm, bản tin truyền đi trong mạng cục bộ để đến
mail server cục bộ. Mail server lưu bản tin vào bộ nhớ đệm, xác định địa chỉ trạm đích rồi
gửi tới server cục bộ của trạm đích tương ứng (có thể qua nhiều mail server trung gian).
Tới mail server cuối, bản tin sẽ được lưu lại và gửi cho trạm đích tương ứng.
VD: thư điện tử
Truyền thông nhất thời: Bản tin gửi đi chỉ được lưu lại trong phiên trao đổi đó. Khi phiên
trao đổi đã hoàn thành hoặc kết nối bị hủy thì bản tin cũng bị hủy trên các server. Vì vậy,
nếu 1 server trung gain không thể chuyển tiếp bản tin thì bản tin sẽ bị hủy bỏ.
VD:
Truyền thông đồng bộ: Khi trạm gửi gửi đi 1 bản tin thì nó sẽ ở trạng thái khóa cho đến
khi nhận được thông báo bản tin đó đã đến đích thành công.
VD:
Truyền thông dị bộ: Khi trạm gửi gửi đi bản tin, nó sẽ tiếp tục thực hiện công việc của
mình. Bản tin được lưu lại trên bộ nhớ đệm của trạm gửi hoặc server cục bộ.
VD:
+ Truyền thông hỗn hợp:
Truyền thông dị bộ, kiên trì: Bản tin được lưu trữ lâu dài ở bộ nhớ đệm của trạm gửi hoặc
trên server truyền thông đầu tiên mà bản tin tới đó.
VD: hệ thống thư điện tử
Truyền thông đồng bộ, kiên trì: Bản tin được lưu trữ lâu dài ở trạm nhận. Trạm gửi sẽ ở
trạng thái khóa cho đến khi bản tin được lưu trữ ở bộ nhớ đệm trạm nhận.
VD:
Truyền thông dị bộ, nhất thời: Sau khi bản tin được gửi, trạm gửi sẽ tiếp tục thực hiện
công việc của mình. Khi bản tin đến trạm nhận mà trạm nhận không làm việc thì quá trình
truyền thống sẽ bị hủy bỏ.
8
Nguyễn Đức Hòa – HTTT 14, MTA
VD:
Truyền thông đồng bộ, nhất thời: Bản tin không được lưu trữ lâu dài. Khi gửi đi bản tin,
trạm gửi sẽ chờ nhận thông báo đã nhận thành công từ trạm nhận sau đó mới thực hiện
tiếp công việc của mình.
VD:
* Truyền thông hướng dòng:
- Medium: chỉ các phương tiện dùng để truyền thông tin như các thiết bị lưu trữ, đường truyền, các
phương tiện hiển thị, …
- Data stream: là chuỗi các đơn vị dữ liệu.
- Dòng đơn (simple stream) là dòng chỉ gồm một chuỗi đơn vị dữ liệu.
- Dòng phức (complex stream): bao gồm nhiều chuỗi đơn vị dữ liệu khác nhau. Mỗi chuỗi này
được gọi là một dòng con (sub stream).
- Với data stream, thời gian là yếu tố quyết định. Để kiểm soát thời gian, có 3 phương thức truyền:
+ Truyền dị bộ: các mục dữ liệu truyền tuần tự và không có ràng buộc thời gian truyền.
+ Truyến đồng bộ: quy định trước độ trễ tối đa cho mỗi đơn vị dữ liệu trong data stream.
+ Truyền đẳng thời: quy định độ trễ lớn nhất và nhỏ nhất cho mỗi đơn vị dữ liệu trong data
stream. Cách truyền này đóng một vai trò quan trọng trong việc trình diễn audio và video.
- Có 2 loại đồng bộ các dòng:
+ Đồng bộ đơn giản: thực hiện đồng bộ giữa dòng trễ và dòng liên tục. Ví dụ trong việc trình
diễn slide có kèm âm thanh. Dòng hình ảnh slide là dòng trễ còn dòng âm thanh là dòng liên tục,
phải đồng bộ hai dòng này để thu được kết quả trình diễn như ý muốn.
+ Đồng bộ phức tap: là đồng bộ giữa các dòng dữ liệu liên tục. Ví dụ trong việc xem phim
trực tuyến, cả dòng âm thanh và dòng hình ảnh đều là các dòng liên tục cần phải được đồng bộ.
- Có hai kĩ thuật đồng bộ:
+ Kĩ thuật đơn giản: dựa trên việc đồng bộ các thao tác đọc ghi trên các dòng dữ liệu sao cho
phù hợp với các yêu cầu thời gian cho trước và các ràng buộc về đồng bộ.
+ Kĩ thuật phức tạp: đồng bộ trên môi trường mạng dựa trên cả việc đồng bộ giữa bên nhận
và bên gửi.
- Trong truyền thông hướng dòng đồng bộ hóa các dòng có ý nghĩa quan trọng để đảm bảo
đồng bộ giữa các đơn vị dữ liệu, ảnh hưởng trực tiếp đến tính đúng đắn của thông tin truyền đi.
Ví dụ như xem phim trực tuyến, âm thanh và hình ảnh đều là dòng liên tục. Cần phải đồng bộ
2 dòng này để thu được kết quả là bộ phim chiếu đúng.
Câu 8
9
Nguyễn Đức Hòa – HTTT 14, MTA
- Tiến trình là 1 chương trình đang trong quá trình thực thi bởi 1 trong các bộ xử lý ảo của hệ điều
hành.
- Để thực hiện, tiến trình cần: được HĐH cung cấp đầy đủ tài nguyên hệ thống cần thiết (không
gian, giờ gian) và được CPU tiếp nhận và thực hiện.
- Tiến trình gồm 3 thành phần: code (lệnh), data (dữ liệu), stack (thông tin tạm thời)
- Phân loại:
+ Tiến trình tuần tự: điểm khởi tạo của tiến trình này là điểm kết thúc của tiến trình trước đó.
+ Tiến trình song song: điểm khởi có thể nằm ở thân của các tiến trình khác.
- Trạng thái của tiến trình tại một thời điểm xác định bởi hoạt động của tiến trình tại thời điểm đó.
Trong quá trình sống, tiến trình có thể thay đổi trạng thái do các nguyên nhân:
+ Phải dừng hoạt động do hết thời gian
+ Đợi một thao tác I/O hoàn tất
+ Phải chờ một sự kiện xảy ra
- Tại một thời điểm, tiến trình có thể có một trong các trạng thái:
+ Khởi tạo (New): tiến trình vừa được tạo lập;
+ Sẵn sàng (Ready): tiến trình đã được cấp phát đầy đủ tài nguyên (trừ processor) và đang đợi
trong hàng đợi (ready queue) chờ chiếm dụng CPU để tiếp tục;
+ Thực thi (Running): tiến trình đang được xử lý bởi CPU (đang chiếm dụng CPU);
+ Bị chặn - đợi (Blocked, Waiting): tiến trình tạm dừng và chờ vì thiếu tài nguyên hay chờ 1
sự kiện nào đó;
+ Đình chỉ, treo (Suspend): là trạng thái của một tiến trình khi nó đang được lưu trữ trên bộ
nhớ phụ.
- Về bản chất, việc thực hiện một tiến trình là việc điều khiển processor để nó thực hiện xen kẽ các
chỉ bên trong tiến trình. Điều này có thể thực hiện bằng cách thay đổi hợp lý giá trị của con trỏ
lệnh (vd: cặp thanh ghi CS:IP) để con trỏ lệnh chỉ đến các chỉ thị cần thực hiện trong các tiến trình.
- Mỗi tiến trình có 1 không gian địa chỉ và chỉ có 1 dòng xử lý. Để có nhiều dòng xử lý công việc
có thể cùng chia sẻ 1 không gian địa chỉ, và các dòng xử lý hoạt động song song với nhau, cần có
1 cơ chế xử lý được gọi là tiểu trình (luồng)
Câu 9+10
- Tiểu trình (luồng) là 1 đơn vị xử lỹ cơ bản trong hệ thống. Một hay nhiều luồng có thể tồn tại
cùng trong một tiến trình và cùng sử dụng tài nguyên.
- Mỗi luồng xử lý tuần tự đoạn code của nó, sở hữu 1 con trỏ lệnh, tập các thanh ghi và một vùng
nhớ stack riêng.
10
Nguyễn Đức Hòa – HTTT 14, MTA
- Trên một bộ vi xử lý hỗ trợ đa luồng, processor chuyển đổi và xử lý giữa các luồng. Các luồng
được thực hiện luân phiên nhau, không có luồng nào chiếm ưu thế trong CPU. Sự chuyển đổi này
xảy ra thường xuyên đủ cho người dùng cảm nhận việc thực hiện các luồng hoặc nhiệm vụ này
như là liên tục. Trong các hệ thống đa bộ vi xử lý hoặc đa lõi, các luồng hoặc nhiệm vụ thực sự có
thể được thực hiện đồng thời thực sự với việc mỗi bộ xử lý hoặc mỗi lõi sẽ xử lý một luồng hoặc
công việc riêng biệt.
- Ý nghĩa: Kỹ thuật đa luồng 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.
+ Đáp ứng nhanh: cho phép chương trình tiếp tục thực hiện thậm chí khi một bộ phận của nó
bị khóa hoặc đang thực hiện một hoạt động dài.
+ Chia sẻ tài nguyên: cho phép một ứng dụng có một số luồng khác nhau hoạt động trong
cùng một không gian địa chỉ.
+ Thực hiện trong kiến trúc multiprocessor: lợi ích của đa luồng tăng lên trong kiến trúc
multiprocessor, vì các luồng có thể chạy song song trên các processor.
+ Kinh tế: tạo và chuyển ngữ cảnh luồng kinh tế hơn so với tiến trình. Sử dụng CPU hiệu quả
hơn
* Mô hình đa luồng phía client (Multithreaded Client):
- Hệ phân tán hoạt động trong một mạng lớn cần phải che dấu số lần truyền thông các thông điệp
nội bộ.
- Độ trễ trong mạng lớn có thể từ vài trăm ms đến vài s. Thông thường để ẩn độ trễ trong kết nối là
để thiết lập kết nối và ngay lập tức thực thi 1 việc khác
11
Nguyễn Đức Hòa – HTTT 14, MTA
- Một ví dụ điển hình là hoạt động của trình duyệt web: bao gồm tệp tin HTML, hình ảnh, video,
biểu tượng… Để lấy từng phần của tài liệu trình duyệt sẽ thiết lập 1 kết nói TCP/IP đọc dữ liệu gửi
đến và chuyển chúng đến phần hiển thị. Thiết lập kết nối cũng như đọc dữ liệu sẽ ngăn cản các
hoạt động khác. Khi xử lý các kết nối lâu ta có những bất lợi đó là thời gian hoàn thành tác vụ này
tương đối dài. Một trình duyệt web thường bắt đầu với các trang HTML và sau đó là hiển thị nó.
Để ẩn trễ tới mức tốt nhất, một số trình duyệt bắt đầu hiển thị các dữ liệu trong khi vẫn nhận các
thông tin mới. Như vậy người dung sẽ không phải đợi đến khi mà toàn trang được tải xong thì mới
xem được nội dung của trang.
- Viêc sử dụng multithreaded client, conection có thể được thiết lập tới các bản copy khác nhau
của webserver, cho phép dữ liệu truyền song song.
- Trong thực tế, trình duyệt web thực hiện một số nhiệm vụ đồng thời, ngay khi mà trang chính
HTML được tải xuống, các luồng riêng biệt được bật để quản lý các phần khác. Mỗi luồng được
thiết lập riếng với máy chủ để lấy dữ liệu.Như vậy, khi ta dùng một máy chủ và ở thời điểm có rất
nhiều máy cùng gửi yêu cầu đến máy chủ đó thì máy chủ này sẽ phải chịu tải rất lớn và trở nên
chậm chạp.Tuy nhiên trong trường hợp này, máy chủ web được nhân rộng trên nhiều máy tính nơi
mà mỗi máy chủ cung cấp một cách chính xác cùng một bộ tài liệu. Như vậy khi 1 yêu cầu được
gửi đến máy chủ thì yêu cầu này sẽ được chuyển đến 1 trong các máy chủ đó theo cơ chế cân bằng
tải. Tuy nhiên việc này chỉ thực sự có hiệu quả khi mà trình duyệt của máy khách có thể xử lý
đồng thời các tài liệu web được gửi đến.
* Mô hình đa luồng phía client (Multithreaded Client):
- Mặc dù những lợi ích quan trọng của việc sử dụng đa luồng trên ứng dụng phía client nhưng ứng
dụng đa luồng trong hệ phân tán lại nằm bên phía máy chủ.
- Đa luồng không chỉ làm đơn giản mã trên máy chủ mà còn làm cho việc phát triển máy chủ khai
thác xử lý song song đạt được hiệu năng cao
- Trong thực tế, việc tổ chức một tập tin cho máy chủ mà thông thường phải đợi khoảng một thời
gian để đọc đĩa. Máy chủ tệp tin thường đợi các yêu cầu từ phía client và xử lý trả về kết quả.Tuy
nhiên thì có thể thực hiện việc bằng cách khác, sẽ có một luồng trên đóng vai trò là luồng điều
phối chuyên nhận các yêu cầu từ phía client và kiểm tra xem các luồng khác ở trên server luồng
nào là đang ở trạng thái chờ và chuyển yêu cầu của client cho luồng đó. Khi luồng nhận yêu cầu từ
phía client thì nó cũng chuyển sang trạng thái bị block và chỉ làm việc với các thao tác liên quan
đến tệp tin và chỉ chuyển lại trạng thái chờ khi xử lý xong yêu cầu của client. Như vậy rõ ràng là
một lợi thế bởi nếu tất cả tài nguyên CPU chỉ tập trung cho việc xử lý tệp tin (1 luồng) thì mỗi tệp
tin có thể xử lý nhanh nhưng đối với những sử lý lớn thì nó vẫn cần phải có thời gian giải quyết và
các yêu cầu tiếp theo từ phía client (dù rất nhỏ) cũng phải xếp hàng và chờ đợi.
12
Nguyễn Đức Hòa – HTTT 14, MTA
Câu 11+36
- Di trú mã: là quá trình di chuyển các chương trình hoặc đoạn mã chương trình từ máy này sang
máy khác. 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.
- Lý do cần phải di trú mã:
+ Hiệu suất:
Cải thiện hiệu suất hệ thống khi tiến trình được di chuyển từ máy đang ở mức độ xử lý
thấp đến cao nên sẽ giảm tài nguyên, thông qua cân bằng tải giữa các server trong hệ
thông.
Tăng hiệu quả sử dụng tài nguyên, qua đó, tăng tính mềm dẻo trong thực thi hệ phân tán
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
Có tính chịu lỗi cao.
+ Tính linh hoạt:
Cấu hình linh động.
Client không cần cài đặt trước phần mềm.
- 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ác mô hình di trú mã:
+ Mô hình di động yếu (weak mobility): chỉ chuyển code segment 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.
+ Mô hình di động mạnh (strong mobility): chuyển luôn cả 3 thành phần. Đặc điểm này của
mô hình này là tiến trình đang chạy có thể được dừng, sau đó di chuyển đến máy khác và rồi được
thiết lập lại trạng thái đã bị dừng trước đó.
Mô hình mã di trú di động mạnh tốt hơn nhiều so với mô hình mã di trú yếu, tuy nhiên sẽ khó
thực hiện hơn.
+ Di trú được khởi tạo từ phía gửi: Di trú được khởi động từ máy mà phần code của tiến trình
được lưu trữ hoặc đang thực hiện
Di trú này hoàn thành khi upload chương trình
13
Nguyễn Đức Hòa – HTTT 14, MTA
+ Di trú được khởi tạo từ phía nhận: Di trú được khởi động từ máy tính cần nhận tiến trình
đang được thực hiện trên máy tính khác.
Di trú này hoàn thành khi download chương trình. Di trú được khởi tạo từ phía nhận thực thi
đơn giản hơn di trú được khởi tạo từ phía gửi.
* Ví dụ ứng dụng di trú mã: Trong trường hợp server chứa lượng cơ sở dữ liệu lớn, và client cần
thực hiện nhiều hoạt động trên csdl này, có thể nên chuyển một phần mã của ứng dụng client sang
server và chỉ gửi kết quả qua mạng, giúp giảm tải đáng kể. Điều này có thể áp dụng tương tự cho
phía client.
Câu 12
- Tên (name): là các dòng bit hoặc các kí tự để dẫn đến các thực thể.
- Thực thể (entity): là tất cả những gì thuộc hệ thống như máy in, ổ cứng, process, host, người
dùng, hòm thư, trang web, …
- Điểm truy cập (acess point): là một loại thực thể đặc biệt trong hệ phân tán, được sử dụng để truy
cập tới các thực thể khác.
- Địa chỉ (address): là một dạng tên gọi đặc biệt của điểm truy cập, gắn liền với thực thể.
- Định danh (identifier): là một kiểu tên đặc biệt thỏa mãn 3 tính chất
+ ID trỏ đến không nhiều hơn một thực thể.
+ Mỗi thực thể không có nhiều hơn 1 ID trỏ đến nó.
+ Không thể sử dụng ID đã sử dụng cho thực thể khác.
* Một số đặc điểm:
- Ý nghĩa của tên gọi: đảm bảo cùng sử dụng tài nguyên, xác định tính duy nhất của thực thể hoặc
đường dẫn tới nơi lưu trữ. Đặc tính quan trọng của việc đặt tên là nó có thể giải được và từ đó có
thể tìm được thực thể.
- Thực thể có thể có nhiều hơn một điểm truy cập do điểm truy cập có thể thay đổi theo thời gian
(VD: địa chỉ IP thay đổi khi di chuyển tới nơi khác).
- Địa chỉ không gắn cứng với thực thể mà phải thông qua điểm truy cập bởi vì trong nhiều trường
hợp nó giúp hệ thống đơn giản và dễ triển khai hơn. VD: khi đổi server chỉ cần điều chỉnh địa chỉ
mà người dùng vẫn quen sử dụng sang server mới thì vẫn đảm bảo hệ thống hoạt động bình
thường.
- Địa chỉ và ID là 2 kiểu tên gọi quan trọng, mỗi loại sử dụng vào 1 mục đích khác nhau.
14
Nguyễn Đức Hòa – HTTT 14, MTA
Câu 13+14+15
- Phân giải tên: là quá trình tìm ra thực thể từ không gian tên.
- Không gian tên: là thực thể được dùng để tổ chức tên trong các hệ thống phân tán.
- Ý nghĩa: Quá trình phân giải tên trả về định danh của 1 node, giúp chúng ta lấy được mọi thông
tin nằm tại node tương ứng với tên.
- Có 2 phương pháp chính để phân giải tên là: phân giải tên tuần tự và phân giải tên đệ quy
* Phân giải tên tuần tự: thực hiện truyền và nhận qua lại giữa các client và các name server ở các
mức khác nhau. Theo cách này thì các server không trao đổi trực tiếp với nhau, mỗi server chỉ
phân giải nhãn tương ứng với lớp để xác định địa chỉ của server tiếp theo, kết quả trả lại cho client
là địa chỉ của name server tiếp theo, và việc liên kết với server tiếp theo là do client đảm nhiệm.
* Phân giải tên đệ quy: mỗi name server sẽ gửi kết quả đến name server tiếp theo mà nó tìm thấy.
Quá trình này được lặp lại cho đến khi hoàn thành phân giải toàn bộ đường dẫn, kết quả cuối cùng
sẽ chuyển đến cho client.
* So sánh:
- Phân giải tên tuần tự:
+ Ưu điểm: giảm tải cho server
15
Nguyễn Đức Hòa – HTTT 14, MTA
+ Nhược điểm: Nhiệm vụ dồn cho client nhiều hơn.
=> Nên áp dụng cho các hệ thống có nhiều yêu cầu từ client để giảm tải cho server
- Phân giải tên đệ quy:
+ Ưu điểm: Chi phí giao tiếp thấp. Bộ nhớ đệm được dùng hiệu quả.
+ Nhược điểm: nhiệm vụ dồn cho server nhiều nên có thể gây quá tải đối với bên server.
=> Được dùng trong các hệ thống có ít yêu cầu từ client (các hệ thống nội bộ công ty, tập
đoàn, …)
Câu 16+17+18
- Mỗi thực thể đều có tên và địa chỉ tương ứng, việc ánh xạ từ tên đến địa chỉ của thực thể được
thực hiện theo hai phương pháp:
+ Theo mô hình một lớp: chỉ có một mức ánh xạ giữa tên và thực thể. Mỗi lần thực thể thay
đổi vị trí, ánh xạ cần phải được thay đổi theo.
+ Theo mô hình hai lớp: phân biệt tên và địa chỉ nhờ Entity ID, gồm hai quá trình: Quá trình
tìm Entity ID tương ứng từ tên của thực thể được thực hiện bằng dịch vụ tên (naming service) và
Quá trình xác định vị trí của thực thể từ ID được thực hiện bởi dịch vụ định vị (location service).
- Dịch vụ tên sử dụng để đặt tên cho các thực thể, thông thường thì những thực thể này có địa
chỉ tương đối ổn định. Tuy nhiên, nếu các thực thể này thay đổi địa chỉ thì phải áp dụng cách
tổ chức tên và phân giải tên đặc biệt để tăng hiệu quả.
- Các giải pháp định vị thực thể:
+ Truyền thông tin nhóm rộng rãi (broadcasting and multicasting)
+ Chuyển con trỏ (forwarding pointer)
+ Phương pháp dựa trên điểm gốc (home-based approaches)
+ Phương pháp dựa trên cây quản lý (hierarchical approaches)
* Phương pháp truyền nhóm thông tin rộng rãi:
- Định vị thực thể bằng cách gửi ID cần tìm tới tất cả các máy trong hệ thống để kiểm tra xem có
đúng là thực thể cần liên hệ hay không. Máy nào có thực thể đó thì gửi lại một thông báo chứa địa
chỉ của access point.
- Nhược điểm: càng mở rộng mạng càng kém hiệu quả vì các máy trong mạng phải tạm ngừng các
process hiện tải để kiểm tra và trả lời những vấn đề không liên quan đến nó.
* Phương pháp chuyển con trỏ:
16
Nguyễn Đức Hòa – HTTT 14, MTA
- Nguyên lý hoạt động: Nếu thực thể chuyển từ vị trí A sang vị trí B thì con trỏ lưu địa chỉ mới của
thực thể được lưu trữ ở A. Như vậy, client có thể tìm được thực thể bằng cách duyệt qua một loạt
các địa chỉ mà nó đã từng chuyển trong quá khứ.
- Phương pháp này ít được sử dụng do một số nhược điểm:
+ Nếu thực thể luôn luôn thay đổi thì phương pháp không hiệu quả, vì nó phải duyệt qua rất
nhiều địa chỉ khác nhau.
+ Các thực thể trung gian phải lưu trữ con trỏ rất lâu khi thực thể vẫn còn tồn tại.
+ Khi thông tin về địa chỉ bị mất trên một host trung gian thì nó không thể tìm thấy nữa.
* Phương pháp dựa trên điểm gốc:
- Sử dụng 1 điểm gốc (home location) để theo dõi địa chỉ hiện tại của thực thể. Do vậy việc bảo vệ
điểm gốc rất quan trọng, bởi nếu điểm gốc có vấn đề thì tất cả các thực thể do nó quản lý sẽ không
thể tìm thấy.
- Mọi liên hệ với host đều thông qua điểm gốc này. Khi thực thể muốn thay đổi vị trí thì phải đăng
ký tại điểm gốc.
- Quá trình làm việc với thực thể gồm 4 bước:
+ B1: Gửi thông tin đến điểm gốc.
+ B2: Điểm gốc gửi địa chỉ thực thể
+ B3: Chuyển thông tin đến thực thể
+ B4: Chuyển các thông tin tiếp theo đến thực thể
Câu 19+20+21+23
- Đồng bộ hóa: là quá trình trao đổi và đồng nhất thông tin giữa hai thực thể theo thời gian.
- Sự khác nhau về giá trị thời gian được gọi là sự sai lệch của đồng hồ và kết quả sẽ dẫn đến những
sai lệch trong những tính toán có liên quan đến thời gian thực. Trong một số hệ thống thời gian
thực, thời gian đồng hồ là rất quan trọng, mỗi thành viên của hệ thống đều có đồng hồ đo xác định
thời gian. Vì vậy, việc đồng bộ các đồng hồ này là rất cần thiết để đảm bảo các tiến trình làm việc
đúng tuần tự, tránh xảy ra xung đột gây mất mát dữ liệu.
* Đồng bộ hóa đồng hồ vật lý:
- Ý nghĩa: Việc đồng bộ giữa các đồng hồ vật lý cần phải dựa vào 1 thời gian chuẩn có giá trị toàn
cầu UTC (universal coordinated time - thời gian phối hợp toàn cầu).
- Nếu các máy tính có bộ thu thời gian (wwv receiver) thì việc đồng bộ hóa sẽ được thực hiện dễ
dàng vì tất cả đều cùng đồng bộ với giờ chuẩn quốc tế UTC. Tuy nhiên, khi không có bộ thu thời
17
Nguyễn Đức Hòa – HTTT 14, MTA
gian thì việc đồng bộ được thực hiện bằng các giải thuật đồng bộ hóa đồng hồ vật lý. Có 3 giải
thuật phổ biến là: giải thuật Cristian, giải thuật Berkeley và giải thuật trung bình
- Giải thuật Cristian: Giả sử trong hệ phân tán có một máy có WWV (gọi là Time server) và chúng
ta sẽ tiến hành đồng bộ các máy khác với máy này. Trong khoảng thời gian nhất định mỗi máy sẽ
gửi một thông điệp đến máy chủ hỏi thời gian hiện tại. Máy chủ nhanh sẽ phản hồi bằng một thông
điệp mang giá trị thời gian C(utc). Bên gửi nhận được phản hồi nó sẽ tính được thời gian chênh
lệch theo công thức và thiết lập lại clock thành C(uct).
Giải thuật này có 2 vấn đề :
+ Một là nếu clock bên gửi chạy nhanh thì lúc này C(uct) sẽ nhỏ hơn thời gian hiên tại C của
bên gửi. Có thể giải quyết bằng cách thay đổi nhịp ngắt lại nhanh hơn hoặc chậm hơn cho đến lúc
khớp nhau.
+ Hai là sự chênh lệch từ lúc C(uct) được gửi cho đến lúc nhận được có thể gây lỗi. Giải
quyết bằng cách ghi nhận khoảng thời gian giữa lúc gửi và nhận.
- Giải thuật Berkeley: Server sẽ chủ động cho các máy khác biết thời gian chuẩn của mình CUTC
sau đó sẽ yêu cầu thông tin về thời gian của các client. Client sẽ trả lời khoảng thời gian chênh
lệch giữa nó và server. Server sẽ tính khoảng thời gian mà các client so với thời gian chuẩn của
server lúc đó và gửi cho các máy khách cách điều chỉnh thời gian cho phù hợp.
- Giải thuật trung bình: Giải thuật này thực hiện chia thời gian thành những khoảng đồng bộ cố
định. Khoảng thời gian I sẽ bắt đầu từ thời điểm (To + i.R) và chạy đến khi To+(i+1)R với To là
thời điểm xác định trước và R là một biến hệ thống. Vào thời điểm bắt đầu của mỗi lần đồng bộ tất
cả các máy của mạng sẽ gửi đi thời gian của mình. Sau khi gửi nó sẽ bắt đầu thu thập thời gian mà
18
Nguyễn Đức Hòa – HTTT 14, MTA
các máy khác gửi đến trong khoảng thời gian S. Sau đó bỏ đi giá trị lớn nhất và nhỏ nhất rồi tính
trung bình của các giá trị thời gian còn lại.
* Đồng bộ hóa đồng hồ logic:
- Trong nhiều trường hợp, giữa các tiến trình không nhất thiết phải phù hợp theo thời gian thực tế
mà chỉ cần khớp với nhau về thời gian. Do đó người ta đưa ra khái niệm đồng hồ logic.
- Tem thời gian: là bằng chứng gắn liền với mốc thời gian để chứng minh rằng một tài liệu được
kiến tạo sau một thời điểm nào đó hoặc trong một khoảng thời gian xác định.
- Để đo thời gian tương ứng với sự kiện x thì ta gán một giá trị C(x) cho sự kiện đó và thỏa mãn
các điều kiện sau:
+ Nếu A->B (A xảy ra trước B) trong cùng một tiến trình thì C(A) < C(B).
+ Nếu A và B biểu diễn tương ứng việc gửi và nhận một thông điệp thì ta có C(A)< C(B)
+ Với mọi sự kiện phân biệt (không có liên quan) thì C(A)<>C(B)
- Giải thuật vector tem thời gian đưa ra một vetor tem thời gian VT(a) gán cho sự kiện a có thuộc
tính là nếu Vtt(a) < VT(b) thì sự kiện là nguyên nhân của b. Luật cập nhật vector:
+ Thiết lập Vi[j] =0 với mọi j,i
+ Sự kiện xảy ra ở Pi là nguyên nhân tăng Vi[i]
+ Pi gắn một timestamp t=V[i] vào mọi thông điệp gửi đi
+ Khi Pi nhận được một thông điệp có t nó sẽ thiết lập Vi[j]=Max(Vi[j] ,t[j]) và tăng Vi[i]
- Ví dụ: giả sử có 2 máy với thời gian logic khác nhau. Khi 1 message được gửi, máy gửi sẽ gửi
tem thời gian của nó cùng với thông điệp. Tại nơi nhận, máy nhận so sánh giữa tem thời gian của
thông điệp với thời gian logic trên máy, nếu thời gian logic trên máy lớn hơn thì đặt thời gian nhận
là thời gian logic trên máy (sự kiện nhận). Nếu ngược lại thì đặt thời gian nhận là thời gian gửi +
gia số (ít nhất là 1) đồng thời đặt lại thời gian nhận và tiếp tục thực hiện công việc.
-> Ý nghĩa: đồng bộ thời gian logic giữa các máy để đảm bảo thứ tự các sự kiện xảy ra.
* Các giải pháp cấp khóa, khóa file và thu hồi khóa trong các hệ thống file phân tán (chỉ xem
xét hệ thống NFS, k có CODA):
Tên đầy đủ là Hệ thống file mạng của Sun Microsystem - thường được gọi tắt là NFS. NFS
ban đầu được phát triển bởi Sun dành cho các máy trạm UNIX, tuy nhiên nó cũng có thể chạy tốt
trên các hệ điều hành khác. Ý tưởng cơ bản của NFS là mỗi file server (máy chủ file) cung cấp 1
khung nhìn đã được chuẩn hóa về hệ thống file cục bộ của nó. Nói cách khác, bất kể hệ thống file
cục bộ được thi hành như thế nào, thì mỗi NFS server (máy chủ hệ thống file mạng) hỗ trợ cùng
mô hình. Mô hình này cùng với 1 giao thức truyền thông cho phép các client truy cập đến các file
lưu trữ trên server. Hướng tiếp cận này cho phép 1 tập không thuần nhất các tiến trình, có khả
năng chạy trên các máy và các hệ điều hành khác nhau, để cùng chia sẻ 1 hệ thống file chung.
19
Nguyễn Đức Hòa – HTTT 14, MTA
Trong NFS, việc khoá file được điều khiển bởi 1 giao thức riêng biệt, và được thực thi bởi 1
bộ quản lý khóa (lock manager). Tuy nhiên, vì nhiều lý do khác nhau, việc khóa file sử dụng giao
thức khóa NFS không được phổ biến. Ở trong phiên bản 4, việc khóa file đã được tích hợp vào
trong giao thức truy cập file NFS. Cách tiếp cận này làm mọi việc đơn giản hơn cho các client khi
khóa file. Tuy nhiên, việc khóa file trong 1 hệ thống file phân tán cũng phức tạp bởi các client và
server có thể lỗi trong khi đó các khóa vẫn được giữ lại. Khi đó, việc khôi phục lại 1 cách thích
hợp sẽ trở nên quan trọng để đảm bảo tính nhất quán của các file được chia sẻ. Bây giờ ta hãy xem
xét cụ thể việc khóa file trong NFS phiên bản 4. Khóa file trong phiên bản 4 này khá đơn giản, chỉ
cần 4 thao tác có liên quan đến việc khóa file này
Thao tác
Lock
Lockt
Locku
Renew
Mô tả
Tạo ra 1 khóa cho 1 dãy
các byte
Kiểm tra xem khóa xung
đột được cấp hay không
Xóa 1 khóa khỏi 1 dãy
các byte
Hồi phục (làm mới lại)
thời gian cấp cho
khóa
Thao tác lock (khóa) được dùng để yêu cầu 1 khóa đọc (read lock) hoặc khóa ghi (write lock)
trên 1 dãy liên tiếp các byte trong file.
ƒ Thao tác lockt được dùng để kiểm tra xem thử có khóa xung đột nào tồn tại hay không. Ví dụ
như, 1 client có thể kiểm tra xem có khóa đọc nào đã được cấp trên 1 dãy các byte xác định ở
trong file hay không, trước khi nó yêu cầu 1 khóa ghi cho các byte đó. Trong trường hợp xung đột,
nó sẽ cho biết chính xác nguyên nhân của việc xung đột và cả dãy byte mà xung đột xảy ra trên đó
nữa.
ƒ Để xoá 1 khóa khỏi 1 file ta dùng thao tác locku.
ƒ Các khóa đều được cấp cho 1 thời gian xác định (thời gian này được quyết định bởi server). Trừ
phi 1 client hồi phục lại (làm mới lại - renew) khoảng thời gian đó trên các khóa đã được cấp, còn
nếu không thì server sẽ tự động huỷ các khóa đó đi.Bên cạnh các thao tác này, cũng còn có 1 cách
nữa để khóa 1 file, đó là “chia sẻ chỗ đặt trước” (share reservation). Nó được dùng để thực thi
NFS trên các hệ thống dựa trên Windows. Khi 1 client mở 1 file, nó sẽ xác định, chỉ ra kiểu truy
cập mà nó yêu cầu (cụ thể là READ, WRITE hoặc BOTH), và kiểu truy cập mà server sẽ từ chối
20
Nguyễn Đức Hòa – HTTT 14, MTA
các client khác (NONE, READ, WRITE hoặc BOTH). Để biết chính xác điều gì sẽ xảy ra khi 1
client mới 1 file , mà file đó đã được mở thành công bởi 1 client khác, ta hãy xem (H.13) sau:
Trạng thái từ chối file hiện hành
Yêu
cầu
truy cập
READ
WRITE
BOTH
NONE
Successful
S
S
Trạng thái từ chối file được yêu cầu
Trạng thái
NONE
truy
cập READ
S
hiện hành
WRITE
S
BOTH
S
READ
Faild
S
F
WRITE
S
F
F
BOTH
F
F
F
READ
F
S
F
WRITE
S
F
F
BOTH
F
F
F
Câu 22
- Khi tiến trình điều phối gặp lỗi thì sẽ phải có quá trình bầu chọn để chọn ra một tiến trình khác
làm điều phối thay cho nó. Có hai giải thuật bầu chọn hay được sử dụng là: giải thuật áp đảo và
giải thuật vòng.
* Giải thuật áp đảo (bully algorithm):
- Giả thiết: Mỗi một tiến trình đều có một ID duy nhất và có thể biết được số ID và địa chỉ của tất
cả các tiến trình khác trong hệ thống. Chọn một tiến trình có ID cao nhất làm khóa. Tiến trình sẽ
khởi động việc bầu chọn nếu như nó khôi phục lại sau quá trình xảy ra lỗi hoặc tiến trình điều phối
bị trục trặc.
- Các bước của giải thuật:
1. P gửi thông điệp đến tất cả các tiến trình có ID cao hơn
2. Nếu không có tiến trình nào phản hồi thì P sẽ trở thành tiến trình điều phối
3. Nếu có một tiến trình có ID cao hơn phản hồi thì nó sẽ đảm nhiệm vai trò điều phối.
* Giải thuật vòng (ring algorithm):
- Giả thiết: Các tiến trình có một ID duy nhất và được sắp xếp trên 1 vòng tròn logic. Mỗi một tiến
trình chỉ có thể nhận biết được tiến trình bên cạnh mình.
- Các bước của giải thuật:
1. Một tiến trình bắt đầu gửi thông điệp tới các nút còn tồn tại gần nhất, quá trình gửi theo 1
hướng nhất định. Thăm dò liên tiếp trên vòng cho đến khi tìm được 1 nút còn tồn tại.
21
Nguyễn Đức Hòa – HTTT 14, MTA
2. Mỗi một tiến trình sẽ gắn ID của mình vào thông điệp gửi.
3. Cuối cùng sẽ chọn ra 1 tiến trình có ID cao nhất trong số các tiến trình còn hoạt động và
gửi thông điệp điều phối cho tiến trình đó.
Câu 24
- Một vấn đề quan trọng trong hệ thống phân tán là nhân bản dữ liệu. Dữ liệu thường được nhân
bản nhằm mục tiêu tăng cường tính ổn định và tăng hiệu quả của hệ thống. Vấn đề đặt ra là việc
đảm bảo được tính nhất quán giữa các bản sao.
* Nhân bản:
- Lý do nhân bản dữ liệu:
+ Nâng cao tính ổn định của hệ thống: Nếu một bản sao bị sự cố, hệ thống có chuyển sang
tiếp tục làm việc với một bản sao khác. Có nhiều bản sao giúp bảo vệ chống được việc dữ liệu bị
hư hỏng.
+ Nâng cao hiệu năng của hệ thống: Nâng cao hiệu năng bằng cách nhân bản dữ liệu trên
nhiều máy chủ và sau đó phân tán tải truy cập đến các máy chủ chứa bản sao của dữ liệu, từ đó
tăng tính sẵn sàng sử dụng tài nguyên.
- Một số vấn đề cần lưu ý khi nhân bản dữ liệu
+ Băng thông mạng: việc cập nhật, đồng bộ dữ liệu giữa các bản sao làm cho băng thông
mạng bị tiêu hao nhiều hơn.
+ Tính nhất quán dữ liệu: việc đồng bộ, đảm bảo tính nhất quán dữ liệu trở nên khó khăn.
* Nhất quán:
- Để đảm bảo tính nhất quán dữ liệu, khi một bản sao được cập nhật, tất cả các bản sao khác phải
được cập nhật theo.
- Có 2 nhóm mô hình nhất quán: lấy dữ liệu làm trung, lấy client làm trung tâm
- Mô hình nhất quán lấy dữ liệu làm trung tâm:
+ Trong mô hình này, dữ liệu có thể được phân tán vật lý trên nhiều máy khác nhau. Cụ thể,
mỗi tiến trình truy cập dữ liệu từ kho dữ liệu đều được giả định là có một bản sao cục bộ của toàn
bộ kho dữ liệu. Thao tác ghi dữ liệu phải được lan truyền tới tất cả các bản sao.
+ Mô hình nhất quán về cơ bản là sự ràng buộc giữa các tiến trình với kho dữ liệu. Nếu các
tiến trình tuân theo một quy tắc nhất định thì kho dữ liệu sẽ đảm bảo hoạt động chính xác
+ Thông thường, một tiến trình thực hiện thao tác đọc trên một đối tượng dữ liệu đều mong
muốn giá trị trả về sẽ là kết quả của thao tác ghi cuối cùng trên đối tượng dữ liệu đó
+ Nếu không đồng bộ ở mức toàn cục, rất khó để xác định thao tác ghi nào là cuối cùng
+ Mỗi mô hình đều giới hạn một cách hiệu quả giá trị trả về của thao tác đọc dữ liệu
+ Những mô hình dễ sử dụng thường đem lại kết quả không tốt bằng các mô hình phức tạp.
22
Nguyễn Đức Hòa – HTTT 14, MTA
+ Một số mô hình nhất quán lấy dữ liệu làm trung tâm: mô hình nhất quán liên tục, mô hình
nhất quán quần tự, mô hình nhất quán nhân quả
- Các mô hình nhất quán lấy client làm trung tâm:
+ Duy trì tính nhất quán tuần tự để kiểm soát các hoạt động đồng thời đều là cần thiết.
+ Trong một số kho dữ liệu đặc biệt mà không diễn ra các hoạt động cập nhật đồng thời, các
mô hình thống nhất của client làm trung tâm có thể đối phó với sự thiếu nhất quán bằng các cách ít
tốn chi phí.
+ Một số mô hình nhất quán lấy client làm trung tâm: mô hình nhất quán cuối cùng, mô hình
nhất quán đọc đơn điệu, mô hình nhất quán ghi đơn điệu, mô hình nhất quán đọc kết quả ghi, mô
hình nhất quán ghi theo sau đọc
- Không có giải pháp hoàn thiện cho việc nhân bản dữ liệu. Không có một cách chung nhất để giải
quyết vẫn đề nhất quán dữ liệu.
Câu 25
- Giao thức kéo và đẩy được sử dụng để lan truyền cập nhật đến các bản sao.
+ Giao thức đẩy cập nhật: Là giao thức do server khởi tạo, trong giao thức này các cập nhật
được lan truyền mỗi khi có một thay đổi xảy ra mà không cần các server khác yêu cầu (bị động).
Giao thức đẩy hoạt động hiệu quả trong các hệ thống có tỷ lệ đọc/cập nhật ở các bản sao tương đối
lớn (đọc nhiều, ghi ít). Bên cạnh đó, giao thức đẩy cập nhật cũng thích hợp với các hệ thống có
yêu cầu cai về mức độ nhất quán giữa các bản sao. VD: web báo
+ Giao thức kéo cập nhật: Là giao thức do server hoặc client khởi tạo khi muốn được cập
nhật (chủ động). Giao thức này hoạt động hiệu quả trong các hệ thống có tỷ lệ đọc/cập nhật thấp
(đọc ít, ghi nhiều). Giao thức này thường được sử dụng bởi cache máy client. VD: đặt vé online
Câu 26
- Có 3 loại bản sao:
+ Bản sao thường trực
+ Bản sao khởi tạo bởi server: các bản sao này được sử dụng để làm tăng hiệu năng. Các bản
sao này được xếp đặt động dựa vào yêu cầu của server khác. Một ví dụ điển hình là chúng được
các công ty web hosting nhận được yêu cầu từ một vị trí xa, họ sẽ tạo ra một bản sao tạm thời ở
vùng mà yêu cầu đến.
+ Bản sao khởi tạo bởi client: các bản sao này được tạo ra từ yêu cầu của client, chẳng hạn
như: việc cache dữ liệu của một trình duyệt. Chúng được xếp đặt động dựa vào yêu cầu của client.
Bộ nhớ đệm của máy khách được sử dụng để tăng thời gian truy cập dữ liệu. Thông thường, khi
23
Nguyễn Đức Hòa – HTTT 14, MTA
máy khách muốn truy cập một số dữ liệu náo đó có kết nối tới bản sao gần nhất của dữ liệu đó và
lấy dữ liệu nó cần về để đọc và lưu trữ dữ liệu nó mới thay đổi. nếu các thao tác đều là đọc dữ liệu
thì hiệu năng có thể tăng lên nhờ để máy trạ lưu trữ dữ liệu trong bộ nhớ tạm. Các dữ liệu này
được giữ trong bộ nhớ tạm trong một thời gian nhất định nào đó. Thông thường bộ nhớ tạm nằm
ngay trên máy client.
Câu 27
- Sao chép là kĩ thuật phổ biến, là chìa khóa cho hiệu quả của các hệ thống phân tán trong việc nó
có thể cung cấp hiệu suất tăng cường, tính sẵn sàng cao và khả năng chịu lỗi. VD: các máy chủ của
Google.
- Caching là việc lưu trữ một phần dữ liệu cửa bản sao gốc gần với người dùng. Cache là một dạng
đặc biệt của nhân bản, nó được điểu khiển bởi client thay vì được điều khiển bởi server. Caching
giúp giảm tải băng thông, giảm gánh nặng cho server và giảm thời gian đáp ứng.
- Có 2 cách kiểm tra cache là mới hay cũ:
+ Khi lưu catche, lưu cả version của cache
+ Đặt thời gian hết hạn cho cache
- Cả sao chép và caching đều gặp vấn đề về nhất quán dữ liệu.
Câu 28
- Có 3 cách lan truyền các cập nhật:
+ Chỉ có thông báo là có cập nhật: Thường dùng trong việc cache dữ liệu. Giao thức
Invalidation thực hiện công việc này. Các bản sao được thông báo về việc một thao tác cập nhật đã
diễn ra và dữ liệu của bản sao không còn chính xác nữa. Giao thức này có thể chỉ ra một phần nào
đó của dữ liệu bị thay đổi, do đó chỉ phần dữ liệu bị thay đổi cần cập nhật lại. Phương pháp này tốt
khi tỉ lệ các thao tác đọc so với thao tác ghi nhỏ
+ Truyền dữ liệu cập nhật từ bản sao này tới một bản sao khác: Thực hiện tốt khi có
nhiều thao tác đọc. Các thay đổi được ghi nhận và tập hợp các cập nhật lại để truyền đi (chỉ truyền
đi các thay đổi chứ không truyền cả dữ liệu đã bị thay đổi, vì thế tiết kiệm được băng thông)
+ Lan truyền các thao tác cập nhật tới các bản sao khác (nhân bản chủ động): Tốn ít băng
thông nhưng đòi hỏi năng lực xử lý cao vì trong nhiều trường hợp thì các thao tác là rất phức tạp
Câu 29+30
24
Nguyễn Đức Hòa – HTTT 14, MTA
- Tính chịu lỗi liên quan nhiều tới khái niệm hệ có thể tin cậy được. Thuật ngữ “có thể tin cậy
được” bao gồm các thuộc tính: tính sẵn sàng, tính tin cậy, tính an toàn và khả năng bảo trì.
+ Tính sẵn sàng (availability): hệ thống có tính sẵn sàng là hệ thống luôn sẵn sàng hoạt động
tốt ở mọi thời điểm.
+ Tính tin cậy (reliability): một hệ thống có tính tin cậy là hệ thống có khả năng hoạt động
trong một thời gian dài mà không bị gián đoạn, không xảy ra lỗi.
+ Tính an toàn (safety): hệ thống có tính an toàn là hệ thống mà khi xảy ra lỗi cũng không
dẫn tới thảm họa. Các hệ thống cần phải có độ an toàn cao là các hệ thống điều khiển.
+ Khả năng bảo trì (maintainability): hệ thống có khả năng bảo trì là hệ thống có khả năng
phục hồi lại được sau khi có lỗi. Nếu sự phục hồi này diễn ra tự động thì có thể nói hệ thống này
cũng có tính sẵn sàng cao.
- Phân loại:
+ Lỗi nhất thời: là loại lỗi xuất hiện một lần rồi biến mất. Cách khắc phục: thực hiện lại hoạt
động có lỗi này.
+ Lỗi lặp: là loại lỗi mà chúng xuất hiện, rồi biến mất, sau đó lại xuất hiện lại và cứ tiếp tục
như thế. Lỗi này thường gây ra các hậu quả trầm trọng vì chúng rất khó xác định được. Cách khắc
phục: sử dụng bộ sửa lỗi cho hệ thống (fault doctor) để khắc phục lỗi.
+ Lỗi lâu dài: là loại lỗi vẫn tồn tại ngay cả khi thành phần gây lỗi đó đã được sửa chữa.
- Ý nghĩa:
+ Tính chịu lỗi có ý nghĩa to lớn trong các hệ phân tán, nó liên quan tới khái niệm điều khiển
lỗi. Điều khiển lỗi bao gồm ngăn ngừa lỗi, loại bỏ lỗi và dự báo lỗi với mục tiêu xây dựng thành
công khả năng chịu lỗi của hệ thống.
+ Tính chịu lỗi giúp tự động hồi phục lại các lỗi riêng phần mà không làm ảnh hưởng gì
nghiêm trọng đến toàn bộ hiệu năng nhằm đảm bảo tính liên tục trong hoạt động của hệ thống.
Trong thiết kế nói chung, tùy thuộc vào mức độ quan trọng, tính chịu lỗi có thể quyết định tính
chất sống còn của hệ thống.
- Ví dụ một số hệ thống có tính chịu lỗi: hệ thống điều khiển máy bay, hệ thống cơ sở dữ liệu của
các ngân hàng,…
+ Google File System, hệ thống quản lí tập tin của Google, Có thể nói GFS là xương sống
cho hầu hết mọi dịch vụ mà Google cung cấp. Hệ thống cơ sở dữ liệu người dùng đồ sộ, các dịch
vụ điện toán đám mây và lượng dữ liệu khổng lồ phục vụ việc tìm kiếm, tất cả đều được quản lý
dựa trên GFS. Thiết kế của GFS được tạo ra để bảo đảm rằng, dù có phải thường xuyên thay đổi
các server trong hệ thống, lượng dữ liệu bị mất đi vẫn sẽ được giữ ở mức tối thiểu
+ Tập tin hệ thống của Apple". APFS là dạng tập tin hệ thống được Apple xây dựng dành
riêng cho các nền tảng macOS, iOS, tvOS và watchOS của mình với mục đích tối ưu, tăng tốc và
25