예지의 테크 로그포스 (Yeji's Tech Log Force)
[OS] Mutual Exclusion의 방법과 유의점 본문
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에 걸리지 않도록)
'CS > OS' 카테고리의 다른 글
[OS] VM, Trace, Dispatcher, Quantum (0) | 2023.03.01 |
---|---|
[OS] Suspend (0) | 2023.02.26 |
[OS] I/O techniques(IO에서 데이터를 전송할 때) (0) | 2023.02.26 |
[OS] The Memory Hierarchy (0) | 2023.02.26 |
[OS] 컴퓨터 시스템의 요소 (0) | 2023.02.26 |
Comments