SẮP XẾP KIỂU ĐÓNG DẤU Một sự hoạt động gắn bó giữa các chương trình cung cấp phân tán quản lý cùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau, ở đây thông đi
Trang 1ĐỀ TÀI
Hãy viết chương trình mô phỏng quá trình phát
và nhận thông điệp trong hệ phân tán
Xây dựng hệ thống 3 server có khả năng phát
nhận thông điệp
Trang 2GIỚI THIỆU ĐỀ TÀI
- Phần 1 : Phần cơ sở lý thuyết những vấn đề chung nhất của
hệ tin học phân tán làm cơ sở cho các phần 2 của đề tài
- Phần 2: Lập trình phân tán
- Phần 3: Triển khai chương trình
- Phần 4 : Đánh giá kết quả thực hiện được và hướng phát
triển ứng dụng
Trang 3LÝ THUYẾT
Trang 4ĐẶT VẤN ĐỀ
Trong môi trường hệ phân tán, việc các tiến trình muốn truy cập vào các tài nguyên có số lượng hạn chế hay thông tin dùng chung cùng một lúc là có thể xảy ra, trường hợp này được gọi là tương
tranh
Tài nguyên được hệ phân tán chia sẻ cho nhiều
tiến trình mà có nguy cơ xảy ra sự tương tranh gọi
là tài nguyên găng.
Trang 5ĐẶT VẤN ĐỀ
Tài nguyên găng là tài nguyên mà trong một
khoảng thời gian nhất định thì chỉ phục vụ hợp lý cho một số hữu hạn các tiến trình
Đoạn mã trong các tiến trình đồng thời sử dụng tài
nguyên găng gọi là đoạn găng hay gọi là “chỗ
hẹp” trong tiến trình Tức là đoạn mã để truy cập đến các tài nguyên được chia sẻ
Trang 6ĐẶT VẤN ĐỀ
Việc sắp xếp các thông điệp từ các trạm gởi tới để truy cập đoạn găng theo thứ tự hợp lý để không xảy ra sự tương tranh và hợp lực chính là các
chiến lược đồng bộ hóa các tiến trình
Để hiểu tính cấp thiết của việc đồng bộ hóa các tiến trình khi xử lý đoạn găng, ta xét ví dụ nhỏ
sau:
Trang 7800
IF (tai khoan – tien rut >=0) THEN tai khoan = tien khoan – tien rut;
ELSE thong bao loi;
IF (tai khoan – tien rut >=0) THEN tai khoan = tien khoan – tien rut;
ELSE thong bao loi;
Chi nhánh I
Chi nhánh II
Trang 8 Trong hệ thống tin học tập trung, vấn đề đồng bộ hóa được giải quyết thông qua cơ chế loại trừ
tương hỗ Tuy nhiên, trong hệ phân tán, việc đồng
bộ hóa chỉ đặt ra yêu cầu duy nhất vấn đề thiết lập một trật tự giữa các sự kiện Giữa các trạm khác nhau, trật tự đó có thể thể hiện được thông qua
việc trao đổi các thông điệp với nhau
Trang 9TRẬT TỰ TỪNG PHẦN
các sự kiện của hệ phân tán nhờ vào quan hệ
ngay trước ”.
buộc thể hiện trong bảng sau đây :
C1 : Nếu A và B là hai sự kiện của cùng một trạm và nếu A được thực hiện trước B thì theo trật tự cục bộ của trạm ta có
A → B.
C2 : Nếu A là phát thông điệp bởi một trạm nào đó và nếu B
là thu của thông điệp này thì ta có A → B.
Trang 10SẮP XẾP KIỂU ĐÓNG DẤU
Một sự hoạt động gắn bó giữa các chương trình cung cấp phân tán quản lý cùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau, ở đây thông điệp được
hiểu là các yêu cầu hay khuyến nghị giải phóng tài nguyên
1 Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật
2 Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình
3 Các thông điệp phải được xử lý cùng một trật tự như nhau trong các chương trình cung cấp
Trang 11SẮP XẾP KIỂU ĐÓNG DẤU
Đóng dấu là hành vi gán giá trị nguyên cho một
thông điệp nhằm ghi nhận thời điểm truyền trên cơ
sở tham chiếu đồng hồ logic
Nội dung cơ bản của phương pháp này là trạm
phát được gắn một giá trị gọi là dấu Giá trị này là tính chất thời điểm cho trạm phát thông tin và dựa vào đồng hồ logic cục bộ của chính trạm Giải
thuật trình bày ở đây là giải thuật Lamport nhằm cho phép ghi lại các sự kiện của hệ phân tán
Trang 12SẮP XẾP KIỂU ĐÓNG DẤU
Giải thuật Lamport nhằm giải quyết vấn đề trình tự (vấn đề mấu chốt của hệ phân tán) dựa trên giá trị đồng hồ lo gích để sắp xếp các thông điệp đến
Mỗi trạm s đều có trang bị công tơ với các giá trị nguyên gọi là
Hs Đó chính là đồng hồ lô gích tăng lên giữa hai sự kiện kế tiếp Trạm e phát thông điệp ghi dấu E của mình dựa trên giá trị hiện hành của He Khi nhận được thông điệp, trạm r cập nhật đồng hồ
Hr riêng của mình bằng giải thuật sau đây :
Nếu Hr, thì
Hr := He +1 Chấm dứt nếu
Trang 13SẮP XẾP KIỂU ĐÓNG DẤU
Một sự kiện a sinh ra trong trạm i và được đánh dấu bởi đồng hồ cục bộ gọi là Hi(a) Nếu a và b đều là hai sự kiện trên hai trạm i và j, ta luôn luôn
có quan hệ xác định như sau :
Đó là trật tự không chặt chẽ do vì hai sự kiện trên hai trạm khác nhau có thể đến cùng một thời điểm giống nhau
a b Hi(a) < Hi(b)
Trang 15SẮP XẾP KIỂU ĐÓNG DẤU
Giả thiết
Trạm i của mạng có thể gửi cho các trạm khác
thông điệp có dạng (T Hi, i), trong đó Hi là dấu của thông điệp có nghĩa là đồng hồ lô gích của nó
và T có thể nhận một trong ba giá trị REQ, REL,
và ACQ
Trang 16SẮP XẾP KIỂU ĐÓNG DẤU
Ba giá trị này xác định bản chất của ba loại thông điệp khác nhau
1 REQ Thông điệp REQ được phát đi cho tất cả các trạm, khi trạm i muốn vào trong đoạn găng
2 REL Thông điệp REL được phát đi cho tất cả các trạm, khi trạm i đã rời khỏi đoạn găng
3 ACQ Thông điệp ACQ được gửi bởi trạm i cho trạm j đã nhận được từ trạm i thông điệp REQ.
Trang 17SẮP XẾP KIỂU ĐÓNG DẤU
Khi có một thông điệp được gởi đi bởi trạm i đồng thời
nó cũng được ghi trong hàng đợi của trạm này
Giả sử rằng mỗi hàng đợi ban đầu chứa các thông điệp :
Trong đó, i, Hinit là thời điểm khởi sự giống nhau cho tất
cả các trạm
Mi = (REL, Hinit , i)
Trang 18SẮP XẾP KIỂU ĐÓNG DẤU
Tiêu chí để sắp xếp dựa vào Hi
Mỗi trạm quản lý một hàng đợi các thông điệp được sắp xếp hoàn toàn bởi quan hệ theo cặp
<thời gian, số> của từng thông điệp
Thuật toán được mô tả theo sơ đồ sau :
Khởi tạo hàng đợi, mỗi máy tự phát thông điệp
Mi = (REL, Cinit , i)
Trang 19SẮP XẾP KIỂU ĐÓNG DẤU
(REL,Hi,i) thông điệp này thay thế thông điệp Mi bất chấp nó là gì Khi nhận thông điệp loại (ACQ, Hi,i), thông điệp này thay thế Mi ngoại trừ nếu Mi là một yêu cầu mà trong trường hợp đó ACQ bị bỏ qua Do vậy,
ta có thể tiết kiệm việc gởi đi thông điệp ACQ cho trạm i khi trạm này
đã gởi một thông điệp REQ và không còn thông điệp REL.
theo nghĩa của quan hệ => tất cả các thông điệp khác trong hàng đợi của
nó
Trang 20ĐỒNG HỒ LOGIC LAMPORT
Cài đặt đồng hồ Lamport
Tất cả các máy (tiến trình - Pi) sử dụng một bộ đếm (đồng hồ - Ci) với giá trị khởi tạo là 0.
Trước khi xử lý một sự kiện (gửi, nhận hoặc ngắt), Pi xử lý như sau: tăng bộ đếm và gán cho mỗi sự kiện, như là timestamp (thời gian đánh dấu) của nó.
Trang 216 8
7
Các sự kiện logic đồng thời
Trang 22THUẬT TOÁN LARMPORT
TỔNG QUÁT
(a) cả hai tiến trình 0 và 2 yêu cầu vào đoạn găng
(b) tiến trình 0 vào đoạn găng vì nó có yêu cầu đầu tiên(c) tiến trình 0 rời đoạn găng, tiến trình 2 vào đoạn găng
Trang 23THUẬT TOÁN RICART &
AGRAWALA
2
Process 0 releases resource
Khi một tiến trình muốn vào đoạn găng
• Gửi một thông điệp yêu cầu tới tất cả các tiến trình khác trong nhóm
•
Trang 24THUẬT TOÁN TOKEN RING
(a) Nhóm các tiến trình không có trật tự trong một mạng(b) Cấu trúc vòng tròn logic trong phần mềm
Trang 25THUẬT TOÁN LOẠI TRỪ
TUƠNG HỖ
state := RELEASED;
Để một tiến trình chuẩn bị vào được đoạn găng
state := WANTED;
Gởi thông điệp yêu cầu vào đoạn găng cho N-1 trạm còn lại
H := request’s timestamp; {Thời gian dấu của yêu cầu}
Wait until ( Số lượng các thông điệp trả lời cho nó = (N - 1)); state := HELD;
Để một tiến trình ra khỏi đoạn găng
state := RELEASED;
Gởi thông điệp cho mọi tiến trình khác trong hệ
Trang 26THUẬT TOÁN LOẠI TRỪ
TUƠNG HỖ
Khi nhận một yêu cầu <T,H,I,D>:
Cập nhật đồng hồ Logic của trạm theo công thức clock_logic=Max(clock_logic,H)+1
Nếu T=”REQ” thì bỏ thông điệp vào hàng đợi của trạm Ở đây là chèn thông điệp vào hàng đợi theo hai giá trị của H và I.
Nếu T= “ACK” thì Tham chiếu vào hàng đợi của mình để xem các thông điệp có giá trị T=”REQ”, IREQ=IACK ở đầu hàng đợi
Các thông điệp có giá trị T=”ACK” đã nhận đầy đủ từ các trạm khác trong hệ để trả lời cho nó
Nếu đã hội đủ hai vấn đề trên thì cho vào đoạn găng
Ngược lại thì bỏ thông điệp vào hành đợi
Nếu T= “REL”
Xoá thông điệp có T=”REQ” tương đương với nó ra khỏi hàng đợi
Trang 27THUẬT TOÁN LOẠI TRỪ
Gởi thông điệp vào đoạn găng cho trạm j (j=1…n)
Gởi thông điệp trả lời từ các trạm đã gởi yêu cầu
Nếu số thông điệp nhận được để trả lời
nó bằng N-1
State:=Held
Trang 28THUẬT TOÁN LOẠI TRỪ
Gởi thông điệp yêu cầu ra khỏi đoạn găng cho trạm j tiếp theo(j=1…n)
Trạm j nhận thông điệp đó và xóa thông điệp yêu cầu vào của nó trong hàng đợi cục bộ của trạm j
Nếu trạm j là trạm cuối cùng trong hệ để gởi thông điệp
Cập nhật dữ liệu trong cơ sở dữ liệu của các trạm
Kết thúc
Giải thuật để một tiến trình i ra khỏi đoạn găng
Trang 29THUẬT TOÁN LOẠI TRỪ
TUƠNG HỔ (TT)
Đ Đ
S S S
Kết thúc
Nếu T=”REL”
Nếu T=”ACK” Đ (1)
Chèn thông điệp vào hàng đợi cục bộ của trạm nhận phụ
thuộc H và i
Gởi thông điệp trả lời
Xóa thông điệp yêu cầu trong hàng đợi
Ra khỏi đoạn găng + cập nhật thông tin trong CSDL
Trang 30THUẬT TOÁN LOẠI TRỪ
TUƠNG HỖ (TT)
Đ S
Đ S
Chèn thông điệp nhận được vào hàng đợi
Đếm số các trạm đang hoạt động, giả sử là so_connec
Nếu thông điệp yêu cầu vào đoạn găng tương ứng thông điệp trả lời cho nó là đang ở đầu hàng đợi
Giải thuật xử lý khi nhận thông điệp có T=”ACK”
(1)
Kiểm tra lượng thông điệp từ các trạm khác gởi về trạm yêu cầu tương ứng, giả sử là so_ACK_Return
Nếu so_Connec=so_ACK_Return+1
Xóa tất cả các thông điệp trả lời tương ứng
Tiến trình vào đoạn găng, cập nhật lại CSDL cho các trạm
Đưa thông điệp yêu cầu vào lại hàng đợi
Kết thúc
Trang 31TRIỂN KHAI CHƯƠNG
TRÌNH
Trang 32PHÁT BiỂU BÀI TOÁN
Hãy viết chương trình mô phỏng quá trình phát và nhận thông điệp trong hệ phân tán
Trang 33MÔ HÌNH BÀI TOÁN
S3
S1
S2
Mạng TCP/IP
Mỗi trạm sử dụng bộ nhớ tất thời hoặc đĩa cứng của mình trong quá trình xử lý thông tin và cập nhật cơ sở dữ liệu dùng chung cho chính trạm đó.
Việc trao dữ liệu của hệ thống được tiến hành thông qua sự trao đổi thông điệp giữa các trạm với nhau.
Trang 34MÔ HÌNH BÀI TOÁN
Mỗi trạm cài đặt một chương trình gồm hai tiến trình.Trong đó một tiến trình có nhiệm vụ phát đi các thông điệp yêu cầu cung cấp hoặc kiến nghị vị trí tại tài nguyên găng, tiến trình còn lại nhận các thông điệp từ các tiến trình phát Trên mỗi trạm đều có xây dựng một hàng đợi, dùng để lưu trữ các thông điệp từ các tiến trình phát
Như vậy, tại mỗi trạm nào đó, nếu có một yêu cầu muốn đoạn găng thì tiến trình phát tại trạm này sẽ gởi thông điệp đến các trạm khác và ngay
cả chính nó.Những thông điệp này sẽ được tiến trình nhận và đưa vào
hàng đợi cục bộ tại trạm Sau đó tùy theo giải thuật xử lý mà ta biết được
là nó có thể vào được hay không?
Trang 35MÔ HÌNH BÀI TOÁN
Queue của Trạm
Ghi Nhận
Trang 36DEMO CHƯƠNG TRÌNH