[운영체제] 뮤텍스 VS 세마포어 차이점에 대해(임계영역)
먼저 임계영역(Critical Section)에 대해 정리하겠습니다. 임계영역은 공유 자원을 가진 코드 부분으로 서로 다른 프로세스가 동시에 접근할 때 생기는 문제가 생기는 부분입니다. 만약 모든 동작들이 Atomic하게 동작한다면 임계영역에 대해 문제가 발생하지 않겠지만 실제로는 코드 실행 중에 다른 쓰레드나 프로세스로 전환이 일어날 수 있습니다. 서로 다른 프로세스/쓰레드에서 동시에 접근하는 공유 자원이 있다면 먼저 도착한 프로세스/쓰레드가 작업을 다 끝난 후 그 뒤에 온 프로세스/쓰레드가 작업을 하게해야 안전합니다. 제가 대학생 때 이해를 좀 쉽게하기 위해 화장실을 비유로 설명을 들었던 기억이 납니다. 뮤텍스의 경우 화장실 1칸(공유자원)이 주어진 경우입니다. 1번에 1명만 화장실을 사용할 수 있게..