공부 키워드에 있던 개념들을 정리해보자 !

정의:
프로세스가 사용하는 주소 공간이 실제 물리 메모리(RAM)와 분리되어 운영체제가 제공하는 논리적 주소 공간
특징:
| 구분 | 주소 범위 | 설명 |
|---|---|---|
| 커널 공간 | 상위 절반 (ex: 0xFFFF...) | 커널 코드, 데이터 |
| 사용자 공간 | 하위 절반 (ex: 0x0000...) | 유저 프로세스 코드, 데이터, 힙, 스택 |
| 장점 | 단점 |
|---|---|
| 프로세스 간 보호 | 구현 복잡 |
| 메모리 효율적 사용 | 성능 오버헤드 (변환 비용) |
| 주소 공간 확장 | 페이지 폴트 발생 가능 |
| Lazy Load 가능 | Swap 사용 시 속도 저하 |
"Virtual Memory는 프로세스마다 독립된 가상 주소 공간을 제공하여 물리 메모리를 추상화하고, 보호, 확장성, 효율성을 제공하는 메모리 관리 기법이다."
정의:
가상 주소(Virtual Address)를 물리 주소(Physical Address)로 변환하기 위한 핵심 데이터 구조.
주소 변환 역할:
| 레벨 | 설명 | 엔트리 수 |
|---|---|---|
| PML4 | 최상위 | 512 |
| PDPT | 페이지 디렉터리 포인터 | 512 |
| PD | 페이지 디렉터리 | 512 |
| PT | 페이지 테이블 | 512 |
| 필드 | 설명 |
|---|---|
| Valid bit | 유효한 매핑 여부 |
| Frame number | 물리 프레임 번호 |
| Access bit | 최근 접근 여부 |
| Dirty bit | 수정 여부 |
| Permission | 읽기/쓰기/실행 권한 |
| 기타 | OS 구현에 따라 커스텀 비트 존재 가능 |
페이지 테이블: 전체 변환 정보 저장 (RAM)
TLB: 자주 사용하는 일부 변환 결과 캐싱 (CPU 내부)
변환 순서:
"페이지 테이블은 가상 페이지를 물리 프레임에 매핑하는 계층적 자료구조로, 가상 주소 변환의 핵심 역할을 한다."
정의:
페이지 테이블 탐색 결과(가상 페이지 번호 → 물리 프레임 번호)를 캐싱하는 고속 하드웨어 캐시.
필요성:
CPU가 가상 주소 접근 시
TLB Hit 비율이 시스템 성능에 큰 영향
| 구성요소 | 설명 |
|---|---|
| VPN (Virtual Page Number) | 가상 페이지 번호 |
| PPN (Physical Page Number) | 물리 프레임 번호 |
| Access Permissions | 읽기/쓰기 권한 |
| Valid bit | 유효성 여부 |
소프트웨어 방식 (Soft TLB miss)
하드웨어 방식 (Hardware TLB miss)
| 항목 | TLB | Page Table |
|---|---|---|
| 저장 위치 | CPU 내부 | 메인 메모리 |
| 크기 | 수십~수백 엔트리 | 수백 MB 가능 |
| 속도 | 매우 빠름 | 상대적으로 느림 |
| Miss 발생시 | Page Table 탐색 | Page Fault 가능성 |
"TLB는 최근 사용한 주소 변환 정보를 캐싱하여 주소 변환 속도를 획기적으로 높여주는 CPU 내부 고속 캐시이다."
정의:
프로세스가 접근한 가상 주소가 현재 물리 메모리에 매핑되어 있지 않을 때 발생하는 예외(interrupt).
핵심 역할:
1️⃣ CPU가 가상 주소에 접근
2️⃣ TLB 조회
3️⃣ TLB Miss → Page Table 조회
4️⃣ Page Table에서 해당 페이지 매핑 없음 → Page Fault 발생
| 유형 | 설명 |
|---|---|
| Not Present | 아직 메모리에 로드되지 않은 페이지 (ex: Lazy Load) |
| Protection Violation | 접근 권한 위반 (ex: read-only 페이지에 write) |
| Invalid Access | 잘못된 주소 접근 (ex: NULL 포인터, Stack Overflow) |
1️⃣ Page Fault Handler 진입 (CPU → OS 전환)
2️⃣ 접근 주소 및 에러코드 분석
3️⃣ 보조 테이블(Supplemental Page Table 등)에서 정보 조회
4️⃣ 적절한 핸들러 호출:
"Page Fault는 프로세스가 물리 메모리에 없는 페이지를 접근할 때 발생하며, OS가介入하여 필요한 메모리 할당 및 복구를 수행하는 가상 메모리 핵심 메커니즘이다."
정의:
프로그램이 사용하는 데이터를 실제로 접근할 때까지 물리 메모리에 로딩을 지연시키는 메모리 관리 기법.
핵심 목표:
1️⃣ 프로세스 생성 → 페이지 테이블에 엔트리 생성 (Present bit: 0)
2️⃣ 해당 페이지에 첫 접근 → Page Fault 발생
3️⃣ Page Fault Handler 호출
4️⃣ Lazy Load 핸들러 실행 → 디스크에서 데이터 로드
5️⃣ 메모리에 적재 → 페이지 테이블 업데이트 → TLB 갱신
6️⃣ 프로세스 재개 → 해당 데이터 정상 사용 가능
| 활용 | 설명 |
|---|---|
| 실행 파일(.exe, ELF 등) | 프로그램 코드/데이터 세그먼트 로딩 |
| mmap (메모리 매핑 파일) | 파일을 메모리에 매핑 후 지연 로딩 |
| Stack Growth | 스택이 확장될 때 on-demand 할당 |
| Memory-mapped DB | 대용량 데이터베이스 성능 최적화 |
"Lazy Loading은 실제 사용 시점까지 데이터를 메모리에 적재하지 않는 방식으로, 가상 메모리의 효율성과 확장성을 극대화하는 핵심 기법이다."
정의:
물리 메모리가 가득 찼을 때, 어떤 페이지를 제거(Swap-out)하고 새로운 페이지를 적재할지 결정하는 알고리즘.
등장 이유:
1️⃣ 페이지 폴트 발생
2️⃣ 빈 물리 프레임 없음
3️⃣ 교체 대상 선정 → Victim 선택
4️⃣ Swap-out 수행 → 새 페이지 적재
1️⃣ 시계바늘이 가리키는 페이지 확인
2️⃣ Access bit 확인:
1이면 → Access bit 0으로 초기화, 다음 페이지로 이동
0이면 → 해당 페이지 선택 (교체)
3️⃣ 이 과정을 반복하여 Victim 선정
장점: 구현 쉬움, 하드웨어 부담 적음
| 정책 | 장점 | 단점 |
|---|---|---|
| Optimal | 이론 최적 | 불가능 |
| FIFO | 단순 | Belady’s Anomaly |
| LRU | 성능 우수 | 구현 어려움 |
| Clock | 근사 LRU | 중간 난이도 |
"Page Replacement Policy는 한정된 물리 메모리를 관리하기 위해 희생할 페이지를 결정하는 알고리즘이며, LRU와 Clock이 가장 현실적이다."
정의:
파일과 연결되지 않은 메모리 페이지. 디스크에 존재하는 원본 없이 운영체제가 직접 관리하는 페이지.
명칭 이유:
| 메모리 영역 | 설명 |
|---|---|
| Heap | malloc() 등 동적 메모리 할당 |
| Stack | 함수 호출 스택 |
| BSS Segment | 초기화되지 않은 전역변수 |
| Anonymous mmap | 파일과 무관한 mmap |
1️⃣ 프로세스 실행 도중 메모리 할당 요청 (malloc, stack growth 등)
2️⃣ 운영체제가 가상 주소 공간에 페이지 테이블 엔트리 생성
3️⃣ 초기에는 실제 물리 메모리 연결하지 않고 Lazy Allocation 가능
4️⃣ 첫 접근 → Page Fault → 물리 메모리 할당 및 매핑
| 구분 | Anonymous Page | File-backed Page |
|---|---|---|
| 연결된 파일 | 없음 | 있음 |
| 초기 데이터 | 없음 (보통 0으로 초기화) | 파일 내용 |
| Swap 대상 | 항상 Swap 사용 | 파일 시스템 + Swap |
| 복구 방식 | Swap에서만 복구 | 파일 재로딩 or Swap 복구 |
"Anonymous Page는 파일과 무관하게 생성된 메모리 페이지로, 스왑 공간을 통해 백업되며 대부분의 실행 중 동적 메모리를 담당한다."
정의:
물리 메모리가 부족할 때, 메모리 페이지를 임시로 저장하는 보조 저장장치 영역.
핵심 역할:
1️⃣ Page Fault 발생
2️⃣ 사용할 빈 물리 프레임 없음
3️⃣ Victim 페이지 선정 (Replacement Policy 적용)
4️⃣ Victim이 Anonymous Page인 경우 → Swap-out 수행
| 장점 | 단점 |
|---|---|
| 물리 메모리 부족시 프로그램 종료 방지 | 속도가 매우 느림 (디스크 I/O) |
| 일시적 메모리 압박 해소 | Swap thrashing 발생 가능 |
| 시스템 전체 안정성 보장 | 스왑 과다 사용시 성능 급락 |
| 페이지 종류 | Swap 가능 여부 |
|---|---|
| Anonymous Page | 가능 |
| File-backed Page (dirty) | 가능 |
| File-backed Page (clean) | 일반적으로 파일에서 재로딩 |
"Swap Disk는 메모리 부족 시 페이지를 임시 저장하는 디스크 영역으로, 가상 메모리 확장의 마지막 방어선 역할을 수행한다."
정의:
디스크 상의 파일 내용을 메모리 페이지에 직접 매핑하여 사용하는 가상 메모리 페이지.
핵심 역할:
| 활용 영역 | 설명 |
|---|---|
| 프로그램 실행 | 실행 파일의 .text, .data 섹션 |
| mmap() | 파일 메모리 매핑 |
| 공유 라이브러리 | 동일 코드 여러 프로세스 공유 |
| DB 시스템 | 파일 기반 페이지 캐싱 |
1️⃣ 프로그램이 mmap() 또는 실행 시 파일을 매핑 요청
2️⃣ 페이지 테이블에 해당 가상주소 매핑 엔트리 생성 (실제 로딩은 지연)
3️⃣ 첫 접근 시 Page Fault → Lazy Loading → 디스크에서 파일 읽어오기
4️⃣ 페이지가 메모리에 적재되고 매핑 완료
5️⃣ 프로세스는 해당 데이터를 메모리처럼 접근
| 항목 | File-backed Page | Anonymous Page |
|---|---|---|
| 원본 데이터 | 파일 시스템에 존재 | 없음 |
| 초기 로딩 | 파일에서 읽기 | 보통 0으로 초기화 |
| Swap 필요성 | 수정시 필요 | 항상 Swap 사용 |
| 복구 경로 | 파일 or Swap | Swap만 사용 |
"File-backed Page는 디스크 파일 내용을 메모리 페이지에 직접 매핑하여 효율적인 파일 접근과 메모리 관리를 가능하게 하는 가상 메모리 핵심 기법이다."
정의:
CPU介入 없이 주변 장치가 메모리와 직접 데이터 전송을 수행할 수 있도록 해주는 하드웨어 메커니즘.
등장 이유:
1️⃣ CPU가 DMA Controller에 I/O 요청 (메모리 주소, 크기, 방향 설정)
2️⃣ DMA Controller가 장치 ↔ 메모리 간 데이터 직접 전송
3️⃣ 전송 완료시 DMA Controller가 CPU에 인터럽트 (전송 완료 알림)
| 활용 영역 | 설명 |
|---|---|
| 디스크 I/O | 파일 로딩, Lazy Loading, Swap-in/out |
| 네트워크 | 패킷 수신/송신 |
| 그래픽 카드 | 화면 출력용 버퍼 전송 |
| 오디오 | 실시간 오디오 스트림 |
| 구분 | CPU 방식 | DMA 방식 |
|---|---|---|
| 데이터 복사 담당 | CPU 직접 | DMA Controller |
| CPU 부하 | 높음 | 낮음 |
| I/O 속도 | 느림 | 빠름 |
| CPU 활용률 | 떨어짐 | 효율적 |
"DMA는 CPU개입 없이 I/O 장치가 메모리와 직접 데이터 전송을 수행하여 시스템 성능을 최적화하는 하드웨어 기반 I/O 가속 기술이다."