티스토리 뷰
오퍼레이팅시스템 11주차 / 13. Condition Variables and Synchronization
브로콜리여사 2025. 6. 10. 18:16Condition Synchronization
1. 상호배제 : 한번에 하나의 쓰레드만 공유자원에 접근 가능
2. 조건 동기화 : 다수의 쓰레드 접근 동기화, 다수 쓰레드의 실행을 순서화
(특정조건 만족할 때 까지 대기, 조건 만족하면 다시 실행 시킴 )
Condition Variables
조건 동기화를 위한 추상화도구, 스레드가 어떤 조건을 만족할 때 까지 기다릴 수 있게(block) 해줌.
어떤 조건이 충족되지 않으면 대기열에 넣어두고, 충족되었을 때 다른 스레드가 깨움
1. wait() : 스레드가 조건이 만족 될 때 까지 잠듬(sleep)
2. signal() : 조건이 만족 되었을 때 기다리는 스레드 중 하나를 깨움
3. broadcast() : 조건이 만족 되었을 때 기다리는 모든 스레드를 깨움
Semaphore as Condition Variables
세마포어를 조건 변수처럼 사용할 수 있는 상황
1. 상호배제 , s값이 1이면 뮤텍스 처럼 동작
2. 조건 동기화
세마포어의 단점
1. Wait/signal 연산이 프로그램 전체에 흩어질 수 있음
2. Deadlock (교착 상태) 예시
Producer and Consumer Problem
공유버퍼를 두고 여러스레드 혹은 프로세스가 생산과 소비를 수행할 때 , 서로 영향을 미치는 것, 경쟁없이 효율적으로 실행 순서를 조정하는 동기화 문제 , bound buffer problem
제약조건
소비자는 버퍼가 비어 있으면 기다려야 함. >> 버퍼에 소비할 항목이 없음 >> wait()
생산자는 버퍼가 가득차면 기다려야 함 >> 더이상 값을 넣을 공간이 없음 >> wait()
Readers and Writers Problem
읽기 쓰레드 들이 동시에 데이터를 읽을 수 있도록 하되, 쓰기 스레드는 배타적 접근을 가져야 한다.
즉, 읽기는 동시에 가능, 쓰기는 혼자만 가능하도록 하여 성능을 향상 시킨다.
예시 ) database system : 여러 사용자가 데이터를 동시에 조회(read)할 수 있지만, 누군가가 데이터를 수정(write)하려면 단독으로 접근해야 함.
'학교복습용 > 오퍼레이팅시스템 OS' 카테고리의 다른 글
| 오퍼레이팅시스템 13주차 / 15.Memory Management (0) | 2025.06.10 |
|---|---|
| 오퍼레이팅시스템 12주차 / 14. Priority Inversion and Deadlocks (0) | 2025.06.10 |
| 오퍼레이팅시스템 10주차/ 12.Mutual Exclusion and Synchronization (0) | 2025.06.05 |
| 오퍼레이팅시스템 9주차 / 11.Threads and Synchronization (0) | 2025.04.29 |
| 오퍼레이팅시스템 목차 (0) | 2025.04.22 |
