CS/OS
[OS] Mutual Exclusion의 방법과 유의점
Yeji Heo
2023. 2. 26. 16:23
Mutual Exclusion 방법
1. Compare & Swap
while문을 돌면서 크리티컬 섹션에 접근이 가능한 상태인지 (bolt=0 등) 계속체크하며 대기한다.
이 방식은 계속 cpu를 잡아먹는 busy_wating이 발생한다.
2. Semaphore
크리티컬 섹션에 들어가기 전에는 자원을 쓴다는 표시로
sem_wait (값을 감소), 자원을 다 썼으면 semSignal(값을 증가)를 처리해서 mutual_exclusion을 한다.
이건 busy_wating이 없다.
이 외에도 많은 방법이 존재한다.
Mutual Exclusion을 할 때 유의해야 할 점
1. 공유개체에 대해 한 번에 하나의 프로세스면 사용 가능.
2. deadlock이나 starvation이 없어야 함.
3. 프로세스를 사용하는 다른 프로세스가 없음에도 불구,크리티컬 섹션 접근을 거부하면 안 됨.
4. 프로세스는 제한된 시간 동안만 해당 크리티컬 섹션 내에 유지됨. (다른 프로세스들이 startvation에 걸리지 않도록)