, 1. . , , -.
Inter Process Communications (IPC), . IPC , .
. , . . , , , - . . , .
. , , . , .
, ( ) , . , , , .
, . , . , - , -. - , .
|
|
. , , , , , , . , , Ctrl+C.
, , , .
, . , , , , . , . , , , - . . , .
. , , , , .. , .
. , , (. 16). , . , , , , , , , , . , , :
1. .
2. ( ) ( ).
|
|
3. .
1, 2 A3, B1, B2 . , N. ( 1), ( 2), ( A3) , , , .
, N. , ( Bl) ( B2), . , N, , .
, , , N ( A3). N , . , , N , (. 17, ).
. , : , (. 17, ) , , (. 17, ). . . , , , .
5.2.
. , , , , , . , . . , , . , .
, , , , . , . . . , .
, . , , , .
. , , , . , 0, , 1, .
|
|
, .
, . , .
, . . . , , , 0, . , , , . , , , . , , . , (, , BTR BTS Pentium). , . .
: , , , , , , , - . .
. 18 , Windows NT. , EnterCr1t1ca1Section(). , , , . , (F(D)=0), (D) , , . , , LeaveCriticalSectlon(), , (F(D)=1), .
. , , . , .
|
|
. (Dijkstra) , . , , .
, V. S . V(S) P(S) :
- V(S): S 1 . , . S .
- P(S): S 1, . S=0 S, , , , , . .
V .
, S 0 1, , . , , , V , .
, , . N , . - - . , . - , , . , - , , .
: , f , = N, f = 0, (. 19).
- (), , . , 0 (.. ), - . , , V(f). - , , , .
. , , , , , , . . , . , N , , .
, , , , (, , ) , . .
|
|
. , , , . b (. 20). .
, (deadlocks), (clinch), . , () (b) -, .
, - (b), . (), . , -, . - , , -. , , .
. , , , . , , , , .
. 21, . , , . , , , . , -, , . , , . i .
(. 21, ), (. 21, ), (. 21, ).
, : . , . , , , . , , . .
, . . 22 Ri Tj, . . , , , , , . , 1 R1 R2, R1, R2 2. , .
- . . , , - , , - . , , , .
, .. , . , , . 21, , . , , , . , . , , , .
, , , . , , . , - , . .
, . , , , , , , . , .
, , . , , .
, , , , . , . . , . , . . . , , , .
, , , . : . , , . , , , . , . , - . . .
, . Wait(X), . , , Set(X).
, Wait(X), , . Wait() Set() MaitForSingleObject() SetEvent() Windows NT, DosSemWait() DosSemSet() OS/2, s1eep() wakeup() UNIX.
, . , . Wait() , , . , . , .
. -, Wait(X) , . -, ( , ) ( ) . , / , , .
, , .
, , , .
. , Wait(X1, 2, ), X1, 2 . , , .. . . . . -. . . , , Wait(X), .
-, - , , , , , .
, , , -. , , , , , (event), (mutex), .
, , .
-, - -, , , - .
. , , , Wait(X), . , , , , . , , . . - , , .
- ( , ) , , , . , , , , , , . - . Wait(X), , , . , , Set(X). , .
, . . , .. , , .. . , , , , . .
. . (Ctrl+C, Ctrl+Break), . (.. ), . .
. , , , (, ), , . , , .
, (). , , .
, , , , , , , . .