6장 연습문제
개념
- race condition
- critical recource
- critical section
- entry section
- exit section
- remainder section
- critical-section problem
- mutual exclusion
- progress
- bounded waiting
- instruction reorder
- atomic instructions = intrerrupt 없이 한번에 실행되는 명령어
동기화 배경
- 여러 프로세스가 함께 실행되는 multiprogramming 환경에서는 한 프로세스가 실행되는 도중에 인터럽트가 발생하여 중단될 수 있다. 혹은 multi-processor 환경에서 한 프로세스의 두 명령어 사이에 다른 프로세스의 명령어가 실행될 수 있다.
- race condition: 여러 프로세스가 공통 자원(critical resource)을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 달라지는 상황
- multiprogramming 환경 + race condition ⇒ 중단된 프로세스가 작업하던 자원에 다른 프로세스가 접근하면 data inconsistency를 낳게된다.
- The critical-section problem is to design a protocol that the processes can use to synchronize their activity so as to cooperatively share data.
- 따라서 여러 프로세스가 공유 자원을 사용하는 순서에 관한 프로토콜을 정의하여 위 문제를 해결한다.
- 동기화는 프로세스 내에 공유 자원(critical resource)에 접근하는 코드(critical section)의 실행을 제어하는 방식으로 이루어진다.
- 프로토콜의 필요조건은 3가지가 있으며, 공유 자원에 오직 하나의 프로세스만 접근하여 작업하도록 허용하는 것(mutual exclusion)을 포함한다.
- 동기화, concurrency control: 프로세스들이 공유 자원에 접근하는 순서를 정한다. 한 공유 자원에 대한 critical section의 실행을 제어하고 실행되는 순서를 정한다.
동기화 기법
Interrupt-base Solution
critical section 동안 interrupt를 비활성화. 즉, multiprogramming을 포기