cs/운영체제
6강-5. Process Synchronization 5
Tomato_Coffee
2023. 11. 6. 11:21
프로세스 동기화 (process synchronization) = 병행 제어( concurrency control)
- 모니터의 역할
- active 한 프로세스가 하나만 모니터 안에 있는 코드를 실행할 수 있게 한다.
- 프로그래머는 공유 데이터를 접근할 때, lock을 신경 쓸 필요가 없어진다.
- 예시
- A 프로세스가 모니터 안에 와서 공유 데이터를 접근하는 코드를 실행하고 있을 때, cpu를 빼앗겼다.
- B 프로세스가 모니터를 접근하는 코드를 들어오려고 한다.
- 그러나 A 프로세스는 active 한 상태로 모니터에 남아있다.
- 그래서 B 프로세스는 모니터안에 있는 코드를 실행시키지 못한다.
- 모니터 밖에 있는 큐에서 기다리게 된다.
- 그러면 언제 모니터 내부에 들어올 수 있는가?
- 1. 모니터 안에 있는 active 한 프로세스 개수가 0개
- 2. 내부에 있는 프로세스가 잠에 빠질때 .
- 그러면 언제 모니터 내부에 들어올 수 있는가?
- active 한 프로세스가 하나만 모니터 안에 있는 코드를 실행할 수 있게 한다.
wait() : 프로세스를 잠에 들게 한다.
- x.wait() : x라는 조건을 만족하지 못해서 잠에 빠진다.
- x.signal() : x에 잠들어 있는 프로세스를 깨워준다.
- 세마포어와 모니터는 목적이 다르다.
- 모니터는 동시접근을 막는 것을 모니터 차원에서 지원을 해준다.
- 세마포어는 자원을 획득하기 위해서 프로그래머가 알아서 p, v 연산을 해줘야 한다.