Nội dung trình bày Yêu cầu bài toán Hướng giải quyết bài toán Thuật toán loại trừ tương hỗ Thuật toán Lamport cải tiến Ricart-Agrawala Cách xác định giá trị đồng hồ logic Xây
Trang 1ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
TIỂU LUẬN MÔN HỌC
LẬP TRÌNH MẠNG
Đề tài :
VIẾT CHƯƠNG TRÌNH CÀI ĐẶT THUẬT TOÁN LAMPORT TRÊN n
SERVER, n>3
SERVER, n>3
GVHD: PGS.TS LÊ VĂN SƠN HVTH: Trần Ngọc Chinh
LỚP: KHMT – K17
GVHD: PGS.TS LÊ VĂN SƠN HVTH: Trần Ngọc Chinh
LỚP: KHMT – K17
Trang 2Nội dung trình bày
Yêu cầu bài toán
Hướng giải quyết bài toán
Thuật toán loại trừ tương hỗ
Thuật toán Lamport cải tiến (Ricart-Agrawala)
Cách xác định giá trị đồng hồ logic
Xây dựng cấu trúc các thông điệp
Kết luận
Demo chương trình
Trang 3Yêu cầu bài toán
Viết chương trình cài đặt thuật toán Lamport trên n SERVER, n>3
Xây dựng đa server theo kiểu ngang hàng và có khả năng phát và nhận thông điệp
Xây dựng cấu trúc các loại thông điệp trao đổi giữa các server
Xây dựng đoạn chương trình sắp xếp các thông điệp đến căn cứ vào giá trị đồng hồ Lamport
Xây dựng chương trình quan sát trình tự sắp xếp tại các server trên màn hình
Trang 4Hướng giải quyết
Sử dụng thuật toán loại trừ tương hỗ
Sử dụng thuật toán Lamport cải tiến (Ricart-Agrawala)
Xây dựng cấu trúc thông điệp trao đổi giữa các Server
Viết chương trình demo dựa trên nền tảng lý thuyết và ngôn ngữ Java
Trang 5Thuật toán loại trừ tương hỗ
Một tiến trình khi sử dụng xong tài nguyên, sẽ truyền một thông điệp giải phóng đến các tiến trình
khác
Trật tự có được tại trạm cung cấp có thể không
giống như trật tự phát
Nếu có nhiều thông điệp đến cùng một lúc thì việc sắp xếp chúng phải theo kiểu loại trừ trương
hỗ trong hàng đợi cục bộ của trạm có chứa chương
trình cung cấp
Trang 6 Giới thiệu thuật toán
Ricart-Agrawala là một thuật toán để loại trừ lẫn nhau trên một hệ phân tán
Là một thuật toán mở rộng và tối ưu hóa của Lamport, bằng cách loại bỏ được sự cần thiết phải phát hành các tin nhắn
Được phát triển bởi Glenn Ricart và Ashok
Thuật toán Ricart-Agrawala
Trang 7Thuật toán Ricart-Agrawala (tt)
Nội dung thuật toán
Khi Pi yêu cầu tài nguyên:
Tiến trình Pi gửi thông điệp Request(t i ,i) đến tất
cả các tiến trình kể cả bản thân nó
Khi một tiến trình Pk nào đó nhận được yêu cầu
từ Pi:
• Pk sẽ gửi thông điệp Reply cho Pi nếu: tài nguyên đang
rỗi hoặc là yêu cầu được phát sinh sớm nhất.
• Còn lại yêu cầu sẽ bị trì hoãn (deferred).
Trang 8Thuật toán Ricart-Agrawala (tt)
Khi Pi yêu cầu tài nguyên:
P1
P2 P3
Request(P1,8) Request(P1,8) Request(P1,8)
1
1
1
Request(P2,12)
Request(P2,12)
Request(P2,12)
2
2
2
Tiến trình P1 yêu cầu tài nguyên
Trang 9Thuật toán Ricart-Agrawala (tt)
Khi Pi yêu cầu tài nguyên
P1
P2 P3
1
1
1 2
2
2
Quá trình phản hồi từ các tiến trình
Reply(is OK) Reply(is OK) Reply(is OK)
Yêu cầu bị trì hoãn
Yêu cầu bị trì hoãn
Trang 10Thuật toán Ricart-Agrawala (tt)
Khi và chỉ khi tiến trình đó nhận được thông
điệp Reply từ tất cả các trạm.
Khi Pi giải phóng tài nguyên:
Khi Pi giải phóng tài nguyên, nó sẽ gửi thông điệp
Release lại cho các tiến trình đang bị trì hoãn
trước đó
Trang 11Thuật toán Ricart-Agrawala (tt)
Khi giải phóng tài nguyên
P1
P2 P3
2
2
Release(is OK)
Trang 12Cách xác định giá trị đồng hồ logic
Bước 1: Tất cả các trạm (tiến trình - P i) sử dụng một
bộ đếm (đồng hồ - C i) với giá trị khởi tạo là 0
Bước 2: 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à thời gian đánh dấu (timestamp) của nó
Ci = Ci + d (d>0, thường d=1)
Bước 3: Mỗi thông điệp mang giá trị đồng hồ của
tiến trình gửi nó tại thời điểm gửi Khi Pi nhận một thông điệp với timestamp Cmsg, nó xử lý như sau:
1 Ci = Max(Ci, Cmsg)
2 Phát thông điệp.
3 Quay về Bước 2.
Trang 13Cách xác định giá trị đồng hồ logic (tt)
Ví dụ về thời gian logic Lamport
Trạm 1
Trạm 2
Trạm 3
Trạm 4
0
0
2
2
3
3
4
5
7 8
7
Thời gian vật lý
n Giá trị đồng hồ.
timestamp
Thông điệp
0
1
2
3 4
6
8
7
Các sự kiện logic đồng thời
Trang 14Xây dựng cấu trúc các loại thông điệp
Thiết kế cấu trúc chung của các thông điệp
Lamport @$ ServerRecei "|" ServerSend "|” CodeMess "|” Data $@
Trong đó:
Lamport: Trường giá trị của đồng hồ Lamport ServerRecei: Trường tên Server nhận dữ liệu ServerSend: Trường tên Server gửi dữ liệu CodeMess: Trường thể hiện mã loại thông điệp Data: Lưu trữ phần dữ liệu chính của thông điệp cần gửi (nếu có)
Trang 15Xây dựng cấu trúc các loại thông điệp(tt)
Trang 16Kết luận
Nắm được các lý thuyết cơ bản về hệ phân tán
và lập trình mạng phân tán
Tìm hiểu nguyên lý đồng bộ hóa các tiến trình
trong hệ tin học phân tán
Nắm được thuật toán đồng bộ hóa các tiến trình Lamport và thuật toán Ricart-Agrawala
Xây dựng cấu trúc của các thông điệp
Thiết kế thành công đa server theo kiểu ngang
hàng có khả năng phát và nhận thông điệp
Cài đặt chương trình sắp xếp các thông điệp đến căn cứ vào giá trị của đồng hồ lamport
Giám sát trình tự sắp xếp tại các server
Trang 17Kết luận
Chưa khắc phục được hiện tượng tràn bộ nhớ khi hoạt động ở chế độ tự động
Chưa kiểm soát tối ưu các thông điệp đến và đi khi đồng thời có nhiều thông điệp phát sinh
Hướng phát triển
Khắc phục những hạn chế trên
Nghiên cứu thêm các thuật toán tối ưu để đồng
bộ hóa các tiến trình
Đề tài này làm cơ sở để có thể xây dựng các
chương trình ứng dụng về hệ phân tán vào thực tế
Trang 18DEMO CHƯƠNG TRÌNH
Trang 19XIN CHÂN THÀNH
CÁM ƠN !!!