학교수업, CS/운영체제

[발표자료]뮤텍스 VS 세마포어

빨대도둑 2023. 5. 15. 13:55

공유영역 & 임계구역

지금까지 한 내용에서 조금만 더 들어가 보도록 하겠습니다.

자원 즉 메모리에는 공유 자원이라고 해서 공유가 가능한 자원이 있는데, 이 들 중에서 동시에 접근하면 오류가 발생하는 임계구역이라는 것이 있습니다. 임계 구역에서 하나의 프로세스가 작동 중이라면 다른 하나는 줄을 서서 기다려야 합니다. 이 때 들어가는 순서를 정해주는 것을 이전에 스케줄링을 통해서 한번 알아보았습니다.

그리고 여기서 보는 것과 같이 카톡도 사용하는 메모리 영역, 크롬이 사용하는 메모리 영역이 있는데, 여기서 [2]번째 있는 메모리 공간이 공유공간이라서 카톡과 크롬이 모두 사용할 수 있는 공간이라고 가정을 하면 이 공간이 공유 자원이 되는 것입니다. 그리고 여기에 카톡과 크롬이 동시에 접근을 하면 오류가 발생하는 공간이므로 이것을 임계 구역이라고 합니다.

임계구역은 오직 하나의 프로세스만 진입을 해야 합니다. 여기에 들어오는 프로세스의 순서를 정하는 것 역시 이전에 했던 스케줄링 알고리즘을 통해서 이루어집니다. 일단 임계 구역은 뮤텍스 락, 세마포어 라는 개념을 이용해서 설정할 수 있습니다. 쉽게 알아보면 이전에 설명했듯이 카톡이 해당 메모리 공간을 차지하고 크롬이 사용하지 못하도록 잠그는 것. 그리고 크롬은 카톡의 메모리 사용이 끝날 때까지 기다리는 것 이것이 뮤텍스 락 입니다. 그리고 공유자원이 [2][3][4]이렇게 있어서 누구 하나 메모리 사용이 끝날 때까지 기다리지 않고 들어갈 수 있도록 공유자원이 많이 있는 것 이것이 세마포어라고 보면 될 것 같습니다.

아 그리고 참고로 프로세스는 작동하는데 필요한 만큼의 메모리 공간을 차지한 후에 동작을 할 수 있습니다

 

뮤텍스

락은 하나의 프로세스가 임계구역에 들어가면 해당 구역을 잠가서 다른 프로세스가 들어가지 못하게 하는 것입니다. 공용화장실을 생각해 보면 됩니다. 화장실 칸이 1개라고 하면, 누군가 한 명이 들어가서 다른 사람이 못 들어오게 잠그고 나머지 사람들은 뒤에 줄을 서는 것과 같다고 보면 됩니다. 물론 사용이 끝나면 다음 사람이 들어가서 사용하는 것까지 뮤텍스 락은 공중화장실에 화장실 칸이 1개 있는 것이라고 생각하면 됩니다. 물론 프로세스가 임계구역에 대한 사용이 끝나면 다른 프로세스는 기다렸다가 들어가면 됩니다. 아 그리고 화장실을 공유자원이라고 생각하면 조금 더 이해하기 쉽습니다.

 

세마포어

세마포어는 화장실 칸이 여러 개 있는 것이라고 생각하면 됩니다. 뮤텍스는 화장실 칸이 1개였지만 세마포어는 화장실 칸이 여러 개 있는 것입니다. 즉 공유자원이 여러 개 있다고 생각하면 됩니다.

뮤텍스와 세마포어에서 모두 화장실에 들어가서 문을 잠근다는 표현을 사용했는데, 이는 프로세스도 마찬가지입니다. 두개의 개념에서 프로세스가 임계구역에 들어가서 자원을 사용 중일 때 을 사용해서 다른 프로세스의 접근을 제한한다고 생각하면 됩니다.

그리고 조금 더 전문적으로 이야기하면 뮤텍스는 동기화 대상이 하나이고, 세마포어는 동기화 대상이 하나 이상이라고 보면 될 것 같습니다. 또한 세마포어는 현재 수행 중인 프로세스가 아닌 다른 프로세스가 해제할 수 있지만, 뮤텍스는 락을 획득한 프로세스가 반드시 그 락을 해제해야 합니다. 마치 안면인식 같습니다. 앞선 개념에서 봤듯이 뮤텍스는 비선점형처럼 빼앗을 수 없고, 세마포어는 선점형처럼 빼앗을 수 있다는 것을 생각하면 쉬울 것 같습니다.

 

간단 요약

지금까지 한 내용도 간단하게 요약하고 넘어가겠습니다.

 

면접 문제 후보

그리고 여기서 이러한 종류의 면접 문제가 나올 수 있습니다.