디버거의 신비 풀기: 실행 중인 프로그램의 해부
2024-12-24
이 글에서는 실행 중인 프로그램의 저수준 메커니즘을 심층적으로 다룹니다. NES 게임 카트리지의 비유를 사용하여 현대 운영 체제가 프로그램 실행을 가상화하는 방식을 설명합니다. 가상 주소 공간, 실행 스레드, 실행 파일 이미지, 로더, 모듈, 프로세스와 같은 핵심 개념을 자세히 설명합니다. 이 글에서는 페이지 테이블을 통해 가상 주소 공간이 가상 주소를 물리 주소에 매핑하는 방법을 설명하여 여러 프로그램이 물리 메모리를 서로 간섭하지 않고 공유할 수 있도록 합니다. 또한 스레드 스케줄링, 실행 파일 이미지 형식(PE 및 ELF), 로더의 역할, 모듈의 동적 로드/언로드에 대해서도 설명합니다. 마지막으로 스레드, 모듈, 가상 주소 공간을 통합한 실행 중인 프로그램의 인스턴스인 프로세스의 개념을 요약합니다.