오늘 나는 파일 시스템에 관한 몇 가지 문서를 읽었습니다.http://tekrants.me/2014/07/14/linux-file-system-write/). 이 기사에서는 "커널 페이지"라는 용어가 여러 번 언급되었습니다. 나는 이제 커널과 사용자 메모리 사용량에 대해 매우 혼란스러워합니다.
내가 아는 한, 커널과 사용자, 사용자의 주소 공간은 서로 다릅니다. 가상 대 물리적 매핑은 서로 독립적입니다. 커널 주소 공간에 매핑된 메모리를 사용자 주소 공간에 매핑할 수 없나요?
그리고 위에서 언급한 기사에서는 기본적으로 페이지 캐싱 사용에 관한 것입니다. 그렇다면 운영 체제가 디스크의 일부 데이터나 코드를 페이지 캐시로 로드하라는 요청을 받으면 데이터와 코드를 보유하는 페이지는 어디에서 가져와야 할까요? 사용자가 이 페이지에 액세스할 수 있나요?
답변1
커널은 메모리를 관리하므로 커널 코드는 커널 공간과 사용자 공간 모두에 액세스할 수 있습니다. "커널 공간"에 대해 이야기할 때 일반적으로 커널 전용 페이지를 참조합니다.
"사용자 공간"은 단일 개체가 아닙니다. 각 프로세스에는 자체 주소 공간이 있으며 이는 다른 프로세스와 부분적으로 겹칠 수 있습니다.
캐시는 커널에 의해 관리되며 사용자 공간 코드로 액세스할 수 없습니다. 물론, 커널은 필요한 경우 커널 공간에서 사용자 공간으로 페이지를 전송할 수 있습니다.