• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

shared memory 관련해서 질문 드립니다.

22.08.10 22:31 작성 조회수 274

0

안녕하세요 교수님,

 

챕터 3에서 POSIX shared memory는 메모리 맵 파일을 이용한 방법이라고 하셨는데,

그 메모리 파일이 파일 시스템 상에 존재해야 하는 이유가 무엇인가요?

그냥 RAM에 바로 만들어서 쓸 수는 없는건가요?

 

그리고 퀴즈 #3의 2번에서 "3) shared memory는 memory-mapped file로만 만들 수 있다"가 오답인 걸로 나와있는데

그렇다면 shm_open + mmap이 아닌 다른 방법으로도 만들 수 있는 건가요?

 

감사합니다.

답변 1

답변을 작성해보세요.

1

Min Kang님의 프로필

Min Kang

2022.08.22

안녕하세요 수강중인 수강생입니다.

교수님이 아니라 제 답변이 정확하진 않겠지만 참고하시면 될 것 같습니다.

 

챕터 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 를 검색해보시면 될거 같습니다.

sete님의 프로필

sete

질문자

2022.08.23

안녕하세요,
친절한 답변 감사드립니다.
제가 조금 더 알아본 바로는 shm_open으로 생성되는 POSIX shared memory object는
/dev/shm에 마운트된 tmpfs라고 하는, ramdisk와 유사한 파일 시스템에 생성된다고 합니다.
그래서, 답변주신 대로 그 파일은 디스크가 아닌 메모리에 상주하면서 메모리 매핑이 이루어지는 듯 합니다.

혹여나 비슷한 질문을 가진 분들이 계실까봐 설명을 적었습니다.
다시 한번 답변 감사드립니다.

Min Kang님의 프로필

Min Kang

2022.08.23

아주 상세하게 알아보셧군요 ^^ 덕분에 저도 공부하고 가네요

감사합니다.