이전 포스팅에서 Race Condition에 대해서 설명하면서, 공유 자원을 동시에 쓰지 않기 위해 한 번에 하나의 프로세스만 접근하도록 한다는 해결책을 언급하였다.
[운영체제] Race Condition(경쟁 상태)
✔️ Race Condition(경쟁 상태) 정의Race Condition(경쟁 상태) 이란?경쟁 상태란 두 개 이상의 쓰레드가 공유자원에 대해 접근하려고 서로 경쟁하는 것이다. 다르게 말하면, 공유 자원에 대해 여러 쓰
cse-gr.tistory.com
이번 포스팅에서는 그 해결책을 구체적으로 알아보자 !
공유된 자원에 여러 프로세스가 동시에 접근하면, Race Condition 이라는 문제가 발생하고
이때 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근 할 수 있도록 1) Semaphore 와 2) Mutex를 사용한다.
✔️ Semaphore [ 여러 개의 화장실이 있는 식당 ]
Semaphore 란?
공유 자원을 사용하고 있는 스레드/프로세스 수를 관리하는 하나의 공통된 값을 이용해 공유 자원에 대한 접근을 제한 하는 방법
- 공유 자원에 접근할 수 있는 쓰레드/프로세스의 최대 허용치만큼 동시에 사용자가 접근 가능
- 접근 가능한 스레드/프로세스의 수를 의미하는 변수는 운영체제나 커널에 저장되며, 모든 스레드가 확인 가능
- 각 프로세스는 세마포어의 값을 확인하고 변경할 수 있다.
✔️ Mutex [ 하나의 화장실만 있는 식당 ㅠㅠ ]
Mutex 란?
한 프로세스에 의해 소유될 수 있는 Key를 이용해 공유 자원에 대한 접근을 제한 하는 방법
- 한 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제 기법 Key에 해당하는 어떤 객체(Object)가 있으며, 이 객체를 소유한 스레드/프로세스만 이 공유자원에 접근할 수 있다.
- 공유 자원에 대한 접근을 조율하기 위해 lock 또는 동기화를 사용한다.
- Lock : 현재 임계 구역에 들어갈 권한을 얻음 / Unlock : 현재 임계 구역 사용을 완료했음 - 본인만 상태 변경 가능 !!
- 뮤텍스 객체는 두 스레드가 동시에 사용할 수 없다.
Semaphore 와 Mutex를 설명하기 위해 가장 유명한 설명인 식당 화장실을 예시로 들어 설명해보자 !
✔️ Semaphore vs Mutext 무슨 차이?
화장실을 이용하는 사람 : 쓰레드 or 프로세스
화장실 : 공유자원
Semaphore (세마포어)
세마포어는 손님이 화장실을 쉽게 이용할 수 있는 레스토랑이다. 세마포어는 화장실 여러 칸이 있고, 화장실 입구에는 현재 화장실의 빈 칸 개수를 보여준다.
만약 화장실에 가고 싶다면, 입구에서 빈 칸 개수를 확인하고 빈 칸이 있다면 빈 칸 갯수를 바꾸고 화장실에 간다.
그리고 화장실에서 나올 땐 빈 칸 개수를 하나 더해준다.
빈 칸이 없는경우는 당연히 빈 칸이 생길 때까지 기다려야한다!!
이 때, 화장실 빈칸의 개수는 현재 공유자원에 접근할 수 있는 쓰레드/ 프로세스의 개수이다.
Mutext (뮤텍스)
뮤텍스는 화장실이 하나밖에 없는 레스토랑이다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아야한다.
카운터에 열쇠가 있으면 화장실에 사람이 없다는 뜻이고, 그 열쇠를 가지고 화장실에 갈 수 있다.
카운터에 열쇠가 없다면, 열쇠를 기다려야한다.
이때, 화장실 열쇠(key)는 공유자원에 접근하기 위해 필요한 오브젝트이다.
- Mutex는 동기화 대상이 only 1개일 때 사용 가능
- Semaphore는 동기화 대상이 1개 이상일 때 사용가능
#참고
https://gyoogle.dev/blog/computer-science/operating-system/Semaphore%20&%20Mutex.html
'CS 지식 > 운영체제' 카테고리의 다른 글
[운영체제] 페이지 교체 알고리즘 (0) | 2024.08.26 |
---|---|
[운영체제] Paging(페이징) 과 Segmentation(세그먼테이션) (0) | 2024.08.25 |
[운영체제] Race Condition(경쟁 상태) (0) | 2024.08.24 |
[운영체제] 데드락(DeadLock) (0) | 2024.08.22 |
[운영 체제] CPU Scheduling (1) | 2024.08.22 |