Operating System Concepts 질문 드려도 될까요?
제가 지금 운영체제 과목을 공부중인데..
이해가 잘 가지 않는 부분이 있어 이렇게 질문드립니다^^
Process Synchronization 중
동기화 하드웨어(Synchroniztion Hardware) 부분에서
TestAndSet 과 Swap을 이용하여 Critical Section Problem을 해결 하는 부분입니다.
----------------------------------------------------------------------------------
boolean TestAndSet (boolean *target)
{
boolean rv = *target;
*target = TRUE;
return rv:
}
void Swap (boolean *a, boolean *b)
{
boolean temp = *a;
*a = *b;
*b = temp:
}
do {
key = TRUE;
while ( key == TRUE)
Swap (&lock, &key );
// critical section
lock = FALSE;
// remainder section
} while ( TRUE);
이런 알고리즘입니다.
임계구역 문제 3개중
책에서는.. 'bounded-waiting 조건을 만족시키지 못한다' 라고 되어있습니다.
책에서 bounded waiting을 '프로세서그 임계 구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 임계 구역에 진입하도록 허용되는 횟수에 한계가 있어야
한다. 이 한계는 임의의 한 프로세스의 기아(Starvation)을 예방한다.' 라고 정의하고 있습니다.
그러면 이 TestAndSet 알고리즘은 Starvation을 발생시키는 알고리즘이라고 생각하면 되는건지 궁금합니다.
그리고 왜 bounded waiting조건을 만족시키지 못하는지 궁금합니다.
답변주시면 감사드리겠습니다^^
댓글 달기