shmget()
우리는 공유 메모리를 사용하고 생성하여 프로세스에 연결할 수 있습니다 shmat()
. Ubuntu 운영 체제에서 공유 메모리를 파괴하고 분리하지 않으면 어떻게 되나요? 제가 이해한 바에 따르면 시스템이 재부팅될 때까지 물리적 메모리에 계속 존재하지만 그 이유는 무엇입니까? 즉, 여러 개의 공유 메모리 블록을 생성하여 많은 공유 메모리 블록으로 물리적 메모리를 로드할 수 있지만 이렇게 하면 물리적 메모리가 비효율적으로 채워지게 될까요? ? ?
답변1
구현 관점에서는 Linux가 구현하는 방식인 램디스크 내부의 파일 시스템과 크게 다르지 않습니다.
프로그램을 종료하기 전에 생성된 파일을 삭제하지 않으면 해당 파일은 계속 존재하며 리소스를 소모하게 됩니다.
SystemV SHM은 거의 사용되지 않습니다. 이를 수행하는 유일한 이유는 매핑이 익명 메모리에 의해 지원되고 변경 시 디스크 쓰기를 생성하지 않으며 이식 가능한 방식으로 수행된다는 것을 보장하기 때문입니다.