강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của sete36834742
sete36834742

câu hỏi đã được viết

Bài giảng sách khủng long hệ điều hành

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

Đã giải quyết

Viết

·

490

0

안녕하세요 교수님,

 

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

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

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

 

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

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

 

감사합니다.

동시성운영체제

Câu trả lời 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 를 검색해보시면 될거 같습니다.

sete님의 프로필 이미지
sete
Người đặt câu hỏi

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

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

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

감사합니다.

Hình ảnh hồ sơ của sete36834742
sete36834742

câu hỏi đã được viết

Đặt câu hỏi