독자-저자 문제
보이기
전산학에서 독자-저자 문제(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);