Linux
objdump활용 vmlinux 분석시 start address의미
Jminu
2025. 9. 11. 00:21
objdump로 vmlinux를 분석했을 때,
start address가 0xffffffc080000000이다.
즉, 처음 vmlinux가 실행될 메모리 주소가 이미 정해진 것이나 마찬가지인데
이게 어떻게 가능할까라는 생각이 들었다.
만약 이미 이 주소를 다른 프로세스가 사용중일 수 있지 않을까?
라는 생각이 들었다.

간단하게 말하면, 다른 프로세스가 사용중일리가 없다.
objdump로 vmlinux를 분석할 때 보이는 start address는 물리 메모리 주소를 의미한다.
Kernel은 부팅될 때 부트로더에 의해 약속된 위치에 로드되기 때문이다.
반면, 일반 응용 프로그램의 경우 start address는 가상 메모리 주소를 의미한다.
미리 고정된 가상주소를 할당하고, 실제 실행시에 MMU에 의해 실제 메모리의 빈 공간으로 매핑된다.
따라서 가상주소의 경우 겹쳐도 상관이 없다.