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

간단하게 말하면, 다른 프로세스가 사용중일리가 없다.
objdump로 vmlinux를 분석할 때 보이는 start address는 물리 메모리 주소를 의미한다.
Kernel은 부팅될 때 부트로더에 의해 약속된 위치에 로드되기 때문이다.
반면, 일반 응용 프로그램의 경우 start address는 가상 메모리 주소를 의미한다.
미리 고정된 가상주소를 할당하고, 실제 실행시에 MMU에 의해 실제 메모리의 빈 공간으로 매핑된다.
따라서 가상주소의 경우 겹쳐도 상관이 없다.
'Linux' 카테고리의 다른 글
| 커널에서 static inline 함수선언과 wrapping (0) | 2025.09.20 |
|---|---|
| linux/drivers/char/mem.c 드라이버 분석 (0) | 2025.09.20 |
| 디바이스 드라이버 (0) | 2025.08.01 |
| 커널 모듈 (insmod, lsmod, rmmod) 커널 API (5) | 2025.07.30 |
| ls 명령어 분석 with strace (1) | 2025.07.29 |