동기화 기법 : 뮤텍스락, 세마포어 모니터
뮤텍스락: 상호배제를 위한 동기화 도구
동시 접근이 안되는 공유자원이 하나만 있는 경우를 상정한 방식
탈의실 사용 유무를 어떻게 알까?
- 자물쇠의 사용 유무, 이 자물쇠 역할을 하는 것이 뮤텍스 락
세마포: 좀 더 일반화된 방식의 동기화 도구. 공유 자원이 여러 개 있을 때도 사용 가능
임계 구역 앞에서 멈춤 신호를 받으면 대기.
임계 구역 앞에서 가도 좋다는 신호를 받으면 임계구역 진입.
철도 신호기에서 유래한 단어이다.
세마포는 상호배제를 위한 동기화 뿐만 아니라, 실행 순서를 위한 동기화 제공도 한다.
사용자 입장에서 번거로운 세마포 단점을 보완. 실행 순서 제어를 위한 두가지 동기화 모두 제공
모니터는 공유자원과 공유자원에 접근하기 위한 통로를 묶어 관리한다.
이 공유 자원에 접근하고자 하는 프로세스와 스레드를 반드시 특정 인터페이스를 통해 접근하게 한다.
인터페이스를 위한 큐, 큐에 하나씩 기다리고 있다. 한 번에 하나의 프로세스
상호배제를 위한 동기화를 이룬다.
조건변수? 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수, wait, signal을 호출 할 수 있는 특별한 변수. 실행 순서를 제어할 수 있다.
각각의 조건변수에 대한 큐가 있다. 이런 큐들로써 프로세스나 스레드의 실행 순서를 제어할 수 있다.
상호배제를 위한 큐(한번에 하나의 프로세스 혹은 스레드만 모니터에 접근)와 조건변수를 위한 큐( 실행순서를 제어하기 위한 조건변수를 위한 큐) 는 다르다.
Signal: wait로 대기상태에 접근. 조건 변수를 실행상태로 변경해주는, 준비 상태로 변경해주는 연산이다. 시그널을 호출한 프로세스가 모니터를 떠난 뒤 프로세스가 실행할 수 있게 해주는 방법이 있고, 시그널을 호출한 프로세스의 실행을 일시 중단한 다음 실행하는 방법도 있다.
모니터엔 하나의 프로세스 혹은 스레드만 있어야 한다.
'CS' 카테고리의 다른 글
메인 메모리 (0) | 2024.03.10 |
---|---|
CPU 스케줄링 (1) | 2024.03.07 |
교착상태 Deadlock (0) | 2024.03.04 |
Thread 스레드, 멀티 프로세스, 멀티 스레드, IPC (0) | 2024.03.03 |
프로세스 - 메모리 영역, 상태와 계층 구조, PCB, fork, exec (0) | 2024.02.28 |