Operating System Concepts 질문 드려도 될까요?

hidraw1의 이미지

제가 지금 운영체제 과목을 공부중인데..

이해가 잘 가지 않는 부분이 있어 이렇게 질문드립니다^^

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조건을 만족시키지 못하는지 궁금합니다.

답변주시면 감사드리겠습니다^^