'단일 프로세스도 시스템의 실제 메모리보다 큰 가상 주소 공간을 가질 수 있습니다'라는 것을 알고 있습니다. 따라서 실제 메모리보다 큰 가상 메모리를 생성하는 책임이있는 커널 코드를 알고 싶습니까?가상 메모리를 담당하는 커널 코드
두 번째로, 코드를 조금 크게 변경할 수 있습니까? 성능상의 이점이 있습니까? 가상 메모리를 확장하기 위해 코드를 변경하면 어떻게됩니까?
'단일 프로세스도 시스템의 실제 메모리보다 큰 가상 주소 공간을 가질 수 있습니다'라는 것을 알고 있습니다. 따라서 실제 메모리보다 큰 가상 메모리를 생성하는 책임이있는 커널 코드를 알고 싶습니까?가상 메모리를 담당하는 커널 코드
두 번째로, 코드를 조금 크게 변경할 수 있습니까? 성능상의 이점이 있습니까? 가상 메모리를 확장하기 위해 코드를 변경하면 어떻게됩니까?
모든 메모리 관리 (및 address space) 관리 코드가 관련되어 있습니다.
보기의 응용 프로그램 관점에서, 당신은 (커널이 MMU를 제어하고 page faults을 처리) virtual memory 더 이해해야합니다, 특히 mmap(2), mprotect(2), madvise(2), execve(2) 콜. 응용 프로그램은이 syscalls를 사용하여 주소 공간을 변경합니다. proc(5) 파일 시스템을 사용하여 쿼리 할 수 있습니다. 예를 들어 cat /proc/self/maps
은 해당 프로세스를 실행하는 주소 공간을 보여줍니다. cat
또한 Advanced Linux Programming을 읽습니다. VDSO & ASLR에 대해 자세히 알아보십시오. 커널 내에서
는 관련 소스 코드는 대부분의 mm/ 하위 디렉토리
가 왜 요구하고있다 (그러나 등 ..., 거의 모든 파일 시스템이
mmap
특정 코드를 가지고 있으며, 페이지 오류도 일정 관련이 있습니다)? "조금 큰 것"으로 무엇을 의미합니까? –