공유메모리 크기~
글쓴이: toughguy / 작성시간: 화, 2007/12/18 - 5:15오후
안녕하세요~
다름이 아니라 공유메모리 크기에 대해 궁금한것이 있네요~
지금 테스트 해봤는데, 만약, 공유할 데이터를
struct Data
{
int id;
char str[9999];
};
int id = shmget((key_t)1234,sizeof(struct Data),0666|IPC_CREAT);
이런식으로 공유한뒤 접근하면 에러가 나는군요.(segmantation Fault)
Data의 크기중 char 부분을 4096 정도로 잡으면 에러가 나지 않구요.
공유메모리로 잡을 수 있는 영역에 제한이 있는걸까요~? 아님 제가 잘못 사용하고 있는 것일까요?
참고사항.
ipcs -l 으로 살펴본 결과는 아래와 같습니다.,
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
참..질문하나더할게요^^;
만약 두개의 쓰레드가 어떤 특정 버퍼를 두고 공유하면서 처리하고 싶은데(싱글버퍼링),
공유메모리 사용보다 더 좋은 방법이 있을까요~?
고수님들의 많은 도움 부탁드립니다.
Forums:
두개의 스레드가
두개의 스레드가 shared memory를 가지고 공유할 필요가 있을까요?
스레드들 사이는 일반 메모리를 공유해도 됩니다.
사이즈로 보면 문제가 없을 듯 합니다. shmget(), shmat() 함수들의
리턴값들이 성공이었는지 체크했나요?
shmget, shmat이 성공했다면 ipcs -m 명령어로 할당된 정보가
출력될겁니다. 그렇지 않다면 할당이 성공하지 않은 것입니다.
댓글 달기