다음과 같은 이점이 있습니다. shm_open
mmap
?
일반 파일을 생성 한 다음 fd
을 mmap
에 전달하면 어떨까요?
shm_open
의 장점을 볼 수 없습니다. 단지 참고서 일뿐입니다.왜 shm_open을 사용합니까?
나는 온 가족의 남자를 읽었습니다. 그것은 "비밀"이 mmaping 동작에있는 것 같습니다. 파일 "type"은 의미가없는 것처럼 보입니다.
특히 성능 계정에서 어떤 포인터가 좋을 것입니다.
내 컨텍스트는 끊임없이 하나의 프로세스로 작성되고 다른 프로세스에서 지속적으로 덤프되는 (반복적 인 쓰기 가능한) 버퍼 (예 : 128MB)입니다.
예 : this open/mmap 방식의 문제점.
편집
가 정확하려면, 중 하나입니다 다른 것보다 더 나은 다음
fd = open("/dev/shm/myshm.file", O_CREAT|O_RDWR, S_IRUSR | S_IWUSR); mem = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
대
나는 /dev/shm
FS에서 일반 open
을 가진 파일을 생성하고, 버려진 fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR); mem = mmap(...same as before...);
쓰레기를 가져다 쓰면 사용 가능한 메모리가 1G로 내려 갔고 사용 가능한 디스크 공간은 동일하게 유지되었습니다.
두 가지 방법의 차이점은 무엇입니까?
시도해보십시오. 파일에 쓰는 것은 아마도 100 배 더 느릴 것입니다. –