프로세스 동기화

프로세스 동기화

여러 프로세스의 접근이 가능한 공유 데이터에 여러 프로세스가 동시에 접근해도 데이터의 일관성 (data consistency)을 유지하기 위한 개념

  • 공유된 데이터에 동시에 여러 프로세스들이 접근했을 경우 예측하지 못한 일이 발생하는 경우를 배제하기 위함.
  • Data consistency를 보장해줘야함.

Critical Section

상호 배제의 원리가 지켜져야 하는 영역 (임계영역)

  • 공유 데이터에 접근하는 코드 블록
  • 공유 데이터에 동시에 접근하면 데이터의 무결성(일관성)이 손상될 수 있음.

Critical Section Problem

  • 생산자-소비자 문제
  • 생산자와 소비자 역할을 하는 프로세스 2개가 동시에 공유 자원에 접근함으로써 기대했던 값과는 다른 결과가 나옴.

Race Condition

임계 영역의 부적절한 처리로 예상치 못한 결과를 발생시킬 수 있는 상황.

  • 해소하기 위해선 하나의 프로세스만 임계 영역을 실행할 수 있도록 함. (mutual)

임계구역의 3가지 요구 조건

  1. mutual exclusion 상호배제
    • 특정한 프로세스가 critical section에서 실행되는 동안 다른 프로세스가 접근할 수 없다.
  2. process 진행
    • critical section을 사용하지 않고 있다면 다른 프로세스가 접근할 수 있도록 한다.
  3. bounded waiting 한정된 대기
    • ciritical section 진입 횟수에 한계가 있어 같은 프로세스가 계속 독점해서 사용하지 못하게 한다.
    • 다른 프로세스들이 기아 상태에 빠지지 않도록 한다.

deadlock

교착상태, 두개 이상의 작업이 서로 성대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태

교착상태가 발생하는 조건

  1. mutual exclusion

    프로그램들이 공유 자원을 동시에 쓸 수 없는 상황.

  2. 점유 상태로 대기

    공유 자원을 점유한 상태에서 다른 자원을 기다리는 것.

  3. 선점 불가

    자원을 어떤 프로세스가 점유 중일 때 다른 프로세스가 그 자원을 뱃을 수 없다는 것

  4. 순환성 대기

    대기가 꼬리게 꼬리를 문 상황