프로세스 동기화

목차

프로세스 동기화의 목적

공유자원에 접근하는 여러 프로세스들이 치리순서에 상관없이 같은 결과를 얻을 수 있음을 보장하기 위해 도입된 개념, 이를 통해 공유되는 데이터의 일관성을 보장한다.
쉽게 말해, 하나의 프로세스가 공유자원을 사용하고 있을 때, 다른 프로세스가 공유자원을 사용허지 못하도록 하는 것이다.

Race Condition(경쟁상태)

공유자원에 여러개의 프로세스가 접근할 때 방생한다. 여러 프로세스가 공유데이터에 동시에 접근할 때 실행순서 에 따라서 실행 결과가 달라지는 현상이다.

Critical Regions(임계 영역)

프로세스의 코드 부분에서 공유 자원에 들어가기 위한 코드부분을 임계영역(Criticla Regions) 이라고 부른다.
프로세스 동기화 를 위해 임계 영역 내 코드는 공유 자원의 독점이 보장 돼야 한다.

교착 상태

교착 상태는 상호배제, 점유대기, 비선점, 순환대기 이 4가지 조건을 동시에 만족하면, 교착 상태에 빠졌다고 한다.

  • 프로세스로부터 자원을 빼앗지 못하는 비선점 상황
  • 한 자원에 여러 프로세스가 동시에 접근하지 못하는 상호배제 상태
  • 자원1을 사용하는 프로세스A가 프로세스B가 사용하는 자원2를 요청할 경우 자원을 할당 받을 때까지 자원1을 가진 상태로 대기에 들어가는 점유 대기 상태가 된다. 이 때 프로세스B 또한 프로세스A가 사용하는 자원1을 요청하게 되면 프로세스 B역시 점유 대기 상태로 들어가는데
  • 결국, 서로 상대방의 자원을 요청하는 사이클이 발생하는 순환대기 상태를 보이게된다

임계 구역 문제의 해결 조건

  • 상호 배제 (Mutual Exclusion) : 어떤 프로세스(또는 스레드)가 임계 구역에서 작업 중일 때, 다른 프로세스는 임계 구역으로 접근할 수 없다.
  • 진행 (Progress) : 임계 구역에서 작업 중인 프로세스가 없다면, 임계 구역으로 진입하려는 프로세스 중 하나를 적절히 선택하여 임계 구역에 진입할 수 있게 해야 한다.
  • 유한 대기 (Bounded Waiting) : 다른 프로세스의 기아(Starvation)을 방지하기 위해, 임계 구역에 한 번 접근했던 프로세스는 다시 임계 구역에 들어갈 때 제한을 두어야 한다.
Share