Linux 커널은 데이터용으로 가상 메모리를 사용합니까?

Linux 커널은 데이터용으로 가상 메모리를 사용합니까?

Linux 커널은 데이터 구조(페이지 테이블, 설명자 등)에 가상 메모리를 사용합니까? 뿐만 아니라:

커널 공간 주소는 MMU(페이지 테이블 워크)에서 변환됩니까?

커널 메모리를 교체할 수 있나요?

커널 데이터 구조에 대한 메모리 액세스로 인해 페이지 오류가 발생할 수 있습니까?

이와 관련하여 리눅스와 다른 유닉스 사이에 차이점이 있습니까?

답변1

커널 공간 주소는 MMU(페이지 테이블 워크)에서 변환됩니까?

예, 모든 주소는 MMU에서 번역됩니다.MMU가 Unix/Linux 커널 내부에 있습니까? 아니면 자체 메모리가 있는 하드웨어 장치에만 있습니까?더 알아보기.

커널 메모리를 교체할 수 있나요?

커널할 수 있다이론적으로는 교체가 가능하도록 설계할 수 있습니다. 실제로 이것은 어렵습니다. 특히 Linux 커널을 교체할 수 없기 때문입니다. 그러나 커널의 일부 코드 경로는 페이징을 처리해야 합니다.커널이 프로세스 자체와 동일한 가상 주소 공간에 매핑될 때 "copy_from_user()" 및 "copy_to_user()"가 필요한 이유는 무엇입니까?예를 들어.

커널 데이터 구조에 대한 메모리 액세스로 인해 페이지 오류가 발생할 수 있습니까?

전부는 아니지만 대부분의 경우 이런 일이 발생하면 커널 패닉이 발생합니다. 그렇습니다. 그런 일이 일어날 수는 있지만 실수가 될 것입니다.

이와 관련하여 리눅스와 다른 유닉스 사이에 차이점이 있습니까?

내가 아는 한, 다른 (현재) Unix 기반 구현은 비슷합니다. 초기 Unix는 가상 메모리 기반 스와핑을 지원하지 않았습니다(어쨌든 아무 페이지나 불러오면 문제가 되지 않습니다.

관련 정보