CHAPTER 12 프로세스 동기화
keyword : 동기화, 공유자원, 임계구역, 상호배제
동기화
동시 다발적으로 실행되는 프로세스(스레드)들이 서로 통신하고 협력하기 위해 수행시기를 맞추는 것. 방법에는 두 가지가 있다.
- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행
- 상호 배제 : 동시에 접근하면 안되는 자원에 하나의 프로세스만 접근.
실행 순서 제어
- writer는 reader 전에 실행되어야만 한다. 이처럼 프로세스 실행에는 특정 조건이 필요한 경우도 있음. 이 특정 조건을 만족시키기 위해 실행 순서를 정한다.
상호 배제(Mutual Exclusion)
- 생산자와 소비자 문제처럼, 동일한 자원에 동시에 접근해(즉 올바른 순서대로 접근하지 않은 경우) 데이터를 수정했을때 생기는 문제를 막기 위해, 동시에 접근하면 안되는 자원을 지정한다.
공유자원과 임계구역(Critical Section)
- 계좌 잔액 문제, 생산자 소비자 문제 등에서는 동시에 실행되는 프로세스들이 전역변수인 잔액, or 총합이라는 공통 자원을 두고 작업했다.
- 이런 자원을 ‘공유자원’이라고 한다.(Mutual reference)
- 공유 자원은 전역변수일수도, 파일일수도, 입출력 장치일수도, 보조기억장치일 수도 있다.
- 그리고 공유자원 중에는 동시에 접근하면 원하는 결과가 나오지 않는 자원들이 있다.
- 이런 자원에 접근하는 코드영역을 임계구역이라고 한다.
레이스 컨디션(Race Condition)