K 개발자

공유 메모리 본문

유닉스(Unix)/시스템 프로그래밍

공유 메모리

ddingz 2021. 8. 20. 16:33

공유 메모리 관련 함수

공유 메모리shared memory는 같은 메모리 공간을 두 개 이상의 프로세스가 공유하는 것이다.
같은 메모리 공간을 사용하므로 이를 통해 데이터를 주고받을 수 있다.
여러 프로세스가 메모리를 공유하고 있으므로 당연히 읽고 쓸 때 동기화가 필요하다.
공유 메모리를 동기화하지 않을 경우 데이터가 손실될 수 있다.

공유 메모리 생성 : shmget(2)

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int shmget(key_t key, size_t size, int shmflg);
// key : IPC_PRIVATE 또는 ftok 함수로 생성한 키, size : 공유할 메모리의 크기, shmflg : 공유 메모리의 속성을 지정하는 플래그

공유 메모리 연결 : shmat(2)

#include <sys/types.h>
#include <sys/shm.h>

void *shmat(int shmid, const void *shmaddr, int shmflg);
// shmid : shmget 함수로 생성한 공유 메모리 식별자, shmaddr : 공유 메모리를 연결할 주소, shmflg : 공유 메모리에 대한 읽기/쓰기 권한

공유 메모리 연결 해제 : shmdt(2)

#include <sys/types.h>
#include <sys/shm.h>

int shmdt(char *shmaddr);
// shmaddr : 연결을 해제할 공유 메모리의 시작 주소

공유 메모리 제어 : shmctl(2)

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int shmctl(int shmid, int cmd, struct shmid_ds *buf);
// shmid : shmget 함수로 생성한 공유 메모리 식별자, cmd : 수행할 제어 기능, buf : 제어 기능에 사용되는 공유 메모리 구조체의 주소

'유닉스(Unix) > 시스템 프로그래밍' 카테고리의 다른 글

세마포어  (0) 2021.08.20
메시지 큐  (0) 2021.08.19
시스템 V IPC의 공통 요소  (0) 2021.08.19
이름 있는 파이프  (0) 2021.08.19
이름 없는 파이프  (0) 2021.08.19
Comments