프로세스 동기화
2021. 5. 29. 17:19ㆍStudy/CS
- Critical Section
- 동일한 자원을 동시에 접근하는 작업을 실행하는 코드영역
- 해결법
- Mutual Exclusion(상호 배제)
- P1이 CS에서 실행중이라면 다른 프로세스들은 해당 CS에서 실행될 수 없다.
- Progress(진행)
- CS에서 실행중인 프로세스가 존재하지 않고, 별도의 동작인 없는 프로세스만 CS진입 후보로서 참여될 수 있다.
- Bounded Waiting(한정된 대기)
- P1이 CS에 진입 신청 후 부터 받아들여질 때까지, 다른 프로세스들이 CS에 진입하는 횟수에 제한이 있어야한다.
- Mutual Exclusion(상호 배제)
- 해결책
- Lock
- 하드웨어 기반 해결책
- 임계영역에 진입하는 프로세스는 Lock을 획득하고 빠져나올때 Lock을 방출하여 동시진입을 막는다.
- 다중처리기 환경에서는 시간적인 효율성 측면에서 적용할 수 없다.
- Semaphore
- 소프트웨어 기반 해결책
- Counting Semaphore
- 가용한 개수를 가진 자원에 대한 접근 제어용으로 사용된다.
- Semaphore는 그 가용한 개수로 초기화 된다.
- 자원을 사용하면 감소 , 방출하면 증가가된다.
- Binary Semaphore
- Mutex라 불린다.(MUTual EXclusion)
- 0과 1 사이의 값만 가능하며, 다중 프로세스 사이의 임계영역 문제를 해결하기 위해 사용된다.
- Busy Waiting
- Lock을 얻을때까지 의미없이 접근을 시도하여 시간이 낭비된다.
- DeadLock
- Lock
'Study > CS' 카테고리의 다른 글
Stack / Queue (0) | 2021.05.30 |
---|---|
Array vs List (0) | 2021.05.30 |
Scheduler / Scheduling (0) | 2021.05.29 |
DeadLock (0) | 2021.05.28 |
Transaction (0) | 2021.05.28 |