프로세스 동기화 도구 - 세마포
Programming/운영체제

프로세스 동기화 도구 - 세마포

1. 동기화 도구 종료

- Semaphors(세마포) : 가장 전통적인 동기화 도구

- Monitors

- Misc.

2. Semaphores(세마포)

사전적 정의 : n. (철도의) 까치발 신호기, 시그널; (군대의) 수기 신호

세마포란 동기화 문제 해결을 위한 소프트웨어 도구를 말한다.

네덜란드의 Edsger Dijkstra가 제안했다.

  • 구조 : 정수형 변수 +  두개의 동작(P, V)
  • 동작 :
    • P: Proveren(test) => acquire()
    • V: Verhogen(increment) => release()
  • 코드:

1) 일반적 사용(1) : Mutual exclusion(상호 배려)

- sem.value = 1; <- 크리티컬 섹션에 한번에 한 쓰레드만 진입 가능하도록 만든다는 뜻이다.

2) 일반적 사용(2) : Ordering

 - sem.value = 0;

 - 만약 P1이 P2보다 항상 먼저 나오도록 하고 싶다면 다음과 같이 구성한다.

    - P2는 진입하기 전 sem.acquire();에 의해 세마포 안 큐에 잡혀있게 된다.

    - 그동안 S1이 Critical section안으로 들어가게 되고, 빠져나오면 sem.release();를 통해 큐에 잡혀있는 P2가 빠져나온다.

    - P2는 큐를 빠져나와 Ready Q로 다시 들어가게 되고 S2가 실행된다.

    - 위 과정을 계속 반복한다.

예제 : BankAccount Problem

  - 항상 입금 먼저 (=Parent 먼저)

  - 항상 출금 먼저 (=Child 먼저)

  - 입출금 교대로 (P-C-P-C-P-C ...)

'Programming > 운영체제' 카테고리의 다른 글

전통적 동기화 예제 (1) 생산자 - 소비자 문제  (0) 2021.08.25
세마포 예제(Java)  (0) 2021.07.30
프로세스 동기화  (0) 2021.07.28
프로세스 동기화  (0) 2021.07.28
프로세스 생성과 종료  (0) 2021.07.25