.


:




:

































 

 

 

 





, . hardware , / .

, , . , .

Test-and-Set ( 1)

Test-and-Set, 1, ,

int Test_and_Set (int *target){

int tmp = *target;
*target = 1;
return tmp;

}

-,

shared int lock = 0;

while (some condition) {

while(Test_and_Set(&lock));

Critical section

lock = 0;

Remainder section

}

, . , .

Swap ( )

Swap, , ,

void Swap (int *a, int *b){

int tmp = *a;
*a = *b;
*b = tmp;

}

Swap, , key :

shared int lock = 0;
int key;

while (some condition) {

key = 1;
do Swap(&lock,&key);
while (key);

Critical section

lock = 0;

Remainder section

}


 

6.

, . , , . , . , : H , L . , , , CPU burst ( ). , L , H, , , . H , , L , .

: , , .

, , , (Dijkstra) 1965 .

, , , , : P ( proberen ) V ( verhogen ). :

P(S): S <= 0 S; S = S 1;
V(S): S = S + 1;

: P S . 0, S 1. 0, , S 0, S 1. V S 1.

, , :

P(S): S <= 0 S; S = S 1;
V(S): , S S = S + 1;

- . (, ALGOL-68), . . P V, , , . P , , , FIFO.





:


: 2016-10-23; !; : 858 |


:

:

,
==> ...

1349 - | 1315 -


© 2015-2024 lektsii.org - -

: 0.008 .