ĐỀ TÀI:
ĐỒNG BỘ HÓA TIẾN TRÌNH
GVHD : PGS. TS LÊ VĂN SƠN
HVTH : NGUYỄN THỊ THÚY HOÀI
LỚP : KHOA HỌC MÁY TÍNH KHÓA 10
TIỂU LUẬN MÔN HỆ PHÂN TÁN
Nội dung trình bày
Tổng quan về hệ phân tán
Bài toán đồng bộ hóa tiến trình
Đồng bộ hóa tiến trình trong hệ phân tán
Công tơ sự kiện_chứng minh bài toán:
Sản xuất thứ i Tiêu thụ thứ i Sản xuất thứ (i+N)
Tổng quan về hệ phân tán
Mô hình hệ phân tán:
Chia xẻ
tài
nguyên
Tin cậy
Liên lạc Tăng
tốc
Bài toán đồng bộ hóa tiến trình
Giả sử có thanh ghi couter=5, register1 và
register2 là hai thanh ghi CPU cục bộ
Câu lệnh “counter++” được cài đặt như sau:
register1 = counter
register1 = register1 + 1
counter = register1
Tương tự, câu lệnh “counter ” được cài đặt như sau:
register2 = counter
register2 = register2 - 1
counter = register2
Kết quả khi
thực hiện hai
câu lệnh này
cùng một lúc là
gì? 4, 5 hay 6
Vấn đề cần giải quyết:
nhiều quá trình truy xuất và thao tác cùng dữ liệu đồng hành
kết quả của việc thực thi phụ thuộc vào thứ tự xác định
Giải quyết:
Miền găng
Loại trừ lẫn nhau
Bài toán đồng bộ hóa tiến trình (tt)
Đồng bộ hóa tiến trình trong hệ phân tán
Nguyên nhân:
Vấn đề truy cập tương tranh
Vấn đề hợp lực
Cần đồng bộ hóa tiến trình trong hệ phân tán
Bài toán người sản xuất người tiêu thụ
Giả sử
NP là số lượng sản phẩm sản xuất ra
NC là số lượng sản phẩm tiêu thụ tại thời điểm khởi sự.
Số lượng sản phẩm sản xuất so với số lượng sản phẩm
tiêu thụ không được quá N
Điều kiện
C chỉ tiêu thụ được một sản phẩm, nếu sản xuất sản
phẩm đó đã diễn ra, có nghĩa là, nếu NP – NC > 0
Tương tự, P chỉ sản xuất một thông tin, nếu NP – NC < N
Đồng bộ hóa tiến trình (tt)
Bài toán người sản xuất người tiêu thụ(tt)
Giả sử
Trạm P: NC’ ảnh của NC tăng khi nhận được thông
điệp từ C tiêu thụ mới đã diễn ra.
Trạm C: NP’ ảnh của NP khi nhận thông điệp từ P sản
xuất mới đã diễn ra.
Điều kiện
Trên trạm sản xuất : NP’ – NC > 0
Trên trạm tiêu thụ : NP – NC’ < N
Đồng bộ hóa tiến trình (tt)
Đồng bộ hóa tiến trình (tt)
Phương pháp trật tự từng
phần
Nếu A và B là hai sự kiện của cùng một trạm, A
thực hiện trước B ta có: A B.
Nếu A phát thông điệp bởi một trạm nào đó và
B là thu của thông điệp này thì ta có A B.
P
1
C
1
P
2
C
2
P
i
C
i
P
i+N
C
i+1
P
i+N+1
P
i
: Sản xuất
thứ i
C
i
: Tiêu thụ
thứ i
Quan hệ có trước trong mô hình người sản xuất-
người tiêu thụ
Công tơ sự kiện
STT Tên hàm Chức năng
1 Tang_len (E) Tăng nội dung công tơ lên 1 đơn vị. Cũng có nghĩa là một sự kiện nhóm E đến.
2 Truy_van (E) Cung cấp giá trị hiện hành của công tơ phối hợp với E
3 Cho (E,n) Treo tiến trình gọi chừng nào giá trị công tơ còn nhỏ hơn n.
Mỗi một công tơ là biến nguyên không lùi, được kết
hợp với một nhóm đặt biệt các sự kiện.
Được khởi động ngay khi thành lập
Ba hàm nguyên thủy của công tơ sự kiện:
Công tơ sự kiện (tt)
Trong bài toán người sản xuất và người tiêu thụ:
Hai công tơ sự kiện NP’ và NC’ được khởi động bằng giá trị 0
Hai biến nguyên NP và NC khởi gán giá trị 0, là cục bộ đối với người sản xuất P và người tiêu
thụ C
Chứng minh P
i
C→
i
P→
i+N
Chứng minh P
i
C→
i
Xét tại trường hợp sản xuất thứ i-1.
Tại PS, NP = i - 1.
Tại CS, NC = i - m (m>0)
NC’ = i - m và NP’ = i – 1
Giả sử PS không sản xuất nữa, CS tiếp tục tiêu thụ đến khi CS tiêu thụ đến sản phẩm thứ i-1 thì
NP’=NC=i-1
NP’-NC>0 không thỏa mãn
Tiêu thụ Ci không thể thực hiện trước sản xuất Pi
Chứng minh P
i
C→
i
P→
i+N
(tt)
Chứng minh C
i
P→
i+N
Xét tại trường hợp sản xuất thứ i-1.
Tại CS, NC = i - 1.
Tại PS, NP = (i – 1) + m (m>0)
NC’ = i – 1 và NP’ = (i – 1) + m
Giả sử CS không tiêu thụ nữa, PS tiếp tục sản xuất đến khi PS sản xuất đến sản phẩm thứ i-1+N thì
NP’ = i – 1 + N và NC’ = i – 1
NP – NC’ = (i – 1 + N) – (i – 1) = N
NP – NC’ < N không thỏa mãn
Pi+N không thể có trước Ci
Chứng minh P
i
C→
i
P→
i+N
(tt)
Như vậy, quan hệ sản xuất và tiêu thụ có quan hệ có trước
như sau:P
i
→ C
i
→ P
i+N
P
1
C
1
P
2
C
2
P
i
C
i
P
i+N
C
i+1
P
i+N+1
P
i
: Sản xuất thứ i
C
i
: Tiêu thụ thứ i
Thuật toán tại trạm sản xuất
PS:
Vòng lặp
Nếu receive(CS)
tang(NC’)
cho(NC’,NP – N + 1)
san_xuat()
send(CS)
NP = NP + 1
Kết thúc vòng lặp
Thuật toán tại trạm tiêu thụ
CS:
Vòng lặp
Nếu receive(PS)
tang(NP’)
cho(NP’,NP + 1)
tieu_thu()
send(PS)
NC = NC + 1
Kết thúc vòng lặp