Process Synchronization
Synchronization
- Proecess간에 Interrupt -> Resource ShareReentrant 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 |