Shared memory
공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리이다. 과다한 복사를 피하거나 해당 프로그램 간 통신을 위해 고안되었다. 환경에 따라 프로그램은 하나의 프로세서에서나 여러 개의 프로세서에서 실행할 수 있다. (예를 들어 여러 개의 스레드 간에) 하나의 프로그램 안에서 통신을 위해 메모리를 사용하는 일은 일반적으로 공유 메모리로 부르지 않는다.
Categories
- Python:mmap: Python의 Memory Map을 사용한 IPC
- Python:SharedArray
- Python:multiprocessing.shared_memory
Libraries
커널 설정
sysctl로 최대 크기를 설정할 수 있다.
다음 명령으로 확인:
관련 변수 및 상태 조회
- 최대 공유 메모리 세그먼트 크기 (SHMMAX)
-
/proc/sys/kernel/shmmax
파일에 설정된 값입니다. - 이 값은 단일 공유 메모리 세그먼트의 최대 크기를 바이트 단위로 지정합니다.
- 전체 시스템에서 사용할 수 있는 공유 메모리 총 크기 (SHMALL)
-
/proc/sys/kernel/shmall
파일에 설정된 값입니다. - 이 값은 시스템 전체에서 사용할 수 있는 공유 메모리의 총 크기를 페이지 수 단위로 지정합니다. (1 페이지는 보통 4096 바이트)
- 최대 공유 메모리 세그먼트 개수 (SHMMNI)
-
/proc/sys/kernel/shmmni
파일에 설정된 값입니다. - 이 값은 시스템에서 사용할 수 있는 최대 공유 메모리 세그먼트의 수를 지정합니다.
위 설정을 변경한 후에는 해당 설정이 시스템 재부팅 후에도 유지되도록 하기 위해 /etc/sysctl.conf 파일에 다음과 같은 내용을 추가할 수 있습니다:
그런 다음 sysctl -p
명령을 실행하여 설정을 적용합니다.
추가로, 현재 시스템에서 사용 중인 공유 메모리 세그먼트를 확인하려면 ipcs 명령어를 사용할 수 있습니다. 이 명령어는 현재 시스템의 공유 메모리 세그먼트, 세마포어 배열 및 메시지 큐의 상태를 보여줍니다:
이 명령어는 현재 시스템에서 사용 중인 모든 공유 메모리 세그먼트의 목록을 출력합니다. 각 세그먼트의 키, ID, 소유자, 크기 및 기타 정보를 볼 수 있습니다.
또한, /proc/meminfo
파일을 통해 전체 시스템 메모리 정보와 함께 현재 사용 중인 공유 메모리 양을 확인할 수도 있습니다.
See also
Favorite site
Windows
- [https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa366551(v=vs.85.aspx MSDN - Creating Named Shared Memory]
- 파일 매핑을 이용하여 프로세스간 메모리 공유
- 팁스소프트 > 우리들 이야기 > 공유메모리(Shared Memory)에 관한 간단한 설명 및 예제
- 공유 메모리(MMF)를 사용해보자
- 공유메모리 사용 예제