반응형
뮤텍스는 락 획득을 시도한 순서대로 접근이 가능한 FIFO 형식으로 작동한다.
reader는 동시에 출력이 가능하지만, writer는 동시 출력이 불가하기에 출력중인 reader가 있다면 writer의 출력은 막아준다.
동시에, 대기중인 writer가 있다면 reader는 접근하면 안된다.
따라서 뮤텍스 3개를 사용하여 구현할 수 있었다.
Reader
while (alive) {
pthread_mutex_lock(&mutex);
pthread_mutex_lock(&rmutex);
read_count++;
if(read_count == 1){
pthread_mutex_lock(&wmutex);
}
pthread_mutex_unlock(&rmutex);
pthread_mutex_unlock(&mutex);
// reader 출력
pthread_mutex_lock(&rmutex);
read_count--;
if(read_count == 0){
pthread_mutex_unlock(&wmutex);
}
pthread_mutex_unlock(&rmutex);
}
Writer
while (alive) {
pthread_mutex_lock(&mutex);
pthread_mutex_lock(&wmutex);
// writer 출력
pthread_mutex_unlock(&wmutex);
pthread_mutex_unlock(&mutex);
}
반응형
'학교강의필기장 > 운영체제론' 카테고리의 다른 글
운영체제론 - reader-writer problem (ver. prefer) (0) | 2023.06.22 |
---|---|
운영체제론[18]: 가상메모리 - 3 (0) | 2023.06.22 |
운영체제론[17]: 가상메모리 - 2 (0) | 2023.06.22 |
운영체제론[16]: 가상메모리 - 1 (0) | 2023.06.22 |
운영체제론[15]: 메모리 - 2 (0) | 2023.06.22 |