세마포(Semaphores)
- 동기화 문제 해결을 위한 소프트웨어 도구
세마포의 구조
- value(number of permit), P 동작(acquire), V 동작(release)
acquire(){
value = value - 1;
if(value < 0){
acquire를 호출한 쓰레드를 큐안에 집어넣음(봉쇄)
}
}
release(){
value = value + 1;
if(value <= 0){
큐 안에 있는 한 쓰레드를 꺠워서 가져온다(석방)
}
}
세마포 용도
- Mutual exclustion(상호 배타)으로 한번에 한 쓰레드만 허용
- Ordering(순서 제어)으로 쓰레드 흐름 제어(ex. 출금전에 입금먼저, 교대로)
'CS > 운영체제' 카테고리의 다른 글
교착 상태 (0) | 2023.02.10 |
---|---|
전통적 동기화 예제 (0) | 2023.02.09 |
프로세스 동기화 (0) | 2023.02.07 |
쓰레드(Thread) (0) | 2023.02.06 |
CPU 스케쥴링(CPU Scheduling) (1) | 2023.02.05 |