Process Synchronization


  • Synchronization
    - Proecess간에 Interrupt -> Resource Share

  • Reentrant code(재진입가능 코드)
    - 여러 Process들에 의해 동시에 호출되거나, 이전 호출이 완료되기 전에 반복 호출되어도 올바르게 수행 되는 코드

  • Race Condition(경합 조건)
    - Synchronization의 문제로 여러 Process들이 동기화 절차를 거치지 않고 동시에 자원을 사용하기 위해 경쟁하므로써 그 수행결과를 예측할 수 없게 되는 상황

  • Critical Section
    - 하나의 Process가 자원을 독차지 하고 모든 작업을 수행시키는 공간
    - Mutual exclusion : 한 Process 외의 다른 Process는 배제 시킨다.
    - 여러개 Process가 진입 요청시 그중 하나의 Process만 허용한다.

  • Semaphore (중요)


    - Synchronization을 제공해 주는 정수형 변수
    - 초기값은 1로 초기화 한다.
    - Mutual exclusion 제공
    - Scheduling 제공된다.

    (semaphore Scheduling)

  • Binary Semaphore
    - 0 또는 1의 2가지 상황만 있는 경우

  • Counting Semaphore
    - 0과 1외 또다른 2가지 이상의 상황이 있는 경우

  • Producer / consumer
    - Producer : Data 생성 -> 버퍼에 넣는 행위
    - consumer : Data 사용 -> 버퍼에서 읽는 행위



  • Producer / Consumer에 Semaphore적용
    - Producer가 Consumer보다 빠를 경우 Producer는 대기현상이 발생
    - Consumer가 Producer보다 빠를 경우 Consumer행위는 대기현상이 발생
    -> 두 현상 모드 Semaphore를 사용하여 해결


  • Interrupt Disable을 사용한 Synchronization의 문제
    - Interrupt Disable은 시스템 전체에 영향을 미치기 때문에 상관없는 Process의 수행도 방해하게 됨

  • Semaphore의 단점
    - Unstructured Programming construct이기 떄문에 컴파일러등의 도구를 사용한 디버깅이 어렵다.


'프로그래밍 > 운영체제' 카테고리의 다른 글

Process Synchronization(2)  (0) 2016.10.20
CPU Scheduling  (0) 2016.10.15
MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11

+ Recent posts