2011-04-13 3 views
2

나는 mmap'd 파일과 거기에서 읽는 소비자 프로세스에 쓰는 생산자 프로세스를 가지고있다. 이것은 Linux에 있습니다.다른 프로세스에서 플러시되지 않은 페이지 읽기

생산자가 mmap을 변경하고 즉시 플러시되지 않는 경우 소비자가 액세스 할 때 어떤 일이 발생합니까? 디스크에서 이전 버전을 가져 오나요? 그렇지 않으면 플래시가없는 페이지를 가져올 정도로 영리합니까? mmap() manual page에서

답변

2

:

MAP_SHARED

공유 객체를 대응시키는 다른 모든 프로세스와이 매핑. 영역에 저장하는 것은 파일에 쓰는 것과 같습니다. msync (2) 또는 munmap (2)이 호출 될 때까지 파일이 실제로 업데이트되지 않을 수 있습니다.

결론 : mmap()을 호출 할 때 변경 사항을 다른 프로세스가 즉시 볼 수 있습니다. 설명서에 따르면 은 또는 MAP_PRIVATE 중 하나를 사용하여 동일한 파일 영역을 매핑하는 다른 프로세스와 관련된 동작을 제어하도록을 사용합니다.

+0

프로세스 사이의 변경 사항이 즉시 전파되는 동안 디스크는 실제로 또는 나중에 msync를 호출 할 때까지 변경 사항을 수신하지 못할 수 있습니다. – CMCDragonkai

관련 문제