상호배제: HW Solution

MoOrY·2022년 11월 11일
0

운영체제

목록 보기
10/20

TestAndSet(TAS) instruction

Test와 Set을 한번에 수행하는 기계어
기계어이므로 실행중 interrupt를 받지 않음을 보장한다(선점되지 않음)
여전히 busy waiting 방식이라 비효율적이란 단점이 있다.


TAS명령어
인수로 받은 값을 true로 바꾸고, 리턴값은 바꾸기 전의 인수값을 그대로 리턴한다

lock변수는 false로 초기화 되어 있으므로, 첫번째 while문에 false가 들어가므로
while문 탈출 후 임계지역에 진입한다. TAS에 의해 lock은 true가 된 상태
다른 프로세스가 임계지역에 들어가려 시도할땐 lock이 true인 상태이므로 임계지역 진입이 불가능하다.
진입한 이후 lock은 false가 되므로, 다른 프로세스가 임계지역 진입 가능하다

하지만 프로세스가 3개 이상일 경우 Bounded waiting조건을 위배한다.

1번이 일하고있고, 2번 3번이 대기하고 있을때,
1번이 일을 마쳤을 때 2번이 들어갈지, 3번이 들어갈지 알 수 없기 때문에
운이 나빠 2번이 계속 새치기 당한다면 영원히 기다리게 될 수도 있기 때문이다.

N-Process ME


이를 해결하기 위해 다음과 같은 방식이 제시되었다.

  1. 일을 마칠 때 lock을 false로 만드는것까진 동일. 하지만 waiting이라는 변수가 추가되었다
  2. 6번의 의미는 자신보다 번호가 큰 프로세스를 탐색하겠다는 의미. 대기중인 프로세스를 찾는다
  3. 대기 프로세스가 있으면, 순서대로 임계영역에 진입할 수 있도록 처리한다
  4. 대기중인 프로세스가 없다면 lock을 풀어주고 나간다.
profile
필기용 블로그입니다.

0개의 댓글