뮤텍스(Mutex), 세마포어(Semaphore)

sojukang·2022년 8월 14일
0
post-custom-banner

임계구역

공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역이다.

해결 조건

상호 배제(Mutual Exclusion)

한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없다.

한정 대기

어떤 프로세스도 무한 대기하지 않는다.

진행의 융통성

한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다.

뮤텍스(Mutex)

무엇인가?

상호 배제(Mutual Exclusion)에서 이름을 따온 축약 형태(MUTual EXclusion)이다. 프로세스는 임계구역에 들어가기 전에 반드시 락을 획득해야 하고 임계구역을 빠져나올 때 락을 반환해야 한다.

  • 바쁜대기: 무한 루프를 돌며 잠금이 풀리기를 기다리는 대기

세마포어(Semaphore)

무엇인가?

뮤텍스는 바쁜 대기를 사용하여 자원을 낭비하고 알고리즘이 복잡하다. 이를 해결하기 위해 Dijkstra가 제안한 알고리즘이다.

어떻게 동작하나?

  1. 세마포어는 임계구역에 진입하기 전 스위치를 사용중으로 놓고 들어간다. 이후 도착하는 프로세스는 앞 프로세스가 작업을 마칠 때까지 기다린다.
  2. 프로세스가 작업을 마치면 세마포어는 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보낸다.

장점은?

세마포어는 다른 알고리즘과 달리 임계구역이 잠겼는지 직접 점검하거나, 바쁜 대기를 하거나, 다른 프로세스에 동기화 메시지를 보낼 필요가 없다.

단점

임계 구역 사용(P), 사용 완료(V) 코드 실행 도중 다른 코드가 실행되면 상호 배제와 한정 대기 조건을 보장하지 못한다.

참고

조성호, 쉽게 배우는 운영체제
Operating System Concepts

profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글