공유된 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있다. 이러한 문제를 제한하기 위해 고안된 방법이 세마포어와 뮤텍스이다. 이때 각 프로세스가 접근하는 공유 데이터 부분을 임계 구역(Critical Section)이라고 한다.
- 세마포어: 멀티 프로세스 환경에서 공유 자원에 대한 접근을 제한하는 방법
- 뮤텍스: 임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술
상호배제(Mutual Exclusion)의 약자이다.
뮤텍스보다 세마포어가 좀 더 상위 개념이다.
세마포어의 P, V연산
- P연산: 임계 구역에 들어가기 전 수행 (프로세스 진입 여부를 자원의 개수 S를 통해 결정)
- V연산: 임계 구역에서 나올 때 수행 (자원 반납 알림, 대기 중인 프로세스를 깨우는 신호)
P연산 후 Toilet(임계 영역)을 이용한다.
모든 Toilet이 사용 중이기 때문에 대기자가 발생했다.
세 번째 Toilet이 사용을 끝내고 V연산을 하면 대기하던 사람이 P연산을 수행한 후 Toilet을 이용하게 된다.
뮤텍스
해당 접근을 조율하기 위해 lock과 unlock을 사용한다.
- lock: 현재 임계 구역에 들어갈 권한을 얻어온다. (이미 점유 중이라면 종료할 때까지 대기)
- unlock: 현재 임계 구역을 모두 사용했음을 알린다.
Toilet (임계 영역)을 이미 점유하고 있기 때문에 임계 영역 사용자는 lock 상태이다.
Toilet을 사용하고 싶어하는 사람들이 증가했다. 하지만 lock 상태이므로 unlock이 될 때까지 기다려야 한다.
unlock이 되고 다음 차례가 lock한 다음 Toilet을 사용한다.
참고
https://medium.com/@kwoncharles/%EB%AE%A4%ED%85%8D%EC%8A%A4-mutex-%EC%99%80-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4-semaphore-%EC%9D%98-%EC%B0%A8%EC%9D%B4-de6078d3c453
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
[운영체제] 파일 시스템과 디렉토리 구조 (0) | 2023.09.07 |
---|---|
[운영체제] 페이징 교체 알고리즘 (0) | 2023.05.25 |
[운영체제] 페이징과 외부 단편화, 내부 단편화 (2) | 2023.05.02 |
[운영체제] 교착상태와 은행원 알고리즘 (0) | 2023.05.01 |
동기(Synchronous)와 비동기(Asynchronous), 블로킹(Blocking)과 논블로킹(Non-Blocking) (0) | 2023.03.09 |