해결된 질문
작성
·
384
답변 1
1
안녕하세요 수강중인 수강생입니다.
교수님이 아니라 제 답변이 정확하진 않겠지만 참고하시면 될 것 같습니다.
챕터 3에서 POSIX shared memory는 메모리 맵 파일을 이용한 방법이라고 하셨는데,
그 메모리 파일이 파일 시스템 상에 존재해야 하는 이유가 무엇인가요?
=> 강의에도 보면 메모리 맵 파일이 파일 시스템 상에 존재한단 말이 없는거 같아요
파일 시스템에 파일이 생기듯이 메모리에 파일을 만든다 정도로 설명이 되어있습니다.
( 메모리에 있는 파일이니 엄청 빠르겠다고 설명을 하시면서 )
그리고 퀴즈 #3의 2번에서 "3) shared memory는 memory-mapped file로만 만들 수 있다"가 오답인 걸로 나와있는데
그렇다면 shm_open + mmap이 아닌 다른 방법으로도 만들 수 있는 건가요?
=> shmget, 과 shmmat 로 커널에 공유 메모리 공간을 요청하고, 이 메모리를 attach, dettach 하는 방식도 있습니다.
memory-mapped file 은 memory mapped file 을 open 하고 mmap 을 했다면,
위에 방식은 커널이 큰 메모리 공간을 할당하도록 요청하고 이걸 자신의 process 에서 접근이 가능하도록 attach 하는 방식 입니다.
shmget, 과 shmmat 를 검색해보시면 될거 같습니다.
안녕하세요,
친절한 답변 감사드립니다.
제가 조금 더 알아본 바로는 shm_open으로 생성되는 POSIX shared memory object는
/dev/shm에 마운트된 tmpfs라고 하는, ramdisk와 유사한 파일 시스템에 생성된다고 합니다.
그래서, 답변주신 대로 그 파일은 디스크가 아닌 메모리에 상주하면서 메모리 매핑이 이루어지는 듯 합니다.
혹여나 비슷한 질문을 가진 분들이 계실까봐 설명을 적었습니다.
다시 한번 답변 감사드립니다.