-
[OS] 세마포어(Semaphore)와 뮤텍스(Mutex)의 차이OS 2020. 7. 6. 15:35728x90
세마포어의 정의
- 공유된 자원의 데이터를 여러 프로세스나 스레드가 접근하는 것을 제어하는 방법
- 즉, 병행처리를 위한 동기화 기법
세마포어 동작 원리
- 세마포어 값을 감소시킴
- 값이 음수가 아니면 프로세스는 계속 수행
- 값이 음수가 되면 semWait을 호출한 프로세스는 블록됨
semWait 연산
- 세마포어 값을 증가시킴
- 값이 양수가 아니면(0 또는 음수) semWait연산에 의해 블록된 프로세스를 깨움
semSignal 연산
세마포어의 종류
- 동시에 사용가능한 자원에 대해 사용
- 임계 영역 안에 스레드나 프로세스가 들어오면 카운트를 증가시켜 일정 숫자만큼의 스레드만 사용하게함
카운팅 세마포어(Counting Semaphore)
- 값으로 0 또는 1만 가질 수 있음
이진 세마포어(Binary Semarphore)
뮤텍스
- 세마포어와 마찬가지로 병행 처리를 위한 동기화 기법 중 하나
- 이진 세마포어와 같이 초기 값을 1과 0을 가짐
- 임계 영역에 들어갈 때 Lock을 걸어 다른 프로세스 또는 쓰레드가 접근하지 못하도록 하고 임계 영역에서 나와 해당 Lock을 Unlock함
세마포어와 뮤텍스의 차이
- 세마포어는 공유 자원에서 세마포어의 변수 만큼의 프로세스나 쓰레드가 접근할 수 있음
- 뮤텍스는 오직 1개의 프로세스나 쓰레드만 접근 할 수 있음
접근 프로세스(쓰레드)의 수
- 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제 할 수 있음
- 뮤텍스는 Lock을 획득한 프로세스만 그 락을 해제 할 수 있음
다른 프로세스의 Lock 해제
728x90'OS' 카테고리의 다른 글
[OS] 교착상태(Dead Lock) (0) 2020.07.05 [OS] 스케줄러(Scheduler)란? (0) 2020.06.19 [OS] Process와 Thread (0) 2020.06.17 [OS] 운영체제란? (0) 2020.06.16