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

    2021. 3. 19.

    by. KimBangg

     

    (1) Peterson's Algorithm ( for two processes )

    1. 일을 하고 싶은 경우 [ 임계 지역에 들어 갈 준비 끝 ] => Flag : False -> True

    2. 다른 프로세스가 Flage를 true로 전환해놨다면, Turn을 통해 순서를 정함

    3. 먼저 진입한 프로세스가 자신의 일을 끝내면 Turn 을 넘겨준다.

     

    * Peterson algorithm's 3 conditions

    [1] 상호배제 ( Mutual Exclusion )

    P1은 자신의 턴일 때 혹은 P2가 진입 의사가 없을 때 들어가게 된다.

    그러한 이유로, 두개의 프로세스가 동시 진입이 불가능하다.

    [2] 진입 (Porgress)

    P1은 flag[2] = ture & turn = 2 일때만 진입이 불가능하다.

    => 즉, 자신에게 맞는 상황이 오면 임계 영역에 진입한다.

    [3] Bounded Waiting [ 한정된 대기]

    P1은 P2가 자신의 일을 마치고 나오면 진입한다. => 무한 대기가 이루어 질 수 없다.

     

    (2) Mutex Lock

    프로세스 동기화를 위한 하드웨어적인 접근은 너무 복잡하고 어렵다

    => 이에 따라, mutex lock이라는 software적 접근법이 등장하게 된다.

     

    lock.acquire을 통해 임계지역의 접근을 막고, Release를 통해 해제한다.

    대표사진 삭제

    사진 설명을 입력하세요.

    단점 : 하나의 프로세스가 임계영역 안에 있을 때는, 다른 프로세스가 들어가기 전까지 무한 루프 (= busy waiting)으로 대기해야한다.

     

    (3) Semaphore ( for multiple Processes by software : wait () = P, signal() = V )

    - 세마포어는 busy waiting을 통제 할 수 있다. ( block() : 세마포어의 값이 wait & not positive -> go to wating queue[linked list ( contain PCB , FIFO) ] , wake())

    - 세마포어의 조작은 "Atomic"하다.

    => 다른 프로세스가 semaphore value 를 변경할 때, 다른 프로세스는 변경 할 수 없다. ( =not race condition )

    - 이진 세마포어(0,1)와 카운팅(0~n : 임계지역에 동시에 n개의 프로세스 접근 가능) 세마포어가 존재한다.

     

    (4) Monitor

    - 모니터는 자바와 CPP과 같은 객체지향 언엉들과 같이 추상적인 데이터 타입을 가지고 있다. ( = ADT : 데이터 + 함수 )

    - 공유된 데이터는 연산을 통해서만 들어갈 수 있다.

    - 모니터 안에서는 오직 하나의 프로세스만 운영될 수 있다.

    - 프로그래머는 동기화를 위한 코드를 작성하지 않아도 된다.

    대표사진 삭제

    사진 설명을 입력하세요.

     

     

     

    'CS > Operating System' 카테고리의 다른 글

    [ 운영체제 ] Deadlock  (0) 2021.03.19
    운영체제 - Process Synchronization (3)  (0) 2021.03.19
    [ 운영체제 ] CPU Scheduling (2)  (0) 2021.03.19
    [ 운영체제 ] Process Scheduling  (0) 2021.03.19
    [ 운영체제 ] Process Overview  (0) 2021.03.19

    댓글