임계 구역 문제

위키백과, 우리 모두의 백과사전.

임계 구역 문제임계 구역으로 지정되어야 할 코드 영역이 임계 구역으로 지정되지 않았을 때 발생할 수 있는 문제를 말한다.

관련 문제[편집]

해결 조건[편집]

임계 구역 문제를 해결하기 위해서는 다음 3가지 조건을 충족해야 한다.

  • 상호 배제(Mutual exclusion) : 하나의 프로세스가 임계 구역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
  • 진행(Progress) : 임계 구역에 들어간 프로세스가 없는 상태에서, 들어가려고 하는 프로세스가 여러 개 있다면 어느 것이 들어갈지를 적절히 결정해주어야 한다.
  • 한정 대기(Bounded waiting) : 다른 프로세스의 기아(Starvation)를 방지하기 위해, 한 번 임계 구역에 들어간 프로세스는 다음 번 임계 구역에 들어갈 때 제한을 두어야 한다.

해결 방법[편집]

소프트웨어적인 방법[편집]

하드웨어 활용 방법[편집]

하드웨어를 활용하면 좀 더 간단하게 문제를 해결할 수 있다.

  • 동기화 명령어 : CPU가 지원하는 동기화 명령어를 활용하는 방법이다. 이들 명령어는 원자적으로 수행된다. 이를 사용하면 상호 배제 조건을 쉽게 충족시킬 수 있지만, 한정 대기 조건은 주어진 문제마다 차이가 있기 때문에 사용자 프로그램에서 처리해야 한다.
  • 세마포어
  • 모니터

같이 보기[편집]