[운영체제] Synchronization (1) - Race Condition, Critical Section

82.831·2023년 1월 6일
0

Race Condition

  • 두 개 이상 프로세스/스레드가 shared resource동시에 concurrent하게 접근함으로써 결과 값이 확정 되지가 않고, 그때 그때 실행할 때마다 조금씩 바뀌는 현상

Critical Section

  • 코드에서 두개 이상의 프로세스가 동시에 리소스를 업데이트 할 수 있는 구간
  • 각 프로세스에서 공유 데이터에 접근하는 프로그램 코드 부분
  • 여러 개의 스레드가 수행되는 프로그램에서 각 프로세스/스레드들이 공유하는 데이터 등을 변경하는 코드 영역

critical section을 보호하기 위해 반드시 지켜져야 하는 3가지

  • Mutual exclusion

    critical section에 오직 한번에 하나의 프로세스만 들어갈 수 있다. 한 프로세스가 수행 중인 상태에서는 다른 프로세스가 절대 수행 중인 critical section에 접근할 수 없다.
  • Progress

    lock에 대해서 여러개가 요청했을 때, lock을 잡고 있는 사람이 아무도 없는 경우에는 요청한 여러 개 중에 하나는 반드시 lock을 잡을 수 있어야 한다. critical section에 들어갈 수 있어야 한다.
  • Bounded waiting

    lock을 잡으려고 하는데 한명이 계속 lock을 못 잡는 상황 발생하면 안된다. starvaiton 현상 예방할 수 있어야 한다. 즉, critical section에 들어가고자 하는 프로세스는 언젠가는 꼭 진입할 수 있어야 한다.

0개의 댓글