ELF 섹션과 가상 메모리 페이지의 관계

edward·2025년 10월 22일

기본 개념

구분섹션(Section)페이지(Page)
소속실행 파일(ELF) 내부 구조운영체제가 관리하는 메모리 단위
역할코드/데이터를 논리적으로 구분 (.text, .data, .bss 등)실제 메모리에서 접근 권한과 관리 단위
크기가변 (몇 바이트 ~ 수 KB)고정 (보통 4KB)
권한섹션별로 지정 (r-x, rw-, r--)페이지 단위로 적용 (모든 바이트 동일 권한)

세그먼트와 권한의 관계

실행 파일은 실제로는 세그먼트(LOAD 단위) 로 메모리에 매핑됩니다.
즉, 섹션은 세그먼트 내부에 포함되는 구조예요.

세그먼트포함 섹션접근 권한
LOAD #1.text, .rodatar-x 또는 r--
LOAD #2.data, .bssrw-

➡️ 즉, 권한이 같은 섹션들만 같은 세그먼트(=페이지 영역) 에 묶입니다.
권한이 다르면 세그먼트가 분리되고, 페이지도 분리됩니다.


페이지 배치 규칙

상황결과
섹션 권한이 같음같은 세그먼트에 포함되어, 필요시 한 페이지에 함께 들어갈 수도 있음 (예: .data + .bss)
섹션 권한이 다름절대 같은 페이지에 배치되지 않음 (예: .rodata(r--) vs .data(rw-))
섹션 크기가 페이지보다 큼여러 페이지에 걸쳐 저장됨
섹션 크기가 페이지보다 작음남은 공간은 패딩(padding)으로 채워짐 (낭비 발생)
페이지는 4KB 단위 정렬OS가 페이지 경계에 맞춰 매핑함

예시 1

페이지 크기 = 4KB
.rodata = 1KB (r--)
.data = 2KB (rw-)

➡️ 메모리 배치 결과:

[Page 1]
| .rodata (1KB) | [padding 3KB] |  ← 권한: r--
[Page 2]
| .data (2KB)   | [padding 2KB] |  ← 권한: rw-

서로 다른 권한 → 반드시 다른 페이지 사용 (남는 공간은 패딩 처리)
만약 권한이 같고 두 섹션의 크기 합이 페이지 크기보다 작거나 같다면 같은 페이지로 들어갈 수 있다.

profile
there ain't no shortcuts

0개의 댓글