예지의 개발 로그포스 (Yeji's Log Force)

[OS] Mutual Exclusion의 방법과 유의점 본문

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

 

 

'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