참고 : [Course] Operating System (CPA310) - 운영체제 강의
[ 운영 체제 7강. 프로세스 동기화 & 상호배제 ]
1. 동기화 ( Process Synchronization )
다중 프로그래밍 시스템
-
다중 프로그래밍 시스템 = 여러 개의 process가 존재하는 시스템
process들이 서로 “독립적”으로 동작 ( = 동시에 )
-
공유 자원.데이터 시, 문제 발생 가능성!
동기화 ( Synchronization )
- process들 간의 동작 맞추기 & 서로 정보 공유
- 비동기적 & 병행적
- 비동기적 ( Asynchronous ) : process들이 서로에 대해 몰라
- 병행적 ( Concurrent ) : 여러 process들이 “동시에” 시스템에 존재
- 병행 수행 중인 “비동기적” process들이 공유자원 동시 접근 시, 문제 발생 가능성!
용어
1) Shared data (공유 데이터)
- 여러 process들이 공유하는 데이터
2) Critical section (임계 영역)
- 공유 데이터를 접근하는 코드 영역
3) Mutual exclusion (상호 배제)
- 둘 이상의 process가 critical section에 진입 못하게끔!
2. Critical Section (임계 영역)
기계어 명령어
- 원자성 ( Atomicity ) & 분리 불가능성 ( Indivisible )
- 즉, 명령 실행 중, interrupt X
2를 기대했지만…1이 나올수도!?
이를 해결하기 위해…
3. Mutual Exclusion (상호 배제)
어떠한 process가 critical section에 들어가 있으면, 다른 process는 들어갈 수(끼어들 수) 없다!
Mutual Exclusion primitives (기본 연산)
enterCS()
primitive
-
critical section 진입 전에 검사 과정
( 다른 process가 c.s안에 있는지 확인 )
exitCS()
primitive
-
critical section을 벗어난 뒤의 과정
( c.s를 벗어나면 시스템이 알림 )
Requirements for ME primivites
1) Mutual Exclusion (상호 배제)
- c.s 내에 process 있으면, 다른 process 진입 금지
2) Progress (진행)
- c.s안에 있는 process 외의 다른 process에 진입 방해 X
3) Bouding waiting (한정 대기)
- c.s진입은 유한 시간 내에 허용되어야!