두 프로세스가 파일(메모리 매핑 파일 또는 /dev/shm 파일)을 사용하지 않고 동일한 공유 메모리를 사용할 수 있습니까?

두 프로세스가 파일(메모리 매핑 파일 또는 /dev/shm 파일)을 사용하지 않고 동일한 공유 메모리를 사용할 수 있습니까?

현재 두 개의 서로 다른 프로세스에 동일한 공유 메모리를 제공하는 방법을 아는 유일한 방법은 메모리 매핑된 파일을 통하는 것입니다. 즉, 두 프로세스 모두 동일한 메모리 매핑된 파일을 열고 그 파일에서 쓰기/읽기이기 때문에 궁금합니다.

OS가 디스크와 메모리를 교환해야 하기 때문에 이는 불이익/단점이 있습니다.

이것이 어리석은 질문이라면 미리 사과드립니다. 그러나 파일에 의해 지원되지 않고 프로세스 간에 순전히 공유 메모리가 있습니까? 그렇다면 프로세스는 메모리 매핑 파일이나 /dev/shm 파일을 사용하지 않고 어떻게 이를 얻을 수 있습니까?

답변1

이것이 어리석은 질문이라면 미리 사과드립니다. 그러나 파일에 의해 지원되지 않고 프로세스 간에 순전히 공유 메모리가 있습니까?

이것은 어리석은 질문이 아닙니다!

예, 이것이 이를 얻는 기본 방법입니다. (SYSV)는 shmget이러한 공유 메모리 버퍼를 얻는 데 사용되는 함수입니다. 문자열 이름을 할당합니다.열쇠, 다른 프로세스가 해당 키를 사용하여 shmget해당 키에 액세스할 수 있습니다. POSIX 방식은 shm_open의미가 매우 유사합니다. 세그먼트에 이름을 지정합니다. 이 이름은 파일 이름과 비슷해 보이지만 일부 하드 드라이브에서는 지원되지 않습니다. 그리고 shm_open같은 이름(호환 가능/없음 플래그 사용)을 사용하여 후속 호출을 하면 액세스 권한이 부여됩니다. 같은 기억으로.

관련 정보