2013-02-25 4 views
0

'단일 프로세스도 시스템의 실제 메모리보다 큰 가상 주소 공간을 가질 수 있습니다'라는 것을 알고 있습니다. 따라서 실제 메모리보다 큰 가상 메모리를 생성하는 책임이있는 커널 코드를 알고 싶습니까?가상 메모리를 담당하는 커널 코드

두 번째로, 코드를 조금 크게 변경할 수 있습니까? 성능상의 이점이 있습니까? 가상 메모리를 확장하기 위해 코드를 변경하면 어떻게됩니까?

+0

가 왜 요구하고있다 (그러나 등 ..., 거의 모든 파일 시스템이 mmap 특정 코드를 가지고 있으며, 페이지 오류도 일정 관련이 있습니다)? "조금 큰 것"으로 무엇을 의미합니까? –

답변

0

모든 메모리 관리 (및 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/ 하위 디렉토리

관련 문제