Tải bản đầy đủ - 20 (trang)
Phần 2: BÀI TẬP

Phần 2: BÀI TẬP

Tải bản đầy đủ - 20trang

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 j
thì 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



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Phần 2: BÀI TẬP

Tải bản đầy đủ ngay(20 tr)

×