PD-XCh a n g e Vi ewF-XCh a n g e Vi ewerer!O Giáo trình phân tích nguyên lý làm việc của các loại tiểu trình và tiến trình phần 3 - Pdf 21

Sơ đồ này đơn giản, dễ cài đặt nhưng cần phải có sự hỗ trợ của vi xử lý.
Ngoài ra nó còn một hạn chế lớn là gây lãng phí thời gian xử lý của processor do
tồn tại hiện tượng chờ đợi tích cực trong sơ đồ (While (TestAndSetlock(lock))
DO;). Hiện tượng chờ đợi tích cực là hiện tượng processor chỉ chờ một sự kiện nào
đó xảy ra mà không làm gì cả.
 Tóm lại: Việc sử dụng các chỉ thị phần cứng đặc biệt để tổ chức điều độ tiến
trình qua đoạn găng, hay còn gọi là tổ chức truy xuất độc quyền trên tài nguyên
găng, có những thuận lợi và bất lợi sau đây:
Thuận lợi:
 Nó thích hợp với một số lượng bất kỳ các tiến trình cả trên hệ hệ thống
Uniprocessor và hệ thống Multiprocessor.
 Nó khá đơn giản cho nên dễ xác định độ chính xác.
 Nó có thể được sử dụng để hỗ trợ cho nhiều đoạn găng; mỗi đoạn găng
có thể định nghĩa cho nó một biến riêng.
Bất lợi:
 Trong khi một tiến trình đang chờ đợi được vào đoạn găng thì nó tiếp
tục làm tốn thời gian xử lý của processor, mà ta gọi là chờ đợi tích cực.
 Sự đói tài nguyên có thể xảy ra. Khi một tiến trình rời khỏi một đoạn
găng, bộ phận điều độ tiến trình phải chọn một tiến trình trong số nhiều tiến
trình ngoài đoạn găng để cho nó vào đoạn găng. Việc chọn này có thể dẫn
đến hiện tượng có một tiến trình đợi mãi mà không thể vào đoạn găng được.
 Sự tắc nghẽn có thể xảy ra. Hãy xét một tình huống trên một hệ thống
uniprocessor. Tiến trình P1 thực thi chỉ thị đặc biệt (TesAndSetLock, Exchange) và
vào đoạn găng của nó. P1 sau đó bị ngắt để nhường processor cho P2, P2 là tiến
trình có độ ưu tiên cao hơn. Nếu như P2 cũng định sử dụng tài nguyên như P1, P2
sẽ bị từ chối truy xuất bởi vì cơ chế độc quyền. Do đó P2 sẽ đi vào vòng lặp busy-
waitting. Tuy nhiên, P1 sẽ không bao giờ được cấp processor để tiếp tục vì nó có
độ ưu tiên thấp hơn so với P2.
II.3.6. Các giải pháp dùng biến khoá
II.3.3.a. Dùng biến khoá chung
Xuất phát từ nguyên tắc cơ bản của tổ chức độc quyền là, tại mỗi thời điểm chỉ có

d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e

Trong sơ đồ điều độ này tiến trình P được viết như sau:
Procedure P(Lock: integer);
Begin
Repeat
While Lock = 1 DO ; {đợi cho đến khi Lock = 0}
Lock :=1; {thiết lập quyền vào đoạn găng}
<Đoạn găng của P>; {vào đoạn găng}
Lock:= 0; {thông báo là đã rời đoạn găng }
<Đoạn không găng>;
Until .F.
End;
{ }
Sơ đồ điều độ dùng biến khoá chung này đơn giản, dễ xây dựng nhưng vẫn
xuất hiện hiện tượng chờ đợi tích cực, khi chờ cho đến khi Lock = 0 (While Lock =
1 DO;). Hiện tương chờ đợi tích cực gây lãng phí thời gian của processor.
Nếu một tiến trình trong đoạn găng không thể ra khỏi đoạn găng, thì các tiến
trình chờ ngoài đoạn găng có thể chờ đợi vô hạn (vì Lock không được đặt lại = 0).
II.3.3.b. Dùng biến khoá riêng
Để khắc phục hạn chế của phương pháp dùng biến chung, các hệ điều hành có thể
dùng giải pháp biến riêng để tổ chức điều độ tiến trình. Mỗi tiến trình sử dụng một
biến khoá Lock riêng, tương ứng với một tài nguyên găng trong hệ thống. Biến
khoá riêng của tất cả các tiến trình đều được khởi gán bằng 0, tức là chưa vào đoạn
găng
Theo đó, mỗi tiến trình trước khi vào đoạn găng ứng với một tài nguyên
găng nào đó thì trước hết phải kiểm tra biến khoá riêng, tương ứng với tài nguyên
găng mà tiến trình muốn truy xuất, của tất cả các tiến trình còn lại:
 Nếu tồn tại một biến khoá riêng của một tiến trình nào đó bằng 1, Lock
Click to buy NOW!
P
D

.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c

Lock1 := 0; {P1 ra khỏi đoạn găng}
<Đoạn không găng của P1>;
Until .F.
P2: Repeat {tiến trình P2}
While Lock1 = 1 Do; {P1 đang ở trong đoạn găng }
Lock2 := 1; {P2 thiết lập quyền vào đoạn găng}
<Đoạn găng của P2>;
Lock2 := 0; {P2 ra khỏi đoạn găng}
<Đoạn không găng của P2>;
Until .F.
ParEnd
END.
{ }
Sơ đồ này đơn giản dễ cài đặt. Một tiến trình nào đó ở ngoài đoạn găng bị
blocked sẽ không ngăn cản được các tiến trình khác vào đoạn găng, nhưng nếu tiến
trình trong đoạn găng bị lỗi không thể ra khỏi đoạn găng , Lock luôn luôn = 0, thì
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V

h
a
n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m

Sleep và Wakeup được hệ điều hành cung cấp để sử dụng cho mục đích này:
 Khi tiến trình chưa đủ điều kiện vào đoạn găng nó sẽ thực hiện một lời
gọi hệ thống để gọi Sleep để chuyển nó sang trạng thái blocked, và tiến trình được
gọi này đưa vào hàng đợi để đợi cho đến khi có một tiến trình khác gọi thủ tục
Wakeup để giải phóng nó ra khỏi hàng đợi và có thể đưa nó vào đoạn găng.
 Một tiến trình khi ra khỏi đoạn găng phải gọi Wakeup để đánh thức
một tiến trình trong hang đợi blocked ra để tạo điều khiện cho tiến trình này vào
đoạn găng.
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r
w
w
w

e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Như vậy giải pháp này được áp dụng trên nhóm các tiến trình hoạt động
đồng thời có trao đổi thông tin với nhau, và các tiến trình phải hợp thác với nhau để
hoàn thành nhiệm vụ. Các tiến trình này liên lạc với nhau bằng cách gởi tín hiệu
cho nhau. Một tiến trình trong hệ thống này có thể bị buộc phải dừng (bị blocked)
cho đến khi nhận được một tín hiệu nào đó từ tiến trình bên kia, đó là tiến trình hợp
tác với nó.
Thực tế đã chỉ ra được rằng, nếu chỉ dùng hai thủ tục trên thì sơ đồ điều độ
sẽ không đáp ứng được các yêu cầu của công tác điều độ, do đó khi cài đặt các hệ

P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a

o
c
u
-
t
r
a
c
k
.
c
o
m
xem có tiến trình nào đang đợi trong hàng đợi hay không, nếu có thì đưa tiến
trình trong hàng đợi vào đoạn găng. Khi tiến trình gọi Up thì hệ thống sẽ
thực hiện như sau: S:= S + 1, nếu S <= 0 đưa một tiến trình trong F(s) vào
đoạn găng. Up được cài đặt như sau:
Procedure Up(s);
Begin
S := S + 1;
If S <= 0 Then
Begin
Exit(Q,F(s) ); {đưa tiến trình ra khỏi F(S)}
Status(Q) = ready ; {chuyển tiến trình sang ready}
Enter(Q, ready-list ); {đưa tiến trình vào ready list}
End;
End;
Sau đây là sơ đồ điều độ dùng Semaphore (sự đánh tín hiệu bằng cờ) cho 2
tiến trình P1 và P2, hai tiến trình này hoạt động đồng thời cùng truy xuất đến tài
nguyên găng tương ứng với semaphore (sự đánh tín hiệu bằng cờ) S. Tài nguyên

n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P

k
.
c
o
m
ParBegin
P(1);
P(2);
ParEnd;
END.
{ }
Ở đây chúng ta cần lưu ý rằng: Down và Up là các thủ tục của hệ điều hành,
nên hệ điều hành đã cài đặt cơ chế độc quyền cho nó, tức là các lệnh bên trong nó
không thể tách rời nhau. Nếu điều này không được thực hiện thì sơ đồ này trở nên
vô nghĩa. Hai thủ tục Down(S) và Up(S) mà chúng tôi đưa ra ở trên chỉ để minh
họa cho nguyên lý hoạt động của Down và Up.
Sử dụng semaphore (sự đánh tín hiệu bằng cờ) để điều độ tiến trình, mang lại
những thuận lợi sau:
 Mỗi tiến trình chỉ kiểm tra quyền vào đoạn găng một lần, khi chờ nó
không làm gì cả, tiến trình ra khỏi đoạn găng phải đánh thức nó.
 Không xuất hiện hiện tượng chờ đợi tích cực, nên khai thác tối đa thời
gian xử lý của processor.
 Nhờ cơ chế hàng đợi mà hệ điều hành có thể thực hiện gán độ ưu tiên
cho các tiến trình khi chúng ở trong hành đợi.
 Trị tuyệt đối của S cho biết số lượng các tiến trình đang đợi trên F(S).
Nên nhớ rằng, Down và Up là các thủ tục của hệ điều hành nên sơ đồ điều độ
sẽ bị thay đổi khi thay đổi hệ điều hành. Đây là một trở ngại của việc sử dụng
semaphore (sự đánh tín hiệu bằng cờ) để tổ chức điều độ tiến trình.
Các ví dụ sau đây thay cho sự giải thích về sơ đồ điều độ ở trên:
Ví dụ 1: Sự thực hiện của hai tiến trình P1 và P2 trong sơ đồ điều độ trên

e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h

tài nguyên găng này. Thứ tự yêu cầu sử dụng tài nguyên găng của các tiến trình,
cùng với thời gian mà tiến trình cần processor khi nó ở trong đoạn găng (cần tài
nguyên găng) và độ ưu tiên của các tiến trình, được mô tả như sau:  Có 6 tiến trình yêu cầu sử dụng tài nguyên găng tương ứng với S lần
lượt là: A B C D E F
 Độ ưu tiên của các tiến trình là (5 là độ ưu tiên cao nhất):
1 1 2 4 2 5
 Thời gian các tiến trình cần sử dụng tài nguyên găng là:
4 2 2 2 1 1
Nếu dùng sơ đồ điều độ semaphore (sự đánh tín hiệu bằng cờ) ở trên để tổ
chức điều độ cho 6 tiến trình này thì ta có được bảng mô tả sự thực hiện của các
tiến trình A, B, C, D, E, F như sau:
T Down/

Up
Tiến
trình
thực hiện

S
Tiến trình

hoạt động
Các tiến trình
trong hàng
đợi
0 - -
1

n
g
e

V
i
e
w
e
r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P

k
.
c
o
m
II.3.3.b. Giải pháp dùng Monitors
Giải pháp này được Hoar đề xuất năm 1974 sau đó vào năm 1975 được Brinch &
Hansnen đề xuất lại. Monitor là cấu trúc phần mềm đặc biệt được cung cấp bởi
ngôn ngữ lập trình, nó bao gồm các thủ tục, các biến và các cấu trúc dữ liệu được
định nghĩa bởi Monitor. Monitor được định nghĩa trong các ngôn ngữ lập trình như
pascal+, Modula–2, Modula-3. Monitor của Hoar có các tính chất sau đây:
1. Các biến và cấu trúc dữ liệu bên trong monitor chỉ có thể được thao tác
bởi các thủ tục được định nghĩa bên trong monitor đó.
2. Một tiến trình muốn vào monitor phải gọi một thủ tục của monitor đó.
3. Tại một thời điểm, chỉ có một tiến trình duy nhất được hoạt động bên
trong monitor. Các tiến trình khác đã gọi monitor phải hoãn lại để chờ
monitor rảnh.
Hai tính chất 1 và 2 tương tự như các tính chất của các đối tượng trong lập
trình hướng đối tượng. Như vậy một hệ điều hành hoặc một ngôn ngữ lập trình
hướng đối tượng có thể cài đặt monitor như là một đối tượng có các tính chất đặc
biệt.
Với tính chất thứ 3 monitor có khả năng thực hiện các cơ chế độc quyền, các
biến trong monitor có thể được truy xuất chỉ bởi một tiến trình tại một thời điểm.
Như vậy các cấu trúc dữ liệu dùng chung bởi các tiến trình có thể được bảo vệ bằng
cách đặt chúng bên trong monitor. Nếu dữ liệu bên trong monitor là tài nguyên
găng thì monitor cung cấp sự độc quyền trong việc truy xuất đến tài nguyên găng
đó.
Monitor cung cấp các công cụ đồng bộ hoá để người lập trình sử dụng trong
các sơ đồ điều độ. Công cụ đồng bộ hoá được định nghĩa để sử dụng trong các sơ
đồ điều độ như sau: Trong một monitor, có thể định nghĩa các biến điều kiện và hai

r
w
w
w
.
d
o
c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g

If f(c) <> Null Then
Begin
Exit(Q,f(c)); {Q là tiến trình chờ trên C}
Status(Q) = ready;
Enter(Q,ready-lits);
end;
End,
Trình biên dịch chịu trách nhiệm thực hiện việc truy xuất độc quyền đến dữ
liệu trong monitor. Để thực hiện điều này, hệ điều hành dùng một semaphore (sự
đánh tín hiệu bằng cờ) nhị phân. Mỗi monitor có một hàng đợi toàn cục lưu các tiến
trình đang chờ được vào monitor, ngoài ra mỗi biến điều kiện c cũng gắn với một
hàng đợi F(c).
Với mỗi nhóm tài nguyên găng, có thể định nghĩa một monitor trong đó đặc
tả tất cả các thao tác trên tài nguyên này với một số điều kiện nào đó. Sau đây là
cấu trúc một Monitor. Sau đây là cấu trúc của monitor:
Monitor <Tên monitor>
Condition <Danh sách các biến điều kiện>;
{ }
Procdure Action
1
(); {thao tác i}
Begin

End;
{ }
Procedure Action
n
(); {thao tác n}
Begin


c
u
-
t
r
a
c
k
.
c
o
m
Click to buy NOW!
P
D
F
-
X
C
h
a
n
g
e

V
i
e
w
e


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status