본문 바로가기
프로그래밍/CS

운영체제(6/11) - Process Synchronization 1,2,3,4

by 숙님 2023. 1. 30.
728x90

Race Condition 

- 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 

- 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 

 

프로그램적 해결법의 충족 조건 

- Mutual Exclusion: 상호 배제 

- Progress: critical section이 비어있고, 들어가고 싶은 프로세스가 있으면 들여보냄 

- Bounded Waiting: 유한 대기 

 

Semaphores

앞의 방식들을 추상화시킴

- counting semaphore: 도메인이 0 이상인 임의의 정수값

- binary semaphore: 0 또는 1 값만 가질 수 있는 semaphore

- deadlock: 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 이벤트를 무한히 기다리는 현상 

 

Bounded-buffer-problem 

 

Readers-Writers Problem

- 한 프로세스에 DB가 write중일 때 다른 프로세스가 접근하면 안됨 

- read는 동시에 여럿이 해도 됨 

 

Dinings-philosophere problem 

- 젓가락은 공유자원이기때문에 잘 배분을 해야 다 먹을 수 있음 

- 하지만 데드락의 경우가 있음(모두 왼쪽 젓가락을 잡았을 경우)

- 해결책: 짝수-왼쪽 젓가락, 홀수-오른쪽 젓가락 잡기 

c언어를 활용한 해결방법

Monitor

- 동시 수행중인 프로세스 사이에서 추상적인 데이터의 안전한 공유를 보장하기 위해 사용 

- 하나의 프로세스만이 활동 가능 

 

댓글