Linux 커널은 데이터 구조(페이지 테이블, 설명자 등)에 가상 메모리를 사용합니까? 뿐만 아니라:
커널 공간 주소는 MMU(페이지 테이블 워크)에서 변환됩니까?
커널 메모리를 교체할 수 있나요?
커널 데이터 구조에 대한 메모리 액세스로 인해 페이지 오류가 발생할 수 있습니까?
이와 관련하여 리눅스와 다른 유닉스 사이에 차이점이 있습니까?
답변1
커널 공간 주소는 MMU(페이지 테이블 워크)에서 변환됩니까?
예, 모든 주소는 MMU에서 번역됩니다.MMU가 Unix/Linux 커널 내부에 있습니까? 아니면 자체 메모리가 있는 하드웨어 장치에만 있습니까?더 알아보기.
커널 메모리를 교체할 수 있나요?
커널할 수 있다이론적으로는 교체가 가능하도록 설계할 수 있습니다. 실제로 이것은 어렵습니다. 특히 Linux 커널을 교체할 수 없기 때문입니다. 그러나 커널의 일부 코드 경로는 페이징을 처리해야 합니다.커널이 프로세스 자체와 동일한 가상 주소 공간에 매핑될 때 "copy_from_user()" 및 "copy_to_user()"가 필요한 이유는 무엇입니까?예를 들어.
커널 데이터 구조에 대한 메모리 액세스로 인해 페이지 오류가 발생할 수 있습니까?
전부는 아니지만 대부분의 경우 이런 일이 발생하면 커널 패닉이 발생합니다. 그렇습니다. 그런 일이 일어날 수는 있지만 실수가 될 것입니다.
이와 관련하여 리눅스와 다른 유닉스 사이에 차이점이 있습니까?
내가 아는 한, 다른 (현재) Unix 기반 구현은 비슷합니다. 초기 Unix는 가상 메모리 기반 스와핑을 지원하지 않았습니다(즉어쨌든 아무 페이지나 불러오면 문제가 되지 않습니다.