'공유메모리'에 해당되는 글 2건

  1. 2010.01.14 shared memory
  2. 2008.01.31 공유메모리 설정

shared memory

|

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

int shmget (key_t key, size_t size, int shmflg);
void *shmat (int shm_id, const void * shm_addr, int shmflg);
int shmctl (int shm_id, int cmd, struct shmid_ds *buf);
int shmdt (const void * shm_addr);

  1. shmget : int shmget (key_t key, size_t size, int shmflg)
    1. 공유메모리 세그먼트를 size만큼 만든 후 공유메모리의 식별자를 반환한다
    2. key
      1. 공유메모리를 얻기위한 key (IPC_PRIVATE : 프로세스가 단독으로 사용하는 공유 메모리 식별자를 반환)
    3. size
      1. 할당할 공유메모리 사이즈 (PATESIZE로 round up해서 할당된다고 함)
    4. shmflg
      1. IPC_CREATE : 셋팅되어있으면 파일을 생성한다
      2. IPC_EXCL : IPC_CREATE와 같이 쓰이면 이미 파일이 존재하면 함수는 실패한다
  2. shmat : void *shmat (int shm_id, const void * shm_addr, int shmflg)
    1. shmget만으로는 공유메모리를 사용할 수 없다. shmat을 통해서 프로세스의 주소공간에 공유메모리를 연결한다
    2. shm_id
      1. shmget으로 부터 반환받은 식별자
    3. shm_addr
      1. 공유메모리공간이 맵핑될 공간 (일반적으로 NULL을 선택해서 시스템이 직접선택하게한다)
    4. shmflg
      1. SHM_RDONLY : 공유메모리를 읽기전용으로
      2. SHM_RND : shmaddr이 NULL 이 아닌 경우일때만 사용되면 shmaddr을 반올리하여 메모리 페이지 경계에 맞춘다
  3. shmdt
  4. shmctl




 

And

공유메모리 설정

|
/proc/sys/kernel/shmmax 파일에 저장되어있다

sysctl -w kernel .shmmax=4000000000
을통해서 영구적으로 커널의 공유메모리의 맥스사이즈를 정해준다.
And
prev | 1 | next