ipc 공유메모리 예제

일부 C++ 라이브러리는 공유 메모리 기능에 대한 이식 가능하고 개체 지향적인 액세스를 제공합니다. 예를 들어 부스트에는 Boost.Interprocess C++ 라이브러리[7]가 포함되어 있으며 Qt는 QSharedMemory 클래스를 제공합니다. [8] shm_open에서 만든 공유 메모리는 영구적입니다. 프로세스에서 명시적으로 제거될 때까지 시스템에 유지됩니다. 이 프로세스가 충돌하 고 공유 메모리를 정리 하지 못하는 경우 시스템 종료 까지 유지 됩니다 단점이 있다. POSIX는 공유 메모리, POSIX 공유 메모리를 사용하기 위한 표준화된 API를 제공합니다. 이 함수s/mman.h에서 shm_open 함수를 사용 합니다. [2] POSIX 프로세스 간 통신(POSIX:XSI 확장의 일부)에는 공유 메모리 함수 shmat, shmctl, shmdt 및 shmget이 포함됩니다. [3] [4] 유닉스 시스템 V는 공유 메모리에 대한 API도 제공합니다. 이것은 shs/shm.h에서 shmget를 사용합니다.

BSD 시스템은 여러 프로세스에서 사용할 수 있는 “익명 매핑된 메모리”를 제공합니다. 컴퓨터 하드웨어에서 공유 메모리는 멀티프로세서 컴퓨터 시스템의 여러 다른 중앙 처리 장치(CPU)에 의해 액세스할 수 있는 임의 액세스 메모리(RAM)의 (일반적으로 큰) 블록을 말합니다. 이제 세마포어를 사용하지 않고 공유 메모리 세그먼트에 대한 동시 액세스의 모든 위험에 대해 준비했습니다. 이것은 미션 크리티컬 한 응용 프로그램이 아니며 다른 프로세스와 동시에 공유 데이터에 액세스 할 가능성은 거의 없으므로 단순성을 위해 세마포를 남겨 둡니다. 프로세스는 실행 중인 프로그램이며 각 프로세스에는 프로세스가 액세스할 수 있는 메모리 위치로 구성된 자체 주소 공간이 있습니다. 프로세스에는 실행 가능한 명령 시퀀스인 하나 이상의 실행 스레드가 있습니다. 프로세스 내의 스레드는 다양한 리소스, 특히 주소 공간을 공유합니다. 따라서 프로세스 내의 스레드는 공유 메모리를 통해 직접 통신할 수 있지만 일부 최신 언어(예: Go)는 스레드 안전 채널 사용과 같은 보다 체계적인 접근 방식을 권장합니다.

This entry was posted in Uncategorized. Bookmark the permalink.