메모리 계층

| 계층 | 저장소 | 속성 | 속도 | 용량 | 비휘발성 |
|---|
| 1 | 레지스터 | CPU 내부, 가장 빠름 | 가장 빠름 | 매우 작음 | X |
| 2 | 캐시 (L1~L3) | CPU와 메모리 중간 속도 계층 | 빠름 | 작음 | X |
| 3 | 주기억장치 (RAM) | 휘발성 주 메모리 | 보통 | 보통 | X |
| 4 | 보조기억장치 (SSD, HDD) | 비휘발성, 장기 저장소 | 낮음 | 큼 | ✓ |
속도가 빠를수록 비싸고 용량은 작음. 계층화된 이유는 성능과 경제성의 균형 때문
캐시
- 느린 저장 장치 접근 시간을 줄이기 위해 데이터를 미리 저장해두는 임시 저장소
- 속도 차이를 줄여 병목 현상을 방지하는 역할
지역성의 원리
- 시간 지역성: 최근에 사용된 데이터를 곧 다시 사용할 가능성 (e.g., 반복문 내 변수 접근)
- 공간 지역성: 인접한 데이터에 접근할 가능성 (e.g., 배열 순차 접근)
캐시히트와 캐시미스
| 용어 | 설명 |
|---|
| 캐시 히트 | 필요한 데이터가 캐시에 있어 바로 가져옴 (빠름) |
| 캐시 미스 | 캐시에 없어 메모리나 디스크에서 읽어옴 (느림) |
📌 캐시매핑 방식
| 방식 | 설명 | 장단점 |
|---|
| 직접 매핑 | 메모리 주소 → 고정된 캐시 위치 | 빠르지만 충돌에 취약 |
| 연관 매핑 | 어느 캐시든 자유롭게 매핑 | 충돌 적지만 느림 |
| 집합 연관 매핑 | 캐시를 그룹화하여 매핑 | 적절한 속도와 유연성 |
웹 브라우저의 캐시
| 종류 | 특징 | 용량 | 저장 위치 |
|---|
| 쿠키 | 만료기한 有, 서버도 설정 가능 | ~4KB | 서버/클라이언트 |
| 로컬 스토리지 | 만료기한 無, 탭 닫아도 유지 | ~5MB | 클라이언트 |
| 세션 스토리지 | 탭 단위, 탭 닫으면 삭제 | ~5MB | 클라이언트 |
데이터베이스의 캐싱 계층
- 레디스(Redis) 같은 인메모리 DB를 메인 DB 앞단에 두어 읽기 성능을 향상시킴
- 자주 요청되는 데이터를 빠르게 응답할 수 있도록 구성
메모리 관리
운영체제는 컴퓨터 자원 중 메모리를 효율적으로 할당하고, 최대한 활용하며, 충돌 없이 여러 프로그램을 실행할 수 있도록 관리함
가상 메모리
실제 RAM보다 더 큰 메모리처럼 보이도록 하는 추상화된 메모리 시스템

- 주소 구분
- 가상 주소(Logical Address): 사용자에게 보이는 주소
- 실제 주소(Physical Address): 실제 메모리(RAM)의 주소
- 변환 방법: MMU (Memory Management Unit)가 가상 주소 → 실제 주소로 변환
- 페이지 테이블로 주소 변환 관리, TLB를 통해 속도 향상
TLB
메모리와 CPU 사이에 있는 주소 변환을 위한 캐시.
페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층
페이지 폴트 & 스와핑
페이지 폴트: 가상 메모리엔 있지만 실제 메모리에 없는 데이터에 접근 시 발생
스와핑: RAM에서 당장 필요 없는 페이지를 디스크로 내보내고 필요한 페이지를 RAM으로 불러오는 과정
페이지: 가상 메모리의 최소 단위
프레임: 실제 메모리의 최소 단위
스레싱
과도한 스와핑으로 CPU 사용률이 저하되고 시스템 성능이 급감하는 현상
- 원인: 너무 많은 프로세스를 동시에 메모리에 올릴 때 발생
- 해결책:
- 작업 세트(Working Set): 자주 사용하는 페이지 묶음을 미리 올림
- PFF(Page Fault Frequency): 페이지 폴트 빈도에 따라 프레임 수 조절
메모리 할당
📌 연속 할당
- 메모리를 연속된 공간에 할당
- 고정 분할: 메모리를 미리 고정 크기로 분할 → 내부 단편화 발생
- 가변 분할: 동적 크기로 할당 → 외부 단편화 발생
단편화
내부 단편화: 공간은 있는데 프로그램보다 커서 낭비
외부 단편화: 공간이 흩어져 있어 사용 불가
📌 불연속 할당
- 메모리를 나눠 불연속적으로 배치
- 페이징(Paging): 동일한 크기의 페이지 단위로 나눠 주소 매핑
- 세그멘테이션(Segmentation): 의미 단위(함수, 데이터 등)로 나눔
- 페이지드 세그멘테이션: 세그먼트 내에서 페이지 단위로 나눔
페이지 교체 알고리즘
- 오프라인 알고리즘: 이상적 기준 (실제로 사용 불가)
- FIFO(First In First Out): 가장 먼저 들어온 페이지 제거
- LRU(Least Recently Used): 가장 오랫동안 사용하지 않은 페이지 제거
- NUR(Not Used Recently): 최근 사용 여부만 판단 (Clock 방식)
- LFU(Least Frequently Used): 가장 사용 횟수가 적은 페이지 제거
참고: 북스터디 - 면접을 위한 CS 전공지식 노트 (Chapter 3-2)