일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- study
- 개인서버
- 정보처리기능사
- cording
- knockon
- Java
- git
- plan
- php
- 오답풀이
- WPF
- 매크로
- 자격증
- Mac
- 방화벽
- 개발
- 프로그래밍 언어론
- React
- 홈서버
- 외부접속
- 프로그래밍언어론
- windows
- CSS
- 220821
- Developer
- CodeIgniter
- 개발공부
- html
- C
- bootcamp
- Today
- Total
bunta의 보조기억장치
[3주차 TIL] KnockOn Bootcamp 로더 본문
💡 로더(Loader)란?
실행 가능한 파일을 메모리에 적절하게 배치하고 실행할 준비를 해주는 시스템 프로그램이다.
예를 들어 터미널에서 ./myapp 이나 main.exe를 실행했을 때 이걸 메모리에 올리고 실행 가능한 상태로 만드는 작업을 하는 게 바로 이 로더이다.
🔎 로더 작동방식
1. 할당(Allocation)
- 실행 파일의 구조를 분석하여 필요한 메모리 공간을 예약
2. 연결(Linking)
- 실행 파일이 사용하는 외부 함수나 전역 변수의 심볼을 연결
3. 재배치(Relocation)
- 각 심볼의 실제 메모리 주소를 계산하여 실행 파일 내 참조 위치들을 올바른 주소로 수정
4. 적재(Loading)
- 준비된 코드와 데이터들을 예약한 메모리 공간에 실제로 적재하고 실행 파일의 진입점(Entry Point)로 점프하여 실행을 시작
🔎 동적 라이브러리를 로드하는 과정
1. 실행 파일 분석
- 운영체제가 실행 파일을 열어 동적 링킹 여부를 확인
2. 동적 링커 실행
- 동적 링커가 로딩되어 프로세스의 메모리 공간 안에서 함께 실행됨
3. 필요한 라이브러리 검색
- 환경 변수 등을 통해 .so 파일이나 .dll 파일을 검색
4. 라이브러리 메모리에 로딩
- 3번 과정에서 찾은 라이브러리 파일들을 시스템 콜을 통해 메모리에 로드
5. 심볼 연결 및 재배치
- 실행 파일이나 다른 라이브러리에서 사용하는 함수와 변수 심볼들을 각 라이브러리 파일 내에서 찾아 주소를 연결
6. 라이브러리 초기화 함수 호출
7. 프로그램 실행
- 모든 라이브러리 로딩과 주소 연결이 끝나면 프로그램의 진입점으로 이동
'KnockOn Bootcamp' 카테고리의 다른 글
[3주차 TIL] KnockOn Bootcamp ELF 파일 구조 (0) | 2025.04.21 |
---|---|
[3주차 TIL] KnockOn Bootcamp 메모리 구조와 매핑 (0) | 2025.04.20 |
[3주차 TIL] KnockOn Bootcamp 링커 (0) | 2025.04.19 |
[3주차 TIL] KnockOn Bootcamp 컴파일러 (0) | 2025.04.17 |
[3주차 TIL] KnockOn Bootcamp 아키텍처 (0) | 2025.04.16 |