Tải bản đầy đủ
Phần 2: BÀI TẬP

Phần 2: BÀI TẬP

Tải bản đầy đủ

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

II. Jeton tuần hoàn
Để triển khai một ấn phong có hiệu quả, đầu tiên ta phải xác định hành trình của
nó trong mạng máy tính như thế nào. Phương pháp đơn giản nhất là lắp đặt các trạm nằm
trên một vòng theo một chiều xác định. Mỗi trạm chỉ được liên hệ với 2 trạm gần nhất.
Ta hãy xem xét một mạng được hoàn toàn nối với nhau có nghĩa là một tập hợp
gồm N trạm, trong đó một trạm có thể liên lạc với các trạm khác một cách dễ dàng. Một
số duy nhất bao gồm từ 0 đến N-1 được phân phối một lần cho toàn bộ trên từng trạm.
Trạm i đều có trạm hàng xóm phải hay còn gọi trạm kế tiếp sau mà số trạm của nó là
suc[i] và hàng xóm bên trái hay còn gọi là trạm liền kề trước mà số của nó là pred[i]. Sự
mô tả này cho ta hình dung một vòng tròn ảo. Khi hoạt động bình thường, N trạm được
thể hiện đầy đủ trên vòng tròn, lúc này ta có:
suc[i]=i+1 modulo N
pred[i]=i-1 modulo N
Ấn phong được cụ thể hoá trên một vài cấu hình của các biến trạng thái và quay
trên vòng tròn ảo luôn luôn theo một chiều xác định. Để vòng tròn hoạt động tốt thì cần
thiết phải xây dựng lại vòng tròn khi một trạm nào đó có sự cố.
Trong thuật toán Le Lann, ấn phong được cụ thể hoá bằng một thông điệp đặc biệt
và gọi là Jeton tuần hoàn trên vòng tròn. Như thế việc sự cố trên mạng có thể dẫn đến
mất jeton. Các biến trạng thái được duy trì trên mỗi trạm cho phép tái sinh jeton trong
trườn hợp bị mất.
Thuật toán triển khai ý tưởng này là:
- Jeton mang giá trị là v. Mỗi một trạm j có một biến trạng thái S[j]. Trước
khi phát lại Jeton vào mạng, các tác động như sau được thực hiện:
S[j]:=v
cho j ≠ 0
v:=v+1 mod K; S[j]:=v
cho j=0
- Mỗi một lần chuyển jeton trên trạm j, một đồng hồ bảo vệ được trang bị.
Nếu nó được phát động trước khi jeton đến thì j tham chiếu đến biến trạng
thái S[i] của trạm liền kề trước i=pred(j) trên vòng tròn.
Nếu một trong hai điều kiện sau được kiểm tra:
j>i và S[j] ≠ S[i]
hay jthì jeton được xem như đã bị mất. Trong trường hợp đó, trạm j cần phải tái sinh lại nó và
cho giá trị chính xác S[i] và tái trang bị đồng hồ bảo vệ.
Trong thuật toán Le Lann, ví dụ ta áp cho jeton một công tơ với các giá trị nguyên
mà duy nhất chỉ có trạm có jeton mới có thể tăng và tham chiếu. Các giá trị xuất phát từ
tham chiếu đó được xem như là kết quả của phép toán Phieu trên trạm.

Trang 12

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

III. Cung cấp tài nguyên. Vấn đề bế tắc
Tiến trình P đưa ra yêu cầu cung cấp tài nguyên e để thực hiện phép toán cài then
có tính loại trừ v_loai_tru_th(e). Ngoại trừ một số trường hợp đặc biệt, tất cả các tài
nguyên đều được truy cập theo kiểu loại trừ. Nếu việc cung cấp hoàn toàn hợp thức thì tài
nguyên này được trao cho P sử dụng. Ta nói tài nguyên này đã được P cài then, nếu
không thì P bị treo và P không cài then được tài nguyên này.
Trong hệ phân tán, ta sẽ tập trung xem xét các giao dịch Ti có thể sử dụng các tài
nguyên được định vị trên các trạm. Mỗi một giao dịch được triển khai nhờ một tập hợp
các tiến trình thể hiện là các đại diện của chúng trên các trạm khác nhau. Hai tiến trình
của cùng một giao dịch được định vị trên các trạm khác nhau có thể được thực hiện song
song. Nhằm thu hồi lại tài nguyên e trên trạm Sj, giao dịch Ti cho thực hiện phép toán
v_loai_tru_th(e) thông qua đại diện pij của mình trên trạm này.
Ngoại trừ một số trường hợp đặc biệt, việc cung cấp diễn ra không có thu hồi. Một
tài nguyên bị khoá bởi một tiến trình không thể rút nó về được. Như thế, nó cần phải
được giải phóng bởi tiến trình này một cách tường minh nhờ vào phép toán mở then cài
mo_then(e).
Như vậy có thể xảy ra rủi ro do bế tắc, khi các tiến trình truy cập loại trừ được
phân phối mà không có khả năng thu hồi và các tiến trình cần phải sử dụng đồng thời tài
nguyên.
Điều kiện xảy ra bế tắc
Một tiến trình thường sử dụng tài nguyên theo các bước tuần tự sau:
+ Xin phép sử dụng
+ Sử dụng tài nguyên
+ Giải phóng tài nguyên sau khi sử dụng.
Bế tắc xảy ra nếu 4 điều kiện sau xuất hiện đồng thời:
+ C1: Loại trừ lẫn nhau
+ C2: Giữ và chờ
+ C3: Không có đặc quyền
+ C4: Chờ vòng
C1 - Loại trừ lẫn nhau: Một tài nguyên bị chiếm giữ bởi một tiến trình và không
có tiến trình nào khác có thể sử dụng tài nguyên này.
C2 - Giữ và chờ: Mỗi tiến trình giữ ít nhất một tài nguyên và chờ các tài nguyên
khác để sử dụng. Các tài nguyên này đang bị tiến trình khác chiếm giữ.
C3 - Không có đặc quyền: Tài nguyên bị chiếm giữ chỉ có thể rỗi khi tiến trình tự
nguyện giải phóng tài nguyên sau khi đã sử dụng xong.

Trang 13

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

C4 - Chờ vòng: Một tập các tiến trình {P 1, P2, … Pn} có xuất hiện điều kiện chờ
vòng nếu P1 chờ tài nguyên do P2 chiếm giữ, P2 chờ tài nguyên do P3 chiếm giữ,…
và Pn chờ tài nguyên do P1 chiếm giữ.
IV. Chứng minh
Theo phương pháp Le Lamn, người ta phối hợp một bộ tuần tự cho một tài nguyên
găng. Người ta nhóm các bộ tuần tự trên một jeton duy nhất.
Theo giả thiết ta có : Một Jeton tuần hoàn trên mạng chứa các thông tin
- Các bộ tuần tự Si tương ứng cho tài nguyên găng R i, trong đó i ∈ [1..n], n
là số lượng tài nguyên.
- Mỗi bộ tuần tự Si bao gồm :
+ Các tiến trình truy cập tài nguyên này là Pj, trong đó j ∈ [1..k]
+ Tình trạng tài nguyên : TinhTrang(Ri) bao gồm 2 giá trị là (True, P j)
và (False,0)
• Đang sử dụng (True, Pj) : Giá trị True là đang bị sử dụng và P j
là tiến trình đang sử dụng tài nguyên Si
• Đang giải phóng (False,0) : Không có tiến trình nào sử dụng
T1
R1

T2

T3

R2

Ri
Jeton

1
2
3
4


1
2
3
4


S1

S2

1
2
3
4

Si

Ta cần chứng minh khi Jeton chạy qua tài nguyên R i chỉ cần rút ra một số thì sẽ
được chiến lược cung cấp không có rủi ro về bế tắc.
Như đã trình bày, để chiến lược cung cấp tài nguyên không có xảy ra bế tắc, hệ
thống phải đảm bảo không đồng thời xảy ra các điều kiện C1, C2, C3, C4.

Trang 14

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

Thật vậy, khi Jeton tuần hoàn trên mạng đến tài nguyên R i thuật toán được thể hiện
như sau :
- Kiểm tra tình trạng tài nguyên Ri
+ Nếu TinhTrang(Ri) = (True, Pj) : bỏ qua tài nguyên Ri
+ Nếu TinhTrang(Ri) = (False, 0) : chiếm giữ và sử dụng tài nguyên Ri
Bắt đầu
Nếu Ktra( Ri ) = True bỏ qua không chiếm giữ tài nguyên Ri
nếu không
ChiemGiu( Ri )
TinhTrang(Ri)= (True, Pj )
Kết thúc

Trong đó thủ tục Ktra( Ri ) được thực hiện như sau:
Ktra( Ri ) = False
Vòng lặp
Nếu TinhTrang(Ri) = (True, Pj ) thì Ktra(Ri ) = True
j : = j + 1 nếu j < k
Kết thúc vòng lặp

Với thuật toán trên chỉ cần khi Jeton chạy qua tài nguyên R i và rút ra giá trị phiếu
của tiến trình cần sử dụng tài nguyên R i. Vì khi có được quyền (ấn phong) mới có thể yêu
cầu và sử dụng tài nguyên, và số rút được là duy nhất nên không xảy ra sự chồng chéo về
việc sử dụng tài nguyên; ngoài ra việc sử dụng tài nguyên được đảm bảo giải phóng sau
thời gian xác định nên việc trao quyền và rút số được đảm bảo tại các trạm. Như vậy sẽ
không có rủi ro về bế tắc.
V. Ví dụ
Ta có ba tài nguyên R1, R2, R3 và năm tiến trình đòi hỏi tài nguyên là P 1, P2, P3, P4,
P5. Nhu cầu tài nguyên được bố trí như bảng sau :

R1

P1

P2

X

X

R2
R3

P3

P5

X
X

X

P4
X

X

X

X

Jeton tuần hoàn trên mạng chứa các bộ tuần tự của tài nguyên :
Trang 15

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

- S1 : (P1, P2, P4) và tình trạng (False,0)
- S2 : (P3, P4, P5) và tình trạng (False,0)
- S3 : (P1, P4, P5) và tình trạng (False,0)
* Vòng 1:
- Tại R1 :
TinhTrang(R1) = (False,0)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 1 của P1
nên cho phép P1 sử dụng tài nguyên
- Tại R2 :
TinhTrang(R1) = (True, P1)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Do không có tiến trình nào đang thực hiện
và tranh chấp tài nguyên R2 của P3 nên cho
phép P3 sử dụng tài nguyên
- Tại R3 :
TinhTrang(R1) = (True, P1)
TinhTrang(R2) = (True, P3)
TinhTrang(R3) = (False,0) → TinhTrang(R3) = (True, P1)

Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 3 của P1
nên cho phép P1 sử dụng tài nguyên
* Vòng 2: Giả sử P1 và P3 vẫn chưa giải phóng tài nguyên và tại vòng 3 P 3 và P1 đã
giải phóng tài nguyên.
* Vòng 3:
- Tại R1 :
TinhTrang(R1) = (False,0)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Trang 16

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 1 của P2
nên cho phép P2 sử dụng tài nguyên
- Tại R2 :
TinhTrang(R1) = (True, P2)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 2 của P4
nên cho phép P4 sử dụng tài nguyên
- Tại R3 :
TinhTrang(R1) = (True, P2)
TinhTrang(R2) = (True, P4)
TinhTrang(R3) = (False,0) → TinhTrang(R3) = (True, P4)
Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R3 của P4
nên cho phép P4 sử dụng tài nguyên
* Vòng 4: Giả sử tài nguyên được sử dụng vòng trên đã được thu hồi. Khi Jeton
tuần hoàn vòng 4 ta có các giá trị như sau:
- Tại R1 :
TinhTrang(R1) = (False,0)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 1 của P4
nên cho phép P4 sử dụng tài nguyên
- Tại R2 :
TinhTrang(R1) = (True, P4)
TinhTrang(R2) = (False,0)
TinhTrang(R3) = (False,0)
Trang 17

Tiểu luận môn học: Hệ Phân Tán

GVHD: PGS. TS. Lê Văn Sơn

Do không có tiến trình nào đang thực hiện
và tranh chấp tài nguyên R2 của P5 nên cho
phép P5 sử dụng tài nguyên
- Tại R3 :
TinhTrang(R1) = (True, P4)
TinhTrang(R2) = (True, P5)
TinhTrang(R3) = (False,0) → TinhTrang(R3) = (True, P5)
Do không có tiến trình nào đang thực
hiện và tranh chấp tài nguyên R 3 của P5
nên cho phép P5 sử dụng tài nguyên
Như vậy sau một số vòng tuần hoàn của Jeton tất cả các tiến trình P 1, P2,
P3, P4, P5 đều đã được cung cấp tài nguyên mà không bị bế tắc.

Trang 18

TÀI LIỆU THAM KHẢO
[1] Lê Văn Sơn, Bài giảng Hệ tin học Phân tán, Đại học Đà nẵng năm 2009.
[2] Lê Văn Sơn, Hệ Tin học Phân tán, Đại học Quốc gia Thành phố Hồ Chí
Minh năm 2002.
[3] George Coulouris – Jean Dollimore – Tim kindberg, Distributed systems,
Pearson Education năm 2005.
[4] Lê Văn Sơn, Giáo trình Kỹ thuật Mạng máy tính, Trường Đại học Bách khoa
Đà Nẵng, Đà Nẵng năm 1994.
[5] Andrew S. Tanenbaum Maarten Van Steen 2, Distributed Systems, Vrije
University, Amsterdam năm 2005.
[6] Mullender, Distributed Systems, Addison Wesley, 2nd, ed. năm 1993.
[7] Lê Văn Sơn, Giáo trình Lập trình Hệ thống và Hệ điều hành các máy tính,
Trường Đại học Kỹ thuật – Đại học Đà Nẵng, Đà Nẵng năm 2006.

MỤC LỤC
Phần 1: LÝ THUYẾT........................................................................................................................4
I. Các tài nguyên..........................................................................................................................4
II. Định nghĩa bế tắc....................................................................................................................4
III. Điều kiện xảy ra bế tắc..........................................................................................................5
IV. Đồ thị cấp phát tài nguyên.....................................................................................................5
V. Các phương pháp xử lýý́ bế tắc.................................................................................................6
VI. Ngăn chặn bế tắc....................................................................................................................6
VII. Thuật toán phát hiện bế tắc..................................................................................................7
VIII. Kết luận.............................................................................................................................10
Phần 2: BÀI TẬP.............................................................................................................................11
I. Bộ tuần tự...............................................................................................................................11
II. Jeton tuần hoàn......................................................................................................................12
III. Cung cấp tài nguyên. Vấn đề bế tắc.....................................................................................13
IV. Chứng minh..........................................................................................................................14
V. Ví dụ......................................................................................................................................15