Tải bản đầy đủ (.ppt) (19 trang)

báo cáo tiểu luận môn lập trình mạng viết chương trình cài đặt thuật toán lamport trên n server

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (202.04 KB, 19 trang )

ĐẠ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
VIẾT CHƯƠNG TRÌNH CÀI ĐẶT
THUẬT TOÁN LAMPORT TRÊN n
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
2
Nội dung trình bày

Yêu cầu bài toán
Yêu cầu bài toán

Hướng giải quyết 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 loại trừ tương hỗ

Thuật toán Lamport cải tiến (Ricart-
Thuật toán Lamport cải tiến (Ricart-


Agrawala)
Agrawala)

Cách xác định giá trị đồng hồ logic
Cách xác định giá trị đồng hồ logic

Xây dựng cấu trúc các thông điệp
Xây dựng cấu trúc các thông điệp

Kết luận
Kết luận

Demo chương trình
Demo chương trình
3
Yêu cầu bài toán

Viết chương trình cài đặt thuật toán
Viết chương trình cài đặt thuật toán
Lamport trên n SERVER, n>3.
Lamport trên n SERVER, n>3.

Xây dựng đa server theo kiểu ngang hàng
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.
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
Xây dựng cấu trúc các loại thông điệp trao
đổi giữa các server.

đổi giữa các server.

Xây dựng đoạn chương trình sắp xếp các
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ồ
thông điệp đến căn cứ vào giá trị đồng hồ
Lamport.
Lamport.

Xây dựng chương trình quan sát trình tự
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.
sắp xếp tại các server trên màn hình.
4
Hướng giải quyết

Sử dụng thuật toán loại trừ tương
Sử dụng thuật toán loại trừ tương
hỗ.
hỗ.

Sử dụng thuật toán Lamport cải
Sử dụng thuật toán Lamport cải
tiến (Ricart-Agrawala)
tiến (Ricart-Agrawala)

Xây dựng cấu trúc thông điệp trao
Xây dựng cấu trúc thông điệp trao
đổi giữa các Server
đổi giữa các Server


Viết chương trình demo dựa trên
Viết chương trình demo dựa trên
nền tảng lý thuyết và ngôn ngữ
nền tảng lý thuyết và ngôn ngữ
Java
Java
5
Thuật toán loại trừ tương hỗ

Một tiến trình khi
Một tiến trình khi
sử dụng xong tài
sử dụng xong tài
nguyên
nguyên
, sẽ truyền một
, sẽ truyền một
thông điệp
thông điệp
giải phóng
giải phóng
đến các tiến trình khác.
đến các tiến trình khác.

Trật tự có được tại
Trật tự có được tại
trạm cung cấp
trạm cung cấp



thể không giống như trật tự phát.
thể không giống như trật tự phát.

Nếu
Nếu
có nhiều thông điệp đến cùng
có nhiều thông điệp đến cùng
một lúc
một lúc
thì việc sắp xếp chúng phải
thì việc sắp xếp chúng phải
theo kiểu
theo kiểu
loại trừ trương hỗ
loại trừ trương hỗ
trong
trong
hàng đợi cục bộ của trạm có chứa
hàng đợi cục bộ của trạm có chứa
chương trình cung cấp.
chương trình cung cấp.
6

Giới thiệu thuật toán
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
7
Thuật toán Ricart-Agrawala (tt)
Nội dung thuật toán
Nội dung thuật toán

Khi Pi yêu cầu tài nguyê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).
8
Thuật toán Ricart-Agrawala (tt)

Khi Pi yêu cầu tài nguyên:
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
Tiến trình P2 yêu cầu tài nguyên
9
Thuật toán Ricart-Agrawala (tt)

Khi Pi yêu cầu tài nguyên
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
10
Thuật toán Ricart-Agrawala (tt)

Khi nào Pi được sử dụng
Khi nào Pi được sử dụng
tài nguyên?
tài nguyên?

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
Khi Pi giải phóng tài
nguyên:
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 đó.
11
Thuật toán Ricart-Agrawala (tt)

Khi giải phóng tài nguyên

Khi giải phóng tài nguyên
P1
P2
P3
2
2
Release(is OK)
12
Cách xác định giá trị đồng hồ logic

Bước 1
Bước 1
:
:
Tất cả các trạm (
Tất cả các trạm (
tiến trình - P
tiến trình - P
i
i
) sử dụng
) sử dụng
một bộ đếm (
một bộ đếm (
đồng hồ - C
đồng hồ - C
i
i
) với giá trị khởi tạo là
) với giá trị khởi tạo là

0.
0.

Bước 2
Bước 2
:
:
Trước khi xử lý một sự kiện (
Trước khi xử lý một sự kiện (
gửi, nhận
gửi, nhận
hoặc ngắt
hoặc ngắt
), P
), P
i
i
xử lý như sau: tăng bộ đếm và
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
gán cho mỗi sự kiện, như là thời gian đánh dấu
(
(
timestamp)
timestamp)
của nó.
của nó.
C
C
i

i
= C
= C
i
i
+ d (
+ d (
d>0, thường d=1
d>0, thường d=1
)
)

Bước 3
Bước 3
:
:
Mỗi thông điệp mang giá trị đồng hồ
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
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 C
nhận một thông điệp với timestamp C
msg
msg
, nó xử
, nó xử
lý như sau:
lý như sau:
1. C
i

= Max(C
i
, C
msg
)
2. Phát thông điệp.
3. Quay về Bước 2.
13
Cách xác định giá trị đồng hồ logic (tt)

Ví dụ về thời gian logic
Ví dụ về thời gian logic
Lamport
Lamport
Trạm 1
Trạm 2
Trạm 3
Trạm 4
0
1
0
0
2
2
3
3
4
5
5
6

7
8
9 10
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
14
Xâ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
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ó)
15
Xây dựng cấu trúc các loại thông điệp(tt)
CodeMess Chức năng
REQ REQUEST - yêu cầu vào đoạn găng
REP REPLY – trả lời chấp nhận yêu cầu
REL RELEASE – giải phóng các yêu cầu đã bị trì hoãn
CON CONNECTION – mã yêu cầu kết nối
DIS DISCONNECTION – mã yêu cầu ngắt kết nối

Các mã loại thông điệp ( CodeMess)
16
Kết luận

Kết quả đạt được
Kết quả đạt được

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.
17
Kết luận

Hạn chế
Hạn chế

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
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ế.

18
DEMO CHƯƠNG TRÌNH
DEMO CHƯƠNG TRÌNH
19
XIN CHÂN THÀNH
XIN CHÂN THÀNH
CÁM ƠN !!!
CÁM ƠN !!!

×