세마포어: 프로그래머 관점에서 동기화 문제를 해결
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된 프로세스가 없으면 아무 일도 일어나지 않는다
세마포어는 자원을 획득하기 위해서 프로그래머가 연산을 해주는것이고 모니터는 동시 접근을 막기위해 모니터 차원에서 지원한다. 서로 목적이 다르다
반응형
'CS(Computer Science) > 운영체제' 카테고리의 다른 글
[운영체제] 메모리 (0) | 2023.02.20 |
---|---|
[운영체제] 교착상태(deadlock) (0) | 2023.02.18 |
[운영체제] 프로세스 동기화의 고전적인 문제 (0) | 2023.02.08 |
[운영체제] Semaphores (0) | 2023.02.08 |
[운영체제] 프로세스 동기화 문제 & 해결방법 (0) | 2023.02.07 |
댓글