운영체제 - 12

KOCW 운영체제 12강

양희재 교수님 강의를 듣고 쓴 글입니다.


Process Synchronization

OS에서 가장 중요한게 process management 라고 배웠다. 그 중에서도 CPU Scheduling, Process Synchronization 이 중요하고 지난시간엔 동기화 툴에 대해서 배웠다. 대표적인 동기화 도구인 Semaphore에 대해 배웠는데 Mutual exclusion을 위해서도 쓰지만 process Ordering 할 때도 쓴다. 오늘은 Ordering에 대해 알아보자.


Ordering

먼저 실행되는 process를 정할 수 있다.

os12_1

먼저 number of permit=0으로 할 것이다. 그리고 위와같은 흐름으로 코드를 작성하게 된다면,

  1. Process1이 실행된다.
  2. Process2가 acquire() 를 호출. value=-1가 된다. 따라서 Queue에 갇힌다.
  3. Process2가 끝난다. Release()를 호출. Queue에 갇혀있던 Process2가 실행된다.
  4. 반복…

우리는 의도한대로 Process1을 무조건 먼저 실행시키는 코드를 Semaphore를 써서 만들 수 있었다.