실제로 128KB가 아닌 실제로 64KB의 메모리 만 할당하고 수동으로 정렬하려면 너무 많은 낭비가 있습니다. Windows의 VirtualAlloc은 정확하게이 동작을 제공합니다. 아마도 SquirrelFish에는 모든 플랫폼에서이 작업을 수행하는 코드가 있지만 아마 그 위치를 찾을 수 없었습니다. POSIX에서 64KB 경계에 64KB를 할당하는 공간 효율적인 방법이 있습니까? 리눅스에서는 실패 했나요?POSIX : 64KB 경계에 64KB 할당
0
A
답변
8
체크 아웃 posix_memalign(3)
사용법
#include <stdlib.h> int posix_memalign(void **memptr, size_t alignment, size_t size);
설명
The posix_memalign() function allocates size bytes of memory such that the allocation's base address is an exact multiple of alignment, and returns the allocation in the value pointed to by memptr.
체크 아웃 자세한 내용은 맨 페이지 ...
0
mmap()을 MAP_PRIVATE와 함께 사용할 수 있습니다. 상당수의 libc 할당자는 요즘 내부에서 할당 할 메모리 덩어리를 얻기 위해 내부적으로 mmap()을 사용합니다.
0
물론 posix_memalign은 훌륭한 해결책이지만 128k를 할당하더라도 아무런 변경되지 않은 페이지는 쓰기시 복사 제로 페이지로 유지되며 최소한의 물리적 리소스 만 사용합니다. 또한 mmap을 MAP_PRIVATE와 함께 사용하여 128k 맵을 만든 다음 그 중 어떤 부분이 정렬되지 않았는지 munmap 할 수 있습니다.
관련 문제
- 1. 데이터베이스에 64KB 버퍼 크기 제한보다 큰 텍스트 파일을 어떻게로드합니까?
- 2. C++/VC++에서 64KB 크기의 파일에 로그를 쓰는 방법은 무엇입니까?
- 3. 64KB 버퍼 크기 제한보다 큰 텍스트 파일을로드하려면 어떻게합니까?
- 4. C64의 경계에 스프라이트를 어떻게 표시합니까?
- 5. MIME 경계에 적용되는 규칙은 무엇입니까?
- 6. CATransition UIView의 경계에 클립하는 방법?
- 7. WPF, 컨테이너 경계에 애니메이션 적용
- 8. 공유 메모리의 대기열 만들기 POSIX
- 9. POSIX 공유 메모리를 사용할 때 POSIX 세마포어는 어디에 두어야합니까?
- 10. 이해 POSIX 스레드 내가 POSIX 스레드와 약간의 혼동이
- 11. POSIX 쓰레드와 시그널
- 12. POSIX 메시지 큐 보안
- 13. POSIX 호환 커널 작성
- 14. OSX는 POSIX OS입니까?
- 15. POSIX threading on ios
- 16. POSIX 구현 상태
- 17. Posix 스레드 문제
- 18. POSIX 스레드 인수
- 19. posix 스레드와 O3 최적화
- 20. POSIX raw 읽기/쓰기
- 21. POSIX 시스템의 좀비 스레드
- 22. 은 가벼운 posix 파이프입니까?
- 23. posix semphores 질문 사용
- 24. posix pthreads in C
- 25. ScriptingBridge Finder POSIX 경로
- 26. POSIX : strtod - 질문
- 27. POSIX 신호 동작
- 28. 날짜의 POSIX 표현
- 29. POSIX 세마포어 이름을 얻으려면
- 30. POSIX 스레드 및 SIGSEGV
이 응용 프로그램에 관해서는 상당히 궁금합니다. 페이지 크기 조정 이상의 사용자 공간 상황은 거의 볼 수 없습니다. – caf
@caf : OP는 추가 정보를 저장하기 위해 포인터의 하위 16 비트를 사용하고 싶습니다. 어느 쪽이든, 또는 32 비트 레지스터의 16 비트 부분이 다른 것으로 사용하거나 심지어'eax'가 포인터이고'al'과'ah'가 x이고 y 좌표가 256x256 이미지 또는 뭔가 ... –