공간 관리(memory) 문제를 해결하는 방식 <-> 프로세스는 시간 관리(?) - 메모리 용량은 한정적이므로, 여러 응용 프로그램의 사용을 위해 효율적인 메모리 관리 기법이 필요 (메모리 단편화 해결) - Segmentation: 가변 크기의 논리 세그먼트 (code, stack, heap) - Paging: page라는 고정 크기의 단위로 나눔 - Memory Pool: 필요한 메모리 공간을 필요한 크기, 개수 만큼 사용자가 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법 (C의 malloc이나 C++ new 연산자)
#페이징 개요
page: 보조기억장치를 이용한 가상(논리) 메모리를 동일한 크기의 블록으로 나눈 것
frame: 물리적 메모리(RAM)을 같은 크기의 블록으로 나눈 것
페이지와 프레임을 대응시키기 위해 page mapping 과정이 필요해서 paging table을 만든다.
가상 메모리 사용, 외부 단편화(조각화) 해결, 내부 단편화 존재
#장단점
장점 - Flexibility: 주소 공간 추상화를 효과적으로 지원함 - Simplicity: 여유 공간 관리가 용이함 - 외부 단편화 (External Fragmentation) 없음 - 빠른 할당과 해제 - 메모리 일부를 디스크로 쉽게 Page out - 페이지보호 및 공유 용이
단점 - 내부 단편화 존재 - 메모리 참조 오버헤드 - 페이지 테이블에 필요한 스토리지 - 페이지 단위를 작게하면 내부 단편화 문제의 해결이 가능하지만, page mapping 과정이 많아지므로 비효율적
# Address translation(주소 변환)
버퍼 메모리가 있는 컴퓨터에서 논리 주소를 실제 주소로 변환함과 동시에 논리 주소 또는 실제 주소를 버퍼 메모리 상의 실제 주소로 변환하는 것.