Search

Memory

1.
Paging이란 뭔가요?
Paging은 물리적 메모리를 고정된 크기의 블록(페이지)으로 나누고, 프로세스의 논리적 메모리도 동일한 크기의 페이지로 분할하여 관리하는 기법입니다. 이렇게 하면 메모리 공간이 연속적이지 않아도 프로세스를 실행할 수 있어 외부 단편화를 방지할 수 있습니다. 각 페이지는 페이지 테이블에 매핑되며, CPU가 생성하는 논리 주소를 물리 주소로 변환할 때 사용됩니다. 예를 들어, 4KB 크기의 페이지를 사용하는 시스템에서는 프로세스가 필요로 하는 메모리를 페이지 단위로 할당받아 효율적으로 관리합니다.
2.
Segmentation에 대해서 설명해 주세요.
Segmentation은 프로세스를 논리적 단위(세그먼트)로 나누어 메모리에 배치하는 방식입니다. 예를 들어, 코드, 데이터, 스택, 힙 등 기능별로 세그먼트를 분리합니다. 각 세그먼트는 가변적인 크기를 가지기 때문에 내부 단편화는 발생하지 않지만, 메모리 공간이 연속적으로 할당되어야 하므로 외부 단편화 문제가 생길 수 있습니다. Paging과 달리 프로그래머가 직접 세그먼트를 관리할 수 있어 유연하지만, 복잡한 메모리 할당 알고리즘이 필요합니다.
3.
가상 메모리에 대해서 설명해 주세요.
가상 메모리는 물리적 메모리 크기보다 큰 프로그램을 실행하기 위해 디스크의 일부를 메모리처럼 활용하는 기술입니다. 프로세스는 자신이 전체 메모리를 독점한다고 착각하게 하며, 실제로는 필요한 부분만 물리 메모리에 올려서 사용합니다(Demand Paging).
Page Fault는 프로세스가 접근하려는 페이지가 물리 메모리에 없을 때 발생하는 인터럽트입니다. 이때 운영체제는 디스크에서 해당 페이지를 물리 메모리로 로드하고, 메모리가 가득 찬 경우 **LRU(Least Recently Used)**나 LFU(Least Frequently Used) 같은 알고리즘으로 오래된 페이지를 교체합니다.
예시: 크기가 8GB인 게임을 4GB RAM에서 실행할 때, 가상 메모리는 자주 사용되는 데이터를 RAM에 유지하고 나머지는 디스크에 저장해 원활한 실행을 가능하게 합니다.