/proc/cpuinfo
에서 현재 Linux는 48 비트 가상 주소 크기 만 사용하고 있음을 알 수 있습니다. /Documentation/x86/x86_64/mm.txt에 따르면 커널 가상 주소는 ffff800000000000 - ffff80ffffffffff (= 40 비트) 보호 구멍에서 시작됩니다. 어떻게 이해할 수 있니? 나는 라인이 hole caused by [48:63] sign extension
이라고 읽는 것을 보았습니다. 커널이 가상 주소를 만날 때 낮은 48 비트 만 해석하고 높은 16 비트는 무시한다는 의미입니까?x86_64의 리눅스 가상 메모리 사용자/커널 공간
1
A
답변
4
부호 확장은 x86-64가 메모리를 주소 지정하는 데 저수준 48 비트만을 사용하기 때문에 발생합니다. 프로그래머가 상위 16 비트를 악용하는 것을 방지하기 위해 47 번째 비트가 부호 확장됩니다. 따라서 비트 47이 0이면 모든 비트 [48:63]는 0이되고 비트 47이 1이면 모든 비트 [48:63]는 1이됩니다. 양식을 "정식"이라고합니다. 비표준 주소 (즉, 비트 [48:63]! = 47 비트)를 사용하려고하면 하드웨어가 일반 보호 오류를 발생시킵니다. 실제로
, 커널의 메모리는 17 상위 비트가 하나 있습니다 그 높은 주소가 있으며, 사용자 공간 메모리는 사람이 행복하지 않은 경우 상위 비트가 0
관련 문제
- 1. 가상 메모리 공간
- 2. 가상 주소 공간 대 가상 메모리
- 3. 리눅스 가상 메모리 매개 변수
- 4. 캐싱을 위해 리눅스 사용자 공간 메모리 사용하기
- 5. 리눅스 64 비트 메모리 공간 크기?
- 6. 가상 메모리 처리 - 스택과 힙 사이의 공간
- 7. Windows의 가상 주소 공간
- 8. 가상 주소 및 가상 주소 공간 이해
- 9. 리눅스 커널 메모리 관리
- 10. Objective-C on x86_64의 비정상적인 메모리 동작
- 11. Linux/x86_64의 프로세스 간 공유 메모리
- 12. 리눅스 커널의 메모리 보호
- 13. 리눅스 - 가상 메모리 주소를 malloc에에서 가상 메모리 주소를 중복 또는 이동
- 14. 힙 공간 - 메모리 관리
- 15. Java 가상 힙 공간
- 16. 코드를 작성하기위한 가상 공간
- 17. "가상 메모리"와 "스왑 공간"의 차이점은 무엇입니까?
- 18. 리눅스 스케줄링 : OS vs "가상"
- 19. 가상 리눅스 시스템
- 20. 만들기 가상 인터페이스 리눅스
- 21. 가상 리눅스 시스템에 접속하기
- 22. 리눅스 가상 박스에서 복구
- 23. 스왑 파티션이없는 가상 메모리
- 24. PAE가 활성화 된 프로세스의 가상 주소 공간
- 25. 프로세스 주소 공간과 가상 메모리
- 26. 리눅스 사용자 공간 ELF 로더
- 27. 물리적 메모리 대 가상 메모리
- 28. 페이지에 전체 프로세스의 가상 주소 공간 분할
- 29. MySQL 메모리 공간
- 30. ExcelDNA 메모리 공간
있습니다 메모리 부족이다 질문 해주세요. 그러나 나는 왜 당신이 질문에 투표를 하는지를 정말로 알고 싶다. –
[x86-64 가상 주소 공간 세부 정보] (http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details) –