독자-저자 문제
보이기
	
	
전산학에서 독자-저자 문제(readers-writers problem)란 여러 명의 독자와 저자들이 하나의 저장 공간(버퍼)을 공유하며 이를 접근할 때 발생하는 문제이다. 독자는 공유 공간에서 데이터를 읽어온다. 여러 명의 독자가 동시에 데이터를 읽어오는 것이 가능하다. 저자는 공유 공간에 데이터를 쓴다. 한 저자가 공유 공간에 데이터를 쓰고 있는 동안에는 그 저자만 접근이 가능하며, 다른 독자들과 저자들은 접근할 수 없다.
문제 해결
[편집]세마포어 등을 활용하여 문제를 해결할 수 있다.
방법
[편집]- 변수
 - 저자 프로세스
 
wait(wrt); // 임계구역에 들어가기 위해 허가가 나기를 기다린다. ... 쓰기 작업 수행 ... signal(wrt); // 임계구역에서 빠져나왔음을 알린다.
- 독자 프로세스
 
wait(mutex);
    readcount++;     // 독자 수 1 증가
    if readcount = 1
        wait(wrt);   // 쓰고 있는 저자가 없을 때까지 기다린다.
signal(mutex);
...
읽기 작업 수행
...
wait(mutex);
    readcount--;     // 독자 수 1 감소
    if readcount = 0
        signal(wrt); // 독자가 없다면 이를 알린다.
signal(mutex);