독자-작가 문제는 무엇입니까?
"판독기-작가 문제"는 여러 독자와 작가가 동일한 리소스에 액세스해야 할 때 생성되는 프로그래밍 딜레마입니다. 한 번에 모두 액세스 할 수 있으면 덮어 쓰기, 불완전한 정보 및 기타 문제와 같은 문제가 발생할 수 있습니다. 따라서 프로그래머는 시스템 및 사용자의 요구를 고려하여 자원을 볼 수있는 처리 스레드를 제어하기 위해 액세스를 제한 할 수 있습니다. 독자-작가 문제를 해결하는 방법에는 여러 가지가 있습니다. 가장 일반적인 솔루션 중 하나는 세마포어를 사용하여 상태를 표시하고 액세스를 제어하는 것입니다.
한 가지 관점에서, 독자는 내용을 변경하지 않기 때문에 리소스에 안전하게 액세스 할 수 있습니다. 작가가 방정식에 들어가면 상황이 더 복잡해집니다. 다른 스레드가 읽는 동안 스레드가 쓰고있는 경우 독자는 올바른 정보를 얻지 못할 수 있습니다. 변경의 일부만 받거나 오래된 정보를보고 정확한 것으로 생각할 수 있습니다.
한 명 이상의 작가가 문제를 일으킬 수도 있습니다. 동일한 내용을 동시에 변경하면 내용을 덮어 쓰고 다른 오류가 발생할 수 있습니다. 독자-작성자 문제에서 프로그래머는 독자 또는 작성자가 우선 순위를 갖는지 여부와 액세스 처리 방법을 결정해야합니다. 독자 나 작가에게 우선권을 할당하거나 시스템이 선착순으로 액세스를 할당 할 수 있습니다. 이 세 번째 솔루션은 오래 기다릴 수는 있지만 자체 문제가 발생할 수 있습니다.
독자가 우선 순위를 갖는 솔루션에서, 시스템은 액세스가 가능 해지면 먼저 액세스를 요청하는 모든 독자를 허용해야한다고 가정합니다. 이는 리소스에 액세스하려는 모든 작성자가 기다려야 할 수 있음을 의미합니다. 반대로, 시스템은 작성자가 독자에게 영향을 줄 수있는 변경을 수행해야하므로 독자-작가 문제에서 우선 순위를 부여해야한다고 가정 할 수 있습니다. 독자가 자원을 가지고 다룰 때, 작가는 변화를 위해 뛰어들 수 있습니다. 이는 문서 저장과 같은 사용자 작업뿐만 아니라 시스템을 계속 실행하는 컴퓨터 내부 프로세스에도 적용됩니다.
또 다른 옵션은 독자-작성자 문제가 양 당사자의 요구를 균형있게하여 각 처리 스레드가 도착할 때 액세스 할 수 있도록합니다. 이렇게하면 독자가 기다리지 않게하거나 독자가 완료하는 동안 작성자가 보류하도록 강제하지 않고도 작성자가 서로를 대체하거나 독자를 혼동하는 변경을 방지 할 수 있습니다. 이러한 우선 순위는 컴퓨터의 소프트웨어 프로그램 또는 메모리 액세스 제어에 내장 될 수 있습니다. 프로그래밍에 익숙하고 시스템에서 허용하는 경우 사용자가 변경할 수 있습니다.