Đối với hệ thống PC: Sử dụng phương pháp bù tuyến tính bằng cách bổ sung thêm hàm bù tuyến tính Linear compensating function vào system call của hệ điều hành Đối với hệ thống cục
Trang 2NỘI DUNG
Đồng bộ hóa
Đồng hồ vật lý
Đồng hóa đồng hồ vật lý
Đồng hồ logic
Đồng bộ hóa đồng hồ logic
Kết luận
Trang 3• Ích lợi của mô hình đa luồng cho phép ứng dụng thực hiện nhiều công việc đồng thời Nhưng bên cạnh sự hữu dụng đó, việc tồn tại cùng lúc nhiều luồng trong môi trường có thể dẫn đến sự tranh chấp, ngăn cản họat động lẫn nhau giữa các luồng
+ Bế tắc ( Dead Lock)
+ Cho kết quả sai lệch
• Hầu các ứng dụng như : thanh toán, điểu khiển tự động ( lắp ráp, phản ứng hạt nhân…), truy xuất database v.v…đồng bộ hóa có vai trò quan trọng
Tại sao phải đồng bộ hóa ?
Trang 4• Sắp xếp thứ tự thời gian các sự kiện qua việc sinh ra các tiến trình đồng thời
-Nhằm mục đích:
• Đồng bộ giữa việc gửi và nhận các thông điệp
• Điều phối các hoạt động chung cho toàn hệ thống
• Sắp xếp thứ tự truy cập đồng thời cho các đối tượng được chia sẻ tài nguyên
Đồng bộ hóa là gì ?
Trang 7 Đối với hệ thống PC: Sử dụng phương pháp bù
tuyến tính bằng cách bổ sung thêm hàm bù
tuyến tính (Linear compensating function ) vào
system call của hệ điều hành
Đối với hệ thống cục bộ: Sử dụng thuật toán
Berkeley để đồng bộ hóa tất cả đồng hồ trên hệ thống cục bộ về giá trị trung bình ( Gusella & Zatti, 1989) hoặc NTP
ĐỒNG BỘ HÓA
Trang 8 Đối với hệ thống phân tán
- Mỗi trạm có một đồng hồ cục bộ của riêng mình
Không có đồng hồ chung Không thể áp dụng các thuật toán đồng bộ hóa ở hệ thống cục bộ
- Các sự kiện xãy ra trên các trạm trong hệ thống
Trang 9• là một dạng đồng hồ vật chất
• giữ thời gian trong ngày và thống nhất trên toàn hệ thống
Đồng hồ vật lý
Trang 10 Đồng hồ thạch anh (Quartz clocks)
-1880 :
+ Được phát hiện bởi Anh em nhà Pierre Curie
+ Nén một tinh thể thạch anh & nó tạo ra một điện trường
+ Áp dụng một điện trường mà nó uốn cong
Trang 11Đồng hồ thạch anh (Quartz clocks)
-1929 : Đồng hồ pha lê (Quartz crystal clock)
+ Sử dụng tia Laser tạo rung ở tần số32,768 Hz + Độ chính xác 6 phần triệu million seconds ở nhiệt 31° C
+ Đồng hồ có thể sai lệch < ½ sec/1 ngày
+ Độ ổn định, chính xác cao : ổn định đến 2 sec/1 tháng
+ Tiếng vang tốt có thể có độ chính xác xấp xĩ 1 second trong 10 năm
Các dạng của đồng hồ vật lý
Trang 12Đồng hồ nguyên tử (Atomic clocks)
+ NIST (National Institute of Standards and
Technology)
đưa ra từ năm 1960
+ Giây (second) được định nghĩa là 9.192.631.770 thời kỳ bức xạ tương ứng với sự chuyển tiếp giữa hai mức hyperfine của cesium-
133
+ Độ chính xác: tốt hơn 1 giây trong sáu triệu năm
Các dạng của đồng hồ vật lý
Trang 13Các dạng của đồng hồ vật lý
Đồng hồ nguyên tử (Atomic clocks)
Caesium atomic clock, 1955 Hệ thống đồng hồ nguyên tử tại Đài quan sát
hải quân Mỹ ở Washington DC
Trang 14- UTC0
+Thời gian năng lượng mặt trời trên kinh tuyến Greenwich
+Thu được từ quan sát thiên văn
Trang 15- Đồng hồ thời gian thực: đồng hồ CMOS là mạch điều khiển bởi một máy dao động thạch anh
- Sử dụng Pin dự phòng để tiếp tục đo thời gian khi tắt điện
Đồng hồ vật lý ở máy tính
Các dạng của đồng hồ vật lý
Trang 16Các vấn đề xãy ra với đồng hồ máy tính
- Hai hệ thống ban đầu điều chỉnh để thoả thuận
về thời gian nhưng sau thời gian Hai đồng hồ sai lệch
- Sự khác nhau giữa hai đồng hồ tại một thời điểm trong thời gian : Clock Drift
Trang 17Sept 18, 2011
Các vấn đề xãy ra với đồng hồ máy tính
Giả sử chúng ta thiết lập máy tính thời gian đúng
Trang 18Oct 23, 20068:00:00
Các vấn đề xãy ra với đồng hồ máy tính
Trang 20• Hệ điều hành có thể làm điều này:
- Thay đổi tốc độ qua yêu cầu ngắt
+ Ví dụ :
nếu hệ thống yêu cầu ngắt mỗi ngày? 17 msec nhưng đồng hồ là quá chậm? yêu cầu ngắt tại, chẳng hạn 15 msec
- Hoặc chỉnh phần mềm : xác định lại
khoảng thời gian
+ Điều chỉnh thay đổi độ dốc của thời gian hệ thống: Linear compensating function
Đối phó với Driff
Trang 21ĐỒNG HỒ VẬT LÝ
Perfect Clock
Trang 22Drift with slow Clock
ĐỒNG HỒ VẬT LÝ
Trang 23Drift with fast Clock
ĐỒNG HỒ VẬT LÝ
Trang 24Clock synchronized skew
Compensating for a fast Clock
ĐỒNG HỒ VẬT LÝ
Trang 25Sau khi đạt được thời gian đồng bộ hóa
– Tái đồng bộ định kỳ (Resynchronize periodically) – Ứng dụng kế tiếp của một chức năng bù tuyến tính thứ hai có thể mang lại cho chúng ta gần gũi hơn với độ dốc thật sự
Theo dõi điều chỉnh và áp dụng liên tục
– Ví dụ : trong hệ điều hành UNIX, người ta bổ sung
thêm hàm adjtime ở system call cứ sau 1ms sẽ
phát ra thông điệp yêu cầu điều chỉnh lại đồng hồ máy tính.
Tái đồng bộ hóa (Resynchronizing)
Trang 26•Kỹ thuật đồng bộ đơn giản nhất
- Đồng bộ hóa từ máy khác
+ Với một chiếc đồng hồ chính xác hơn
+ Sử dụng thời gian của máy chủ : Time Server
Thiết lập thời gian thực hiện
ĐỒNG HỒ VẬT LÝ
Trang 27Xét mô hình trao đổi thông điệp đơn giản của hệ thống mạng giữa 2 máy tính Client và Server như hình vẽ
Thiết lập thời gian thực hiện
Mô hình trao đổi thông điệp giữa 2 máy tính trong mạng
Trang 28• Bù đắp cho sự chậm trễ (Compensate for delays)
- Chú ý về thời gian :
+ Thời điểm Client Server: T0
+ Thời điểm Server trả về cho Client : T1
- Giả định sự chậm trễ mạng là đối xứng ( Kiến trúc mạng là như nhau trong suốt quá trình )
Thuật toán Cristan
Mô hình biểu quan hệ trao đổi thông điệp
giữa Client và Server
Trang 29• Clients đặt thời gian để :
Tnew = Tserver + (T1-T0 )/2
Thuật toán Cristan
Trang 30• Độ sai lệnh biên (Error bounds)
- Nếu thời gian đi qua của thông điệp tối thiểu (Tmin) được biết :
+ Đặt giới hạn về độ chính xác của kết quả :
Thuật toán Cristan
Độ sai lệch biên xuất hiện trên mô hình trao đổi
Trang 31• Độ sai lệnh biên (Error bounds)
- Biên độ (range ) = T1-T0-2Tmin
Tính chính xác của kết quả =
- Ví dụ
Gởi yêu cầu lúc 5:08:15.100 (T0)
Nhận được phản hồi tại 5:08:15.900 (T1)
Phản hồi có lúc 5:09:25.300 (Tserver)
Thời gian đã qua là : T1 -T0
5:08:15.900 - 5:08:15.100 = 800 msec
Dự đoán tốt nhất: dấu thời gian được tạo : 400 msec
Thuật toán Cristan
Trang 32• Độ sai lệnh biên (Error bounds)
Thiết lập thời gian để Tserver+ thời gian trôi qua
Trang 33• Độ sai lệnh biên (Error bounds)
Error = ± (900-100)/2 – 200 = ±800/2-200 = ±200 ms
Thuật toán Cristan
Trang 34- Do Gusella & Zatti đề xuất 1989
- Giả sử máy không có thời gian chính xác nguồn
- Máy chạy thời gian kim cương (time dæmon) :
+ Máy được chọn lấy thời gian kim cương : máy chủ (master) + Những máy khác là slaves
- Nguyên tắc : Đồng bộ tất cả các đồng hồ đến trung bình
+ Master phiếu thăm dò ý mỗi máy theo định kỳ
Yêu cầu mỗi máy cho biết thời gian thời gian của minh
+ sử dụng thuật toán Cristian để bù cho độ trễ mạng
+ Khi kết quả là tồn tại, tính trung bình (gồm cả thời gian của master)
Thuật toán Berkeley
Trang 35- Hy vọng: Tính giá trị trung bình, hủy bỏ cá thể có xu
hướng vượt qua xa đối với giá trị trung bình (đồng
hồ chạy nhanh hay chậm)
+ Điều chỉnh đồng hồ slave
+Tránh các vấn đề với sự chậm trễ mạng, nếu chúng
ta gửi một nhãn thời gian (time stamp)
+ Thuật toán đã quy định cho bỏ qua đồng hồ mà skew là quá lớn
Tính toán lỗi chịu trung bình (fault-tolerant average) +Nếu master lỗi Thiết lập thời gian bù đắp để triệt tiêu thời gian sai lệch biên theo thuật toán Cristan
Thuật toán Berkeley
Trang 36- Ví dụ về thuật toán Berkeley
Thuật toán Berkeley
1.Yêu cầu tất cả Slaves gởi timestamps đến Server
Trang 37- Ví dụ về thuật toán Berkeley
(3:25+2:50+3:0)/3 = 3:05 2.Tính toán lỗi chịu trung bình (fault-tolerant average)
Thuật toán Berkeley
Trang 38- Ví dụ về thuật toán Berkeley
3 Gởi bù đắp (offset) đến mỗi client
Thuật toán Berkeley
Trang 39• Đối với các ứng dụng mạng, đặc biệt ứng dụng trên Internet ngày càng rộng rãi Cho phép các Client qua mạng Internet thực hiện đồng bộ hóa đối với UTC
đồng bộ hóa trên từng Subnet khác nhau :
Trang 41Lamport gọi “happened-before” như sau:
- a b : sự kiện a đã xảy ra trước sự kiện b
Ví Dụ : a thông điệp được gửi đi, b: thông điệp nhận
+ Tính bắc cầu (Transitive):
nếu a b và b c thì a c
Happened-before
Trang 42 Đối với hệ thống PC: Sử dụng phương
pháp bù tuyến tính bằng cách bổ sung thêm hàm bù tuyến tính (Linear compensating function ) vào system call
của hệ điều hành
toán Berkeley để đồng bộ hóa tất cả đồng
hồ trên hệ thống cục bộ về giá trị trung
bình ( Gusella & Zatti, 1989)
ĐỒNG BỘ HÓA
Trang 43ĐỒNG BỘ HÓA
Đối với hệ thống phân tán
- Mỗi trạm có một đồng hồ cục bộ của riêng mình
Không có đồng hồ chung Không thể áp dụng các thuật toán đồng bộ hóa ở hệ thống cục bộ
- Các sự kiện xãy ra trên các trạm trong hệ thống có thể đồng bộ hoặc không
Làm thế nào để sắp xếp thứ tự của các sự kiện trên
hệ thống???
Trang 44- Xét mô hình gồm các hệ thống Pi (i=1,2….)
- a,b,c,d, Các sự kiện xuất hiện trên Pi
Giả sử :
- Mỗi hệ thống duy trì đồng hồ riêng của chính mình
Không có nguồn thời gian trung tâm
- Không có chỉ thị của các sự kiện
Không có khái niệm “happened-when” Các hệ thống đôi khi giao tiếp hoặc không
Mô hình giả định
Làm thế nào để sắp xếp thứ tự của a,b,c,d ???
Trang 45- Lamport gọi “happened-before” như
Trang 46- Nếu a và b xảy ra trên các hệ thống/trạm khác nhau mà không trao đổi thông điệp thì không thể xác định :
Trang 47a b
i
kj
Trang 48- Mỗi thông điệp mang một dấu thời gian
(timestamp ) của đồng hồ gởi
- Khi một thông điệp được gởi đến : +nếu đồng hồ nhận < timestamp của thông điệp thiết lập lại đồng hồ hệ thống
+Ngược lại giữ nguyên
- Đồng hồ phải được điều chỉnh giữa 2 sự kiện bất kỳ trong cùng tiến trình
Thuật toán Lamport
Trang 49a b
i
kj
Thuật toán cho phép chúng ta sắp xếp thứ tự thời gian trong
số các sự kiện liên quan - Thứ tự từng phần (Partial
ordering )
Trang 50a b
i
kj
Thuật toán Lamport
a→b, b→c, …: trình tự các sự kiện tại địa phương
I(a,g,j),II(h,f),III(i,k) : Các thành phần đồng qui
Trang 51Chúng ta có thể áp đặt mỗi dấu thời gian trở nên duy nhất
- Xác định dấu thời gian logic toàn cục (Ti, i)
+ Ti đại diện cho dấu thời gian Lamport địa phương + i đại diện cho số lượng tiến trình
Trang 52a b
i
kj
Trang 53- Nếu L(e) < L(e’) ( L : dấu thời gian Lamport )
Không thể kết luận rằng e → e’
Không thể kết luận là sự kiện có quan hệ nhân quả
Giải pháp: sử dụng một đồng hồ vector
Phát hiện quan hệ nhân quả (causal relations)
Trang 54• Do Fidge, Mattern và Schmuck đề xuất 1988
• Quy tắc
1 Vector khởi V tạo có giá trị 0 tại mỗi tiến trình/trạm
Vi [j] = 0 với i, j =1, …, n
2 Tăng tiến trình của phần tử của vector ở vector địa
phương trước khi có sự kiện timestamping
Vi [i] = V i [i] +1 i [i] i [i]
3 Thông điệp được gửi từ tiến trình Pi với Vi thì được gắn
liền với nó
4 Khi Pj nhận được thông điệp từ hệ thống khác thì tiến
hành so sánh vectơ thành phần bởi thành phần tương ứng
và thiết lập véc tơ địa phương theo:
Vj [i] = max(V i [i], V j [i]) for i=1, …, n
Vector clocks
Trang 55Vector timestamps
fe
Trang 60Vector timestamps
Trang 62Vector timestamps
Trang 63Vector timestamps
Trang 64Vector timestamps
Trang 65Vector timestamps
Trang 66Tiến trình
chờ xử lý
ĐỒNG HỒ LOGIC
Clock _Vector_Array
OS
P1 P2
P3
Lập trình viên
P4 P6 P5
CPU
S2
S1
Trang 67- Cho 2 sự kiện bất kỳ e, e’
Nếu e → e’ thì V(e) < V(e’)
Cũng giống như thuật toán của Lamport
Nếu V(e) < V(e’) thì e → e’
- Hai sự kiện đồng qui nếu xãy ra (He || He’): Tức không xãy ra V(e) ≤ V(e’) hoặc không V(e’) ≤ V(e)
So sánh vector timestamps
Trang 68Xác lập quan hệ nhân quả
Trang 691 Cài đặt các file trên mỗi hệ thống lưu trữ đồng
hồ vector Hi (i =1 n), Hi được gọi là đồng hồ cục bộ của trạm Si(i là số thứ tự của trạm trong
hệ, i =1 n, n số trạm trong hệ)
2.Cập nhật đồng hồ logic ( cập nhật và tái tạo bản sao )
3.So sánh 2 vector Hi và Hj
4.Xác lập quan hệ nhân quả của 2 sự kiện
Đồng bộ hóa ứng dụng trên các hệ thống phân tán
Trang 70- Vector đồng hồ là một cơ chế được ứng dụng các hệ phân tán tạo bước đột phá trong đặt nền tảng để giải quyết các bài toán có độ phức tạp cao trong môi trường tài nguyên hạn chế hoặc phải chia sẻ
đồng hồ
(http://gsd.di.uminho.pt/members/cbm/ps/itc2008.pdf)
KẾT LUẬN
Trang 71TÀI LIỆU THAM KHẢO
[1] Colin J Fidge (February 1988) "Timestamps in Message-Passing Systems That Preserve the Partial Ordering" In K Raymond (Ed.)
Proc of the 11th Australian Computer Science Conference (ACSC'88)
pp 56–66 Retrieved 2009-02-13.
[2].Mattern, F (October 1988), "Virtual Time and Global States of
Distributed Algorithms, Chateau de Bonas, France: Elsevier, pp 215–226
[3].lmeida, Paulo; Baquero, Carlos; Fonte, Victor (2008), "Interval Tree Clocks: A Logical Clock for Dynamic Systems", in Baker, Theodore P.;
Bui, Alain; Tixeuil, Sébastien, Principles of Distributed Systems, Lecture
Notes in Computer Science, 5401, Springer-Verlag, Lecture Notes in Computer Science, pp 259–274
[4] Torres-Rojas, Francisco; Ahamad, Mustaque (1999), "Plausible
Trang 72TÀI LIỆU THAM KHẢO
[5] S Mullender ed., "Distributed Systems", 2nd ed., Addison-Wesley, 1993
[6] Jie Wu, "Distributed Systems Design",
Addison-Wesley, 2008
[7] G Coulouris, J Dollimore, T
Kinberg, "Distributed systems : Conceptand Design“ , Australia IASTED, ACTA Press
Trang 73THANKS !