Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tài liệu đồng bộ hóa
MIỄN PHÍ
Số trang
17
Kích thước
428.0 KB
Định dạng
PDF
Lượt xem
1753

Tài liệu đồng bộ hóa

Nội dung xem thử

Mô tả chi tiết

Nhóm dịch hệ phân tán –Lớp MTT- K50 - DHBKHN

Chương 6 : Đồng bộ hóa

(Synchronization)

Trong chương này chúng ta sẽ tìm hiểu bằng cách nào các tiến trình đồng bộ hóa được với

nhau. Ví dụ, thay vì nhiều tiến trình đồng thời truy nhập vào một tài nguyên chia sẻ thì chúng cấp

quyền truy nhập tạm thời cho nhau. Một ví dụ khác, nhiều tiến trình đôi khi cần trả lời cho 1 sự

kiện nào đó, nói cách khác, cần xác định thông điệp m1 của tiến trình P được gửi trước hay sau

thông điệp m2 cùa tiến trình Q.

Đồng bộ hóa trong các hệ thống phân tán thường khó hơn rất nhiều so với đồng bộ hóa

trong các hệ đơn hoặc đa xử lý.

Vấn đề trong chương này hướng tới đồng hộ hóa dựa trên thời gian hoạt động, tức là thời

gian có tính tương quan giữa các tiến trình hơn là thời gian tuyệt đối.

Trong nhiều trường hợp, đồng bộ hóa có thể được giải quyết bằng cách một nhóm các tiến

trình có thể sử dụng 1 tiến trình được thực thi bằng cách lấy trung bình một vài thuật toán lựa

chọn.

6.1 Đồng bộ hóa đồng hồ (Clock Synchronization).

Trong một hệ tập trung, thời gian hệ thống là rõ ràng. Khi một tiến trình muốn biết thời

gian hệ thống, nó chỉ cần đưa ra 1 lời gọi hệ thống và đợi kernel trả lời. Nếu tiến trình A hỏi thời

gian, ngay sau đó tiến trình B hỏi thời gian, thì thời gian mà B nhận được sẽ lớn hơn(đôi khi

bằng) so với thời gian mà A nhận được. Chắc chắn không bao giờ có chuyện thời gian B nhận

được nhỏ hơn A. Nhưng trong một hệ thống phân tán, đạt được sự thống nhất về thời gian như

vậy không hề đơn giản.

Hãy lấy 1 ví dụ đơn giản trong chương trình make của Unix. Thông thường thì trong

Unix, các chương trình lớn được chia nhỏ ra nhiều file nguồn, để khi có thay đổi trong 1 file

nguồn thì chỉ có file đó phải được biên dịch lại mà không phải là tất cả chương trình. Nếu 1

chương trình có 100 files, thì không nhất thiết phải biên dịch lại toàn bộ bởi 1 file bất kì thay đổi

với tốc độ cao hơn bất kì 1 người lập trình nào có thể làm việc. Lệnh make làm việc hết sức đơn

giản. Khi lập trình viên thay đổi file nguồn và chạy lệnh make thì thời điểm đó được đánh dấu

cho tất cả các file nguồn đã bị modify. Nếu file input.c có thời gian là 2151 và file đối tượng

tương ứng của nó output.o có thời gian là 2150 thì lệnh make hiểu rằng input.c đã bị thay đổi sau

khi output.o được tạo ra. Như vậy cần phải biên dịch lại input.c để cho ra phiên bản output.o mới.

Trong trường hợp khác, nếu thời gian của output.o là 2144 còn thời gian của input.c là 2143 thì

không cần biên dịch lại file này. Như vậy lệnh make kiểm tra lại toàn bộ file nguồn và chỉ gọi

trình biên dịch biên dịch những file cần thiết.

Bây giờ hãy tưởng tượng những gì xảy ra trong một hệ phân tán cũng với lệnh make như

trên. Nếu hệ thống không đạt được sự thống nhất về thời gian, sự việc sẽ xảy ra như trong sơ đồ

sau:

Page | 1

Tải ngay đi em, còn do dự, trời tối mất!