vmalloc()이 새 메모리를 할당하는 프로세스의 페이지 테이블은 무엇입니까?

vmalloc()이 새 메모리를 할당하는 프로세스의 페이지 테이블은 무엇입니까?

나는 이것이 시스템 호출을 만드는 프로세스의 메모리에서 이 작업을 수행한다고 추측합니다. 그렇다면 나머지 프로세스는 해당 공간을 어떻게 사용합니까? 커널은 버퍼가 실제 주소 공간이 아닌 가상 주소 공간을 가리킨다는 것을 어떻게 알 수 있습니까? 하지만 이는 일반적인 커널 작업을 위해 프로세스 공간을 차지하는 것과 같습니다. 그렇지 않습니까?

답변1

vmalloc커널 할당자이며 (반드시 그런 것은 아님) 프로세스와 관련되어 있습니다. 대부분의 경우 커널은 선형 메모리가 아닌 가상 메모리도 확인합니다. 특이한 점 vmalloc은 연속된 가상 메모리만 할당하고 kmalloc물리적 메모리는 연속적으로 할당하지 않는다는 것입니다. 둘 다 가상 주소를 반환합니다.

vmalloc와 달리 새 페이지 테이블 항목은 미리 매핑된 영역에서 kmalloc할당되어야 합니다 .kmalloc페이지 테이블 트리의 공유 부분또는 KPTI가 활성화된 경우 트리의 커널 전용 부분에 있습니다.

바라보다리눅스 장치 드라이버자세한 내용은 8장을 참조하세요.

관련 정보