6.1 Background - p.257

병행성(Concurrency)의 배경

현대 운영체제는 다중 프로세스 혹은 다중 스레드를 병행(concurrent) 으로 실행함.

여러 프로세스가 동시에 CPU, 메모리, I/O 자원을 공유하므로,

동시 접근(synchronous access) 으로 인한 데이터 일관성 문제(race condition) 가 발생할 수 있음

병행성성

Competition-based concurrency 는 “자원을 얻기 위한 경쟁(경합)”을,

Cooperation-based concurrency 는 “공통 목표를 위한 협력(병행)”을 의미한다.

전자는 CPU 스케줄링 중심, 후자는 동기화와 병렬 처리 중심이다.


6.1.1 Race Condition

Race condition은 병렬 처리 시스템, 멀티코어 환경, 공유 메모리 기반 통신에서 자주 발생함.


6.1.2 Critical Section

일반적 구조

while (true) {
    entry section;       // 진입 요청
    critical section;    // 공유 데이터 접근
    exit section;        // 해제
    remainder section;   // 나머지 코드
}