< Ch.12 _프로세스 동기화 >
[ 12-1. 동기화란? ]
[ 1 ] 동기화
상황
- 동시다발적으로 실행되는 많은 프로세스
- 프로세스들끼리의 협력이 필요한 상황
“동기화”
작업들 사이의 수행시기를 맞추는 것.
“프로세스 동기화”
- 프로세스들 사이의 수행 시기를 맞추는 것.
- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
- ex) Book.txt에 수행하는 Writer 프로세스와 Reader 프로세스
- 상호 배제 : 하나의 자원에, 하나의 프로세스 - 동시에 접근해서는 안 되는 자원에, 하나의 프로세스만 접근하게 하기
- ex) 계좌 잔액 문제, 생산자와 소비자 문제
- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
[ 2 ] 공유자원과 임계구역
공유자원
- shared resource
- 동시에 실행되는 프로세스들이 작업하는 공동의 자원
- 여러가지가 공유자원이 될 수 있다. (ex: 전역변수, 파일, 각종 장치)
임계구역
- critical section
- 정의
- 동시에 실행하면 안되는 자원이 있을 때,
- 그 자원에 접근하는 “코드 영역”
레이스 컨디션
- 여러 프로세스가 동시 다발적으로 임계구역의 코드를 실행하여 문제가 발생하는 경우.
[ 3 ] 임계 구역 문제 해결 원칙
원칙 3개
- 상호배제
- (mutual exclution)
- 임계 구역에는 하나의 프로세스만 진입. 다른 프로세스는 배제
- 진행
- (progress)
- 임계 구역에 어떤 프로세스도 진입하지 않으면 → 다른 프로세스는 들어갈 수 있어야함.
- 유한대기
- (bounded waiting)
- 임계구역에 진입하고 싶은 프로세스는, 언젠가는 임계구역에 들어올 수 있어야함. (무한정 대기해선느 안됨)
댓글