justgo_developer

세마포어(Semaphore) 본문

IT/운영체제

세마포어(Semaphore)

다날92 2018. 1. 3. 19:27
728x90
반응형


세마포어(Semaphore)


Concurrency 문제를 해결하기 위해 semaphore 사용

즉, 공유된 자원에 여러 프로세스들이 동시에 접근하면서 문제가 발생하는데,

공유된 자원 속 하나의 데이터는 한번에 하나의 프로세스만 접근할수있도록 만들기 위해 사용


Semaphore : integer variable s

3가지 연산만 사용 가능

- Initialization operation : 음수가 아닌 값으로 초기화

- Wait operation : s--

- Signal operation : s++


■ semWait(s)

- 세마포어 값 감소

- 만약 값이 음수가 되면 프로세스는 블럭(대기)한다

- 음수가 아니면 프로세스는 계속 수행한다.


■ semSigna(s)

- 세마포어 값 증가

- 만약 값이 양수가 아니면 semWait 연산에 의해 블록된 프로세스를

ready상태로




       



● Semaphore 값이 0보다 크거나 같을때

- 세마포어 값은 block되지 않고 semWait을 수행해서 무사 통과할 수 있는 프로세스의 개수

● Semaphore 값이 음수일 때,

- Semaphore의 절대값은 semaphore queue에서 기다리고 있는 프로세스의 개수


**세마포어를 사용하면

- Busy-waiting 없음 : 세마포어 큐에서 기달림

- Starvation 해결 : 세마포어 큐에서 순서대로 처리함


■ Producer/Consumer 문제


-Infinite buffer



- Bounded buffer




◆ 오류인 경우

- mutual exclusion X



- Deadlock


728x90
반응형

'IT > 운영체제' 카테고리의 다른 글

메모리관리(memory management)  (0) 2018.01.06
교착상태(Deadlock)  (0) 2018.01.06
병행성(concurrency)  (0) 2018.01.02
스레드(Thread)  (0) 2018.01.02
Process Switching vs Mode Switching  (0) 2017.12.30