-
(1) 프로세스 동기화를 다루게 된 배경 [ BackGround]
공유된 데이터에 동시에 접근하는 것은 데이터의 부조화를 만들어 낼 수 있다. => Race Condition
(2) 임계 영역 ( Critical Section )
한 시스템 내에 있는 각각의 프로세스는 코드를 가지고 있는데 이 중 두개의 프로세스가 동시에 접근하지 못하도록 설정해놓은 영역을 "Critical Section" 이라고 한다.
임계지역의 코드는 진입 영역 / 임계 영역Critical Section / 출구 영역 / 나머지 영역 이 있어야 한다.
Example ) Producer, Consumer problem
소비자와 생산자가 코드에 동시에 접근한다면 공유되고 있는 Counter 변수가 +2가 될지 0 이 될지 -2될지 알 수 없는데 이러한 상태를 "Race Condition"이라고 부른다.
그리하여, Critical Section을 구성함으로써 Race Condition이 일어나는 것을 방지한다.
대표사진 삭제
사진 설명을 입력하세요.
2-1) 임계 영역의 3가지 조건
(1) 상호배제 ( Mutual Exclusion )
임계영역에 하나의 프로세스가 진입 해있다면, 다른 프로세스는 진입이 불가능하다.
(2) 진행 ( Progress )
임계영역에 어떠한 프로세스도 존재하지 않고, 들어가기를 원하는 프로세스가 있다면 들어 갈 수 있어야한다.
(3) 한정된 대기 ( Bounded waiting )
임계 영역에 들어가기 위해 대기하는 프로세스는 일정 시간이 지나면 입장이 가능해야한다.
=> 즉, 무제한 대기(Starvation) 현상을 없애는 것을 의미한다.
[3] CS 해결책들
1) Peterson's Solution
Turn = variable => 누구 차례인지?
Flag[boolean] => 준비되었는지?
CS Solution 증명
1) Mutual Exclusion
Pi가 CS에 들어가게 되면, flag[j] == false , Turn = i 이기 때문에 J의 진입이 불가능.
2) Progress
두가지 조건이 모두 충족되면 들어 갈 수 있다.
3) Bounded Wating
Pj가 나오게 되면 Turn을 전환함으로써 Pi가 바로 진입 하게된다.
댓글