8장 : 메모리 계층
1. 기억 장치 계층 구조란?
2. CPU는 왜 캐시 메모리를 사용할까?

3. 캐시 메모리의 동작 원리
캐시 라인(Cache Line) 단위로 저장
가상적인 CPU로 캐시 메모리를 살펴보자.



더티 비트(Dirty Bit)
메모리에 데이터를 쓰는 방법: 라이트 스루 vs 라이트 백
전략
설명
장점
단점



4. 캐시 교체 알고리즘과 스래싱
5. 캐시의 작동원리 : 지역성(Locality)의 법칙
6. 캐시 계층 구조 (L1 / L2 / L3)
L1 캐시
L2 캐시
L3 캐시
7. 실험: 캐시 접근 속도 시각화
실험 목적
실험 구조
실험 코드 (요약)
8. 실험 결과: 접근 속도 차이

전반적인결과 해석
그래프 구조 해석
🔍 계단형 그래프가 의미하는 것
1. 4~64KiB 구간
2. 64KiB~512KiB 사이
3. 512KiB~4MiB 구간
4. 4MiB 이후 (대략 x=12 이상)
💡 왜 처음엔 속도가 점점 빨라지는가?
결론 요약
구간
캐시 계층 추정
해석
8. 메모리 접근 성능 실험(cache.go)
실험 개요
결과
9. 결론: 메모리 계층 구조의 존재 이유
캐시 최적화를 위해 할 수 있는 일
🧠 리눅스 메모리 계층과 최적화 기술
1. SMT(Simultaneous Multi Threading): CPU 유휴 자원 활용
1) 개념
2) 예시 상황
3) 효과와 한계
상황
SMT 효과
4) SMT 실험 결과 예시

예시로 알아보기
프로세스
도착 시간
종료 시간
턴어라운드 타임


추가정리 턴어라운드 타임 vs 스루풋
항목
평균 턴어라운드 타임
스루풋
지표
비유
✔️ SMT 성능 실험 결과
2. TLB(Translation Lookaside Buffer, 변환 색인 버퍼)
1) 왜 필요한가?
2) 해결책 – TLB
3) Huge Page와의 관계
항목
설명


TLB와 메모리 접근 최적화 구조 정리
단계
설명
💡 동작 원리
단계
설명
📦 TLB 구성
항목
설명
💡 왜 필요할까?
이유
설명

추가정리 : 스레드 실행 방식 5가지

1. Superscalar (슈퍼스칼라 구조)
2. Fine-Grained Multithreading (세밀한 다중 스레딩)
3. Coarse-Grained Multithreading (거친 다중 스레딩)
4. Multiprocessing (다중 프로세서 구조)
5. Simultaneous Multithreading (SMT, 동시 멀티스레딩)
📌 정리 요약
방식
특징
병렬성
자원 활용
스레드 전환 비용
페이지 캐시(Page Cache)
1. 페이지 캐시란?
✔ 정의
✔ 역할
✔️ 더티 페이지
2. 페이지 캐시의 동작 원리
1) 파일 읽기 시 동작 흐름
단계
설명




2) 파일 쓰기 시 동작 흐름

단계
설명
3. 페이지 캐시의 문제점과 해결책
문제 상황
설명
4. 실습: 캐시 효과 확인
[1] 파일 쓰기 속도 비교
[2] 페이지 캐시 제거 (drop_caches)
[3] 읽기 속도 비교
🔁 페이지 캐시 vs 캐시 메모리 비교
구분
캐시 메모리 (CPU)
페이지 캐시 (커널)
추가 개념: /proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches🧠 버퍼 캐시, 더티 페이지, 직접 입출력 정리
1. 버퍼 캐시(Buffer Cache)
1) 정의
2) 페이지 캐시와의 차이
구분
페이지 캐시
버퍼 캐시
2. 더티 페이지(Dirty Page)와 쓰기 타이밍
1) 더티 페이지란?
2) 쓰기 동작 흐름
3. 라이트백(Write Back) 동작 조건
1) 자동 쓰기 타이밍은 두 가지 기준
조건
설명
기본값
2) 즉시 디스크로 쓰는 기준
3) 관련 커널 파라미터 정리
파라미터
설명
기본값
4. 직접 입출력(Direct I/O, O_DIRECT)
1) 개념
2) 언제 사용하나요?
상황
이유
3) 사용 방법
4) 실습 결과 비교
5. 주의 사항
🔚 결론
🧠 스왑(Swap)과 스래싱(Thrashing), 그리고 페이지 폴트 흐름 정리
1. 스왑(Swap)이란?
1) 정의
2) 왜 필요한가?
2. 페이지 아웃(Page Out) & 페이지 인(Page In)
1) [Step1] 메모리가 가득 찬 상태

2) [Step2] 페이지 아웃(Page Out)

3) [Step3] 새로운 프로세스에 메모리 할당

4) [Step4] 페이지 인(Page In), 스왑 인

3. 페이지 폴트의 종류
구분
설명
4. 스래싱(Thrashing)
1) 정의
2) 원인
5. 스왑 사용은 만능일까?
🚫 문제점
✅ 권장 사항
6. 실습 예시 명령어 요약
1) 페이지 캐시 삭제 (drop_caches)
2) 스왑 확인
3) 스왑 비활성화 & 활성화
🔚 결론 요약
항목
설명
📊 리눅스에서 메모리 캐시 및 스왑 통계 정보 정리
1. 메모리 상태 확인: sar -r
sar -r필드명
설명
2. 페이지 I/O 상태 확인: sar -B
sar -B필드명
설명
3. 스왑 영역 상태 확인
현재 사용 중인 스왑 정보 확인: swapon --show
swapon --show필드
설명
스왑 전체 사용량 확인: free
free4. 실시간 스왑 입출력 확인: sar -W
sar -W필드
설명
5. 스왑 사용률 확인: sar -S
sar -S필드
설명
6. 요약 정리표
지표
설명
상태 확인 도구
Last updated


