제 질문은 리눅스 커널이 가상 메모리를 사용할 수 있는지 또는 항상 고정 메모리를 사용합니까? 또 다른 질문은 소프트 오류로 인해 커널 메모리가 손상된 경우 다음에 어떤 일이 발생합니까? 리눅스는 그러한 결함으로부터 스스로를 보호 할 수있는 메커니즘을 가지고 있습니까?커널에서 가상 메모리를 사용할 수 있습니까? Linux에서
3
A
답변
3
커널은 가상 주소를 사용합니다. 할당 된 메모리, 함수 포인터 등은 모두 가상 주소입니다. 일부 장치에 말하거나 특정 종류의 DMA를 수행 할 때만 물리적 주소를 조작 할 수 있습니다.
"Linux"또는 "The Linux kernel"은 많은 아키텍처에서 실행됩니다. 이러한 아키텍처 중 일부는 메모리 오류 감지 또는 수정 하드웨어를 가질 수 있습니다. 이 장치가 어떻게 지원되는지 모르겠습니다. 그러나 대부분의 아키텍처에서는 메모리 손상에 대한 보호 기능이 없습니다.
하지만 당신은 부드러운 오류에 대해 말하기가 있습니다. 임의의 주소에서 커널 코드 작성을 보호하지 않습니다. 일부 함수는 버그를 잡기 위해 매개 변수를 테스트하지만 버퍼 나 커널 모드에서 스택을 오버플로하면 여러 가지 재미있는 일이 발생할 수 있습니다.
Const 데이터와 코드는 일반적으로 쓰기가 감지 될 수 있도록 읽기 전용 페이지에 배치됩니다. 커널의 메모리 보호는 다음과 같이 제한됩니다.
- 일부 지역에서는 매개 변수를 확인합니다.
- 일부 구조에서는 마법 값입니다.
- 코드 및 const 섹션의 읽기 전용 속성입니다. 전용 속성 읽기
커널이
관련 문제
- 1. CUDA 커널에서 가상 함수 사용
- 2. Linux에서 winnt.h를 사용할 수 있습니까?
- 3. 가상 메모리를 해제하는 방법?
- 4. 코어 데이터를 Linux에서 사용할 수 있습니까?
- 5. Linux에서 PHP로 DLL을 사용할 수 있습니까?
- 6. 가상 컴퓨터에서 dotTrace를 사용할 수 있습니까?
- 7. 가상 사용자가 SFTP 서버를 사용할 수 있습니까?
- 8. 가상 정적 메서드를 사용할 수 있습니까? (C++)
- 9. Linux에서 stat.h를 사용할 수 없습니까?
- 10. 페이지를 관리하거나 가상 메모리를 사용해야합니까?
- 11. 팔 커널 커널에서 얼마나 빨리 kalloc을 호출 할 수 있습니까?
- 12. 커널에서 Linux SIGUSR1을 설정할 수 있습니까?
- 13. windows/linux에서 USWC로 메모리를 매핑하는 방법은 무엇입니까?
- 14. Linux에서 프로세스간에 공유되는 메모리를 보호하는 방법
- 15. 메모리를 해제 한 후에도 메모리를 사용할 수 없습니다.
- 16. char * 유형 문자열에 대해 Linux 커널에서 메모리를 할당하려면 어떻게합니까?
- 17. Linux에서 실행되는 앱에서 Cocoa 클래스를 사용할 수 있습니까?
- 18. Linux에서 gpio로 C/C++ select를 어떻게 사용할 수 있습니까?
- 19. POSIX 메시지 대기열을 Linux에서 교차 사용자로 사용할 수 있습니까?
- 20. PHP5 스크립트를 gentoo Linux에서 어떻게 사용할 수 있습니까?
- 21. iPhone 및 iPod에서 최대 런타임 메모리를 사용할 수 있습니까?
- 22. CUDA 텍스처 메모리를 32 바이트 요소에 사용할 수 있습니까?
- 23. 어쨌든 앱이 16MB 이상의 메모리를 사용할 수 있습니까?
- 24. OS 커널 자체에 가상 메모리를 사용합니까?
- 25. C++ 응용 프로그램이 메모리를 초과하지만 가상 메모리를 사용하지 않습니다.
- 26. 큰 데이터베이스에 RedisDB를 사용할 수 있습니까?
- 27. NetBeans에서 시작된 응용 프로그램에서 가상 메모리를 늘릴 수있는 방법이 있습니까?
- 28. 가상 트리보기에서 여러 개의 확장 노드를 사용할 수 있습니까?
- 29. Windows에서 메모리의 일부를 가상 파일로 사용할 수 있습니까?
- 30. setter/getter를 사용하여 클래스 변수를 가상 변수처럼 사용할 수 있습니까?
당신이 "어떤 구조의 마법 값"무엇을 의미합니까 가상 메모리를 사용하기 때문에 만 가능? – MetallicPriest