뮤텍스(Mutex)와 세마포어(Semaphore)의 차이

쓰리원·2022년 5월 25일
0

운영체제

목록 보기
1/1
post-thumbnail

1. 동시성 프로그래밍

동시성 프로그래밍의 가장 큰 숙제는 ‘공유자원 관리’ 입니다. 이러한 공유 자원을 관리하다보면 교착상태(deadlock)에 빠지게 됩니다. 교착상태(deadlock)는 제한된 자원을 두고 프로세스나 스레드가 작업을 하지 않고 무한 대기에 빠지게 되는 것을 말합니다. 교착상태가 발생하기 위해서 다음과 같은 4가지 조건이 필요합니다.

상호 배제(Mutual exclusion), 점유 대기, 비선점, 순환 대기 이 중 상호 배제 조건을 해결하기 위한 방법이 뮤텍스(Mutex)와 세마포어(Semaphore)입니다.

2. Mutex

뮤텍스는 화장실이 하나 뿐이 없는 식당과 비슷합니다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야 합니다. 당신이 화장실을 가려고 하는데 카운터에 키가 있으면 화장실에 사람이 없다는 뜻이고 당신은 그 열쇠를 이용해 화장실에 들어갈 수 있습니다.

당신이 화장실에서 행복한 시간을 보내고 있는데 다른 테이블에 있는 어떤 남자가 화장실에 가고 싶어졌습니다. 이 남자는 아무리 용무가 급하더라도 열쇠가 없기 때문에 화장실에 들어갈 수 없습니다. 결국 남자는 당신이 용무를 마친 후 나올 때까지 카운터에서 기다려야 합니다.

곧이어 옆 테이블에 있는 남자도 화장실에 가고 싶어졌고 이 남자 또한 화장실에 들어가기 위해서는 카운터에서 대기해야합니다.

이제 당신이 화장실에서 나와 카운터에 키를 돌려놓았습니다. 이제 기다리던 사람들 중 맨 앞에있던 사람은 키를 받을 수 있고 이를 이용해 화장실에 갈 수 있습니다.

이것이 뮤텍스가 동작하는 방식입니다. 화장실을 이용하는 사람은 프로세스 혹은 쓰레드이며 화장실은 공유자원, 화장실 키는 공유자원에 접근하기 위해 필요한 어떤 오브젝트 입니다.

즉, 뮤텍스는 Key 에 해당하는 어떤 오브젝트가 있으며 이 오브젝트를 소유한 (쓰레드,프로세스) 만이 공유자원에 접근할 수 있습니다.

3. Semaphore

세마포어는 손님이 화장실을 좀 더 쉽게 이용할 수 있는 레스토랑 입니다. 세마포어를 이용하는 레스토랑의 화장실에는 여러 개의 칸이 있습니다. 그리고 화장실 입구에는 현재 화장실의 빈 칸 개수를 보여주는 전광판이 있습니다.

만약 당신이 화장실에 가고 싶다면 입구에서 빈 칸의 개수를 확인하고 빈 칸이 1개 이상이라면 빈칸의 개수를 하나 뺀 다음에 화장실로 입장해야 합니다. 그리고 나올 때 빈 칸의 개수를 하나 더해줍니다.

모든 칸에 사람이 들어갔을 경우 빈 칸의 개수는 0이 되며 이때 화장실에 들어가고자 하는 사람이 있다면 빈 칸의 개수가 1로 바뀔 때까지 기다려야 합니다.

사람들은 나오면서 빈 칸의 개수를 1씩 더하게 됩니다. 그리고 기다리던 사람은 이 숫자에서 다시 1을 뺀 다음 화장실로 들어갈 수 있습니다.

이처럼 세마포어는 공통으로 관리하는 하나의 값을 이용해 상호배제를 달성합니다. 세마포어도 아까와 똑같이 화장실이 공유자원이며 사람들이 쓰레드, 프로세스 입니다. 그리고 화장실 빈칸의 개수는 현재 공유자원에 접근할 수 있는 쓰레드,프로세스의 개수를 나타냅니다.

4. 요점 정리

1. 뮤텍스

한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제기법

2. 세마포어

Signaling mechanism. 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법

두 기법 모두 완벽한 기법은 아닙니다. 이 기법들을 쓰더라도 데이터 무결성을 보장할 수 없으며 데드락이 발생할 수도 있습니다. 하지만 상호배제를 위한 기본적인 기법이며 여기에 좀 더 복잡한 매커니즘을 적용해 동작하는 프로그램을 짤 수 있습니다.

5. reference

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

profile
가장 아름다운 정답은 서로의 협업안에 있다.

0개의 댓글