Linux

objdump활용 vmlinux 분석시 start address의미

Jminu 2025. 9. 11. 00:21

objdump로 vmlinux를 분석했을 때,

start address가 0xffffffc080000000이다.

 

즉, 처음 vmlinux가 실행될 메모리 주소가 이미 정해진 것이나 마찬가지인데

이게 어떻게 가능할까라는 생각이 들었다.

 

만약 이미 이 주소를 다른 프로세스가 사용중일 수 있지 않을까?

라는 생각이 들었다.

objdump 실행, 출력 일부분

간단하게 말하면, 다른 프로세스가 사용중일리가 없다.

objdump로 vmlinux를 분석할 때 보이는 start address는 물리 메모리 주소를 의미한다.

Kernel은 부팅될 때 부트로더에 의해 약속된 위치에 로드되기 때문이다.

 

반면, 일반 응용 프로그램의 경우 start address는 가상 메모리 주소를 의미한다.

미리 고정된 가상주소를 할당하고, 실제 실행시에 MMU에 의해 실제 메모리의 빈 공간으로 매핑된다.

따라서 가상주소의 경우 겹쳐도 상관이 없다.