본문 바로가기
CS(Computer Science)/운영체제

[운영체제] Concurrency Control 병행 제어

by whdgus928 2023. 2. 15.

세마포어: 프로그래머 관점에서 동기화 문제를 해결

 

Monitor

- 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct

- 프로그래밍 언어차원에서 공유데이터에 동시접근하는 문제를 모니터가 자동으로 해결함 프로그래머에 부담을 줄여주는 방법

- 공유데이터에 접근할때는 접근 코드가 있는데 모니터 안에 정의되어있다. 모니터 안에 정의된 코드로만 접근할 수 있게 한다.

- 모니터 내에서는 한번에 하나의 프로세스만이 활동 가능

- 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음

- 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 Condition variable 사용

- wait와 signal 연산에 의해서만 Condition variable 접근가능

 

x.wait():

- x.wait을 invoke한 프로세스는 다른 프로세스가 x.signal을 invoke하기 전까지 suspend된다

x.signal()

- 정확하게 하나의 suspend된 프로세스를 resume한다.

- suspend된 프로세스가 없으면 아무 일도 일어나지 않는다

 

세마포어는 자원을 획득하기 위해서 프로그래머가 연산을 해주는것이고 모니터는 동시 접근을 막기위해 모니터 차원에서 지원한다. 서로 목적이 다르다

반응형

댓글