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에 걸리지 않도록)