bunta의 보조기억장치

[3주차 TIL] KnockOn Bootcamp 로더 본문

KnockOn Bootcamp

[3주차 TIL] KnockOn Bootcamp 로더

bunta 2025. 4. 19. 18:34
반응형

💡 로더(Loader)란?

실행 가능한 파일을 메모리에 적절하게 배치하고 실행할 준비를 해주는 시스템 프로그램이다.

예를 들어 터미널에서 ./myapp 이나 main.exe를 실행했을 때 이걸 메모리에 올리고 실행 가능한 상태로 만드는 작업을 하는 게 바로 이 로더이다.


🔎 로더 작동방식

1. 할당(Allocation)

    - 실행 파일의 구조를 분석하여 필요한 메모리 공간을 예약

 

2. 연결(Linking)

    - 실행 파일이 사용하는 외부 함수나 전역 변수의 심볼을 연결

 

3. 재배치(Relocation)

    - 각 심볼의 실제 메모리 주소를 계산하여 실행 파일 내 참조 위치들을 올바른 주소로 수정

 

4. 적재(Loading)

    - 준비된 코드와 데이터들을 예약한 메모리 공간에 실제로 적재하고 실행 파일의 진입점(Entry Point)로 점프하여 실행을 시작


🔎 동적 라이브러리를 로드하는 과정

1. 실행 파일 분석

    - 운영체제가 실행 파일을 열어 동적 링킹 여부를 확인

 

2. 동적 링커 실행

    - 동적 링커가 로딩되어 프로세스의 메모리 공간 안에서 함께 실행됨

 

3. 필요한 라이브러리 검색

    - 환경 변수 등을 통해 .so 파일이나 .dll 파일을 검색

 

4. 라이브러리 메모리에 로딩

    - 3번 과정에서 찾은 라이브러리 파일들을 시스템 콜을 통해 메모리에 로드

 

5. 심볼 연결 및 재배치

    - 실행 파일이나 다른 라이브러리에서 사용하는 함수와 변수 심볼들을 각 라이브러리 파일 내에서 찾아 주소를 연결

 

6. 라이브러리 초기화 함수 호출

 

7. 프로그램 실행

    - 모든 라이브러리 로딩과 주소 연결이 끝나면 프로그램의 진입점으로 이동

반응형
Comments