목차
1. 세마포어
2. 뮤텍스
3. 모니터
세마포어
특징
● 동시에 접근할 수 있는 '허용 가능한 개수'를 가지고 있는 Counter 변수가 존재한다. 예를 들어, 화장실이 3칸이고, 열쇠가 3개라면 3명은 대기없이 바로 화장실을 사용할 수 있다.
● 세마포어는 Counter의 개수에 따라 두 가지로 나뉘는데, 1개이면 뮤텍스, 나머지를 세마포어라고 한다.
● 세마포어는 소유할 수 없다. 따라서 세마포어를 소유하지 않은 쓰레드가 세마포어를 해제할 수 있는 문제가 발생한다.
● busywaiting은 예전의 metaphores의 문제며, 현재는 진입하지 못하면 blocked가 기본이고, busywaiting이 blocked 보다 더 자원을 덜 쓸 경우에만 busywaiting을 사용한다.
뮤텍스
특징
● 뮤텍스는 상호배제이다. 따라서 세마포어와의 가장 큰 차이점은 ownership에 있다. 뮤텍스에서는 locked 되어서 기다렸던 쓰레드가 아니면 세마포어를 해제할 수 없다.
● 뮤텍스는 또한 Counter가 하나이다. 따라서 lock을 가진 사람만 키를 반환할 수 있다.
모니터
특징
● java의 Synchronized method가 모니터의 예시이다.
● 모니터는 공유 데이터를 캡슐화한 모듈이라고 생각하면 된다. 그 모듈 안이 동기화 되는 것이다.
● 모니터 안에는 단 하나의 프로세스만 들어갈 수 있다.
● 어떤 구조체로서 안에, condition과 절차들을 가지고 있다.
procedure는 자바에서 보는 wait(), signal()같은 것으로, 모니터 외부에서 사용 가능하다.
condition은 특정 큐를 지정해주는 것으로 c1.wait()을 호출하면 c1라는 큐에 프로세스를 대기상태로 넣을 수 있다.
장점
모니터를 사용하면, 병렬 프로그래밍을 좀 더 쉽게할 수 있으며, 실수를 줄일 수 있다.
단점
Monitor는 프로그래밍 언어의 일부처럼 실행된다. 따라서 컴파일러가 Monitor와 관련된 코드를 실행해야 한다. 이것이 컴파일러에게 부담을 준다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 주소 바인딩과 MMU (0) | 2022.07.18 |
---|---|
[운영체제] DeadLock과 그 해결방법 (0) | 2022.07.18 |
[운영체제] process Synchronization 문제 (0) | 2022.07.17 |
[운영체제] Process Synchronization 1 (0) | 2022.07.16 |
[운영체제] CPU 스케줄링 (0) | 2022.06.13 |