제 질문은 아마도 저조한 말로 쓰여졌을 것이며 아마추어적인 기억 관리에 대한 이해에서 비롯된 것입니다.한 번의 데이터 변경으로 복사 된 것으로 표시된 모든 메모리가 복사됩니까?
내 관심사는 다음과 같습니다. 나는 여러 번 포크를하는 Perl 스크립트를 가지고 있습니다. perldoc의 포크 페이지에서 알 수 있듯이 copy-on-write가 구현되고 있습니다. 각 어린이는 system()
으로 다시 전화를 걸어 외부 프로그램을 호출합니다. 외부 프로그램의 데이터는 자식으로 다시 읽어 들여지고 저장 가능한 파일로 덤프되며 모든 자식이 종료되면 부모가 수확하고 처리합니다.
내게 우려되는 것은이 상황에 대한 나의 인식 된 변동성입니다. 내 생각에 최악의 경우를 생각해 보자. 새로운 데이터가 도착하자마자 각 어린이들에게 전체 복사 - 기록 메모리가 잘 복사된다. 이 경우 몇 가지 포크를 작성한 후 신속하게 메모리 문제가 발생합니다.
그러나 필요한 경우 copy-on-write는 필요한 데이터가 들어있는 메모리의 가장 작은 부분만을 복사합니까? 그렇다면이 퀀텀은 무엇입니까? 크기는 어떻게 설정됩니까?
내가 묻는 내용이 언어에 종속적인지 또는 일부 하위 프로세스에 종속적인지 여부는 확실하지 않습니다.
감사합니다. 포크 :: 슈퍼가 멋지다. – EMiller
그러나 부모 프로세스가 자식 프로세스 (프로세스 제한 때문에 결코 시작되지 않음)에서 대기하는 경우 새 프로세스 생성을 차단하여 교착 상태를 만들 수 있습니다. – EmeryBerger
하위 프로세스가 시작되지 않은 경우 프로세스 ID가 없으므로 기다릴 수 없습니다. 기존 자식 프로세스가 결국 끝나면 교착 상태가 발생하지 않습니다. – mob