[해키피디아] Shared Memory

공유 메모리(Shared Memory)란 여러 프로그램에서 중복적으로 사용되는 메모리는 자원 낭비를 최소화 하기 위해 여러 프로그램이 동시에 접근 가능한 메모리 영역을 설정한 메모리 영역을 말합니다. 즉, 프로세스끼리 서로 필요한 데이터를 주고 받는 프로세스간 통신(IPC,Inter Process Communication) 방식의 한 가지로 볼 수 있습니다.

Untitled.jpg

일반적으로 애플리케이션들은 하나의 프로세스로 구성되어 있으며 이 프로세스들은 각각의 메모리를 독립적으로 사용하지만 공유 메모리를 사용하면 데이터 복사 과정이 생략되기 때문에 처리속도도 여러 IPC 통신 중에서도 뛰어난 처리속도를 가집니다.

프로세스가 공유 메모리를 사용하기 위해 생성되는 과정에 대해 간략히 살펴보겠습니다. 공유 메모리를 사용하는 프로세스는 커널에 공유 메모리를 위한 공간 할당을 요청합니다. 이후 커널 측에서 요청한 공간을 할당해주고 해당 공유 메모리를 shmid_ds구조체를 사용해 커널 측에서 관리합니다. 이렇게 만들어진 공유 메모리는 사용하는 프로세스가 없다고 해서 해제되지 않고 기기 자체를 리부팅하거나 직접적으로 해제 요청한 경우에만 해제되는 특징을 가지고 있습니다.