Brain
Science
root
/
학습 노트
/
Study Note
/
2: 운영체제 (Operating System)
/
6. 메모리 관리 (Memory Management)
6. 메모리 관리 (Memory Management)
321. 메모리 계층 구조 (Memory Hierarchy)와 레지스터-캐시-메인메모리 접근
2026-03-23
322. 논리 주소 (Logical/Virtual Address) - CPU가 생성하는 주소
2026-03-23
323. 물리 주소 (Physical Address) - 메모리 장치가 보는 주소
2026-03-23
324. 주소 바인딩 (Address Binding) 3단계 시점
2026-03-23
325. 컴파일 시간 바인딩 (Compile Time) - 절대 코드 (Absolute Code) 생성
2026-03-23
326. 적재 시간 바인딩 (Load Time) - 재배치 가능 코드 (Relocatable Code)
2026-03-23
327. 실행 시간 바인딩 (Execution Time) - 실행 중 주소 변경, MMU 필요 (현대 OS 기본)
2026-03-23
328. MMU (Memory-Management Unit) - 논리 주소를 물리 주소로 동적 변환하는 하드웨어
2026-03-23
329. 베이스 레지스터 (Base/Relocation Register) - 물리 시작 주소 보유
2026-03-23
330. 한계 레지스터 (Limit Register) - 메모리 보호, 주소 범위 검사
2026-03-23
331. 동적 적재 (Dynamic Loading) - 루틴 호출 시점에 메모리 적재 (효율성)
2026-03-23
332. 동적 연결 (Dynamic Linking) - 실행 시점에 라이브러리 연결 (.dll, .so)
2026-03-23
333. 공유 라이브러리 (Shared Library) 스터브 (Stub) 코드
2026-03-23
334. 정적 연결 (Static Linking)
2026-03-23
335. 스와핑 (Swapping) - 메모리 부족 시 프로세스를 디스크 백킹 스토어(Backing Store)로 쫓아냄
2026-03-22
336. 스왑 아웃 (Swap out) / 스왑 인 (Swap in)
2026-03-23
337. 표준 스와핑 (전체 프로세스) vs 페이징 시스템 스와핑 (페이지 단위)
2026-03-23
338. 연속 메모리 할당 (Contiguous Memory Allocation)
2026-03-23
339. 고정 분할 방식 (Fixed Partition)
2026-03-23
340. 가변 분할 방식 (Variable Partition)
2026-03-23
341. 내부 단편화 (Internal Fragmentation) - 할당된 공간 내 남는 공간
2026-03-23
342. 외부 단편화 (External Fragmentation) - 가용 공간은 충분하나 불연속적이라 할당 불가
2026-03-23
343. 동적 메모리 할당 문제 (가변 분할 배치 알고리즘)
2026-03-23
344. 최초 적합 (First-Fit) - 첫 번째 충분한 공간 할당 (속도 빠름)
2026-03-23
345. 최적 적합 (Best-Fit) - 가장 크기가 비슷한 공간 (자투리 최소화, 검색 시간 소요)
2026-03-23
346. 최악 적합 (Worst-Fit) - 가장 큰 공간 할당 (큰 가용 공간 남김)
2026-03-23
347. 압축 (Compaction) - 외부 단편화 해결, 동적 재배치 시에만 가능, 오버헤드 막심
2026-03-23
348. 버디 시스템 (Buddy System) 할당기 - 2의 승수로 분할 및 병합 (외부 단편화 절충)
2026-03-23
349. 슬랩 할당기 (Slab Allocator) - 커널 객체 캐싱, 단편화 방지 및 속도 향상
2026-03-23
350. 비연속 메모리 할당 (Non-contiguous Memory Allocation)
2026-03-23
351. 페이징 (Paging) - 물리 메모리를 프레임(Frame), 논리 메모리를 페이지(Page)로 고정 크기 분할
2026-03-23
352. 페이지 크기 (Page Size) - 주로 4KB. 커지면 내부 단편화 증가, 테이블 크기 감소
2026-03-23
353. 페이지 테이블 (Page Table) - 페이지 번호를 프레임 번호로 매핑
2026-03-23
354. PTBR (Page-Table Base Register) / PTLR (Page-Table Length Register)
2026-03-23
355. 페이징의 메모리 보호 - 유효-무효 비트 (Valid-Invalid Bit)
2026-03-23
356. 페이징에서의 공유 페이지 (Shared Pages) - 읽기 전용 코드(Reentrant code) 공유
2026-03-23
357. TLB (Translation Look-aside Buffer) - 주소 변환 캐시(SRAM 연관 메모리 하드웨어)
2026-03-23
358. TLB 적중 (TLB Hit) / TLB 미스 (TLB Miss)
2026-03-23
359. TLB 적중률 (Hit Ratio) / 실질 메모리 접근 시간 (EAT, Effective Access Time)
2026-03-23
360. ASID (Address-Space Identifier) - TLB 내 프로세스 식별, 플러시(Flush) 최소화
2026-03-23
361. 다단계 페이징 (Hierarchical Paging) - 페이지 테이블 크기 문제 해결 (2단계, 3단계...)
2026-03-23
362. 해시 페이지 테이블 (Hashed Page Table) - 주소 공간이 64비트 이상일 때 사용
2026-03-23
363. 역 페이지 테이블 (Inverted Page Table) - 시스템 내 단 하나의 페이지 테이블, 프레임 중심
2026-03-23
364. 세그멘테이션 (Segmentation) - 사용자 관점의 가변 크기 논리적 단위(함수, 객체) 분할
2026-03-23
365. 세그먼트 테이블 (Segment Table) - 기준(Base) 주소와 한계(Limit) 길이
2026-03-23
366. 세그멘테이션과 외부 단편화 (가변 크기이므로 재발생)
2026-03-23
367. 세그멘테이션 기반 페이징 (Paged Segmentation) - 인텔 x86 아키텍처 (세그먼트를 다시 페이지로)
2026-03-23
368. 커널 메모리 할당 방식 (kmalloc, vmalloc)
2026-03-23
369. 메모리 풀 (Memory Pool) 기법
2026-03-23
370. 파편화 관리 및 조각 모음 - 리눅스 메모리 컴팩션 (Memory Compaction)
2026-03-23
371. 거대 페이지 (Huge Pages / Transparent Huge Pages) - TLB 미스 감소
2026-03-23
372. 아키텍처 종속적인 MMU 인터페이스
2026-03-23
373. ARM / x86의 메모리 매핑 아키텍처 차이
2026-03-23
374. 주소 공간 무작위 배치 (ASLR, Address Space Layout Randomization)
2026-03-23
375. 메모리 보호 키 (Memory Protection Keys)
2026-03-23
376. 캐시 인식 데이터 구조 (Cache-aware Data Structures)
2026-03-23
377. NUMA (Non-Uniform Memory Access) 아키텍처와 메모리 할당 정책
2026-03-23
378. 로컬 노드 할당 vs 인터리브 할당
2026-03-23
379. 캐시 컬러링 (Cache Coloring) / 페이지 컬러링
2026-03-23
380. 가비지 컬렉션 (Garbage Collection) 기초 - 참조 카운팅, Mark-and-Sweep
2026-03-23