공유 메모리의 키가 파일 이름 또는 아이 노드인지 궁금합니다.MEM_SHARED, mmap 및 하드 링크
나는 YYYYMMDDHHMMSS라는 파일에 대한 하드 링크 인 .last라는 파일을 가지고 있습니다.
디렉토리는 다음과 같습니다
20110101143000
.last
.last 그냥 하드 얼마 후 20110101143000.
링크, 새 파일이 생성된다
20110101143000
20110622083000
.last
우리는 다음 삭제 .last를 작성한 다음 새 파일을 참조하도록 다시 작성하십시오.
이 업데이트 중에 지속적으로 실행되는 Google의 소프트웨어는 MAP_SHARED를 사용하여 .last 파일을 mmaps합니다. 파일로 처리가 끝나면 소프트웨어는 매핑을 해제하지 않고 몇 분 동안 캐시 할 수 있습니다. 물리적 서버에는 동시에 실행중인 소프트웨어 인스턴스가 12-24 개 있습니다. 서로 다른 인스턴스가 종종 같은 시간에 동일한 파일을 mmap합니다. 내 질문은 :
리눅스는 공유 메모리에 키 파일 이름을 사용 하는가, 또는 아이 노드를 사용합니까?
을 감안할 때이 시나리오 :
- 시저 mmaps .last 및 삭제 .last 새로운 파일이 작성
- 를 매핑을 해제하지 않고, 새로운 .last 새로운 을 링크 생성 새로운 .last을 mmaps
- 시저의 B를 제출하고, 리눅스는 아이 노드, 다음 PROC A와 B는 DIF에 매핑 된 메모리의 다른 블록을 볼 수있을 것를 사용한 경우
의 매핑을 해제하지 않습니다 ferent 파일, 우리가 원하는 것입니다. linux가 파일 이름을 사용하면 A와 B 모두 새 파일에 매핑 된 동일한 메모리 블록을 보게됩니다. B는 괜찮지 만 샤드 블록의 메모리가 변경되면 A가 충돌합니다.
누구나 실제로 작동하는 방법을 알고 계십니까? 나는 시험거야하지만 이름을 기반으로 밝혀지면 누군가가 트릭을 알고하지 않는 한, 나는 나사입니다.
감사합니다.