• [ 운영체제 ] Process Synchronization (1)

    2021. 3. 19.

    by. KimBangg

     

    (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가 바로 진입 하게된다.

     

    댓글