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에 유지하고 나머지는 디스크에 저장해 원활한 실행을 가능하게 합니다.