익명 페이지(Anonymous Page) : 파일 시스템의 특정 파일과 직접적으로 연결되지 않은 메모리 페이지
주요 용도 : 프로세스의 힙(heap), 스택(stack), 초기화되지 않은 데이터 세그먼트(BSS) 영역을 구성하는데 사용
malloc
으로 할당받은 메모리나 함수 호출 시 확장되는 스택 공간이 대표적인 예
특징 : 생성 시점에 특정 컨텐츠를 가지고 있지 않으며, 커널에 의해 all-zero 페이지로 초기화되어 제공됨. 이 페이지의 내용은 오직 프로세스의 실행 중에만 생성되고 수정됨
스왑 공간 : 물리 메모리가 가득 찼을 때, 당장 사용하지 않는 페이지를 임시로 내보내 저장하는 디스크의 특정 영역
역할 : 물리 메모리를 일종의 캐시처럼 사용하게 해줌. 자주 쓰는 데이터는 물리 메모리에, 그렇지 않은 데이터는 스왑 공간에 둬 한정된 물리 메모리를 효율적으로 사용하게 함.
RAM의 프레임이 모두 사용 중일 때, 운영체제는 특정 페이지(주로 익명 페이지)를 스왑 공간으로 내보내고(page-out) 해당 프레임을 새로운 페이지를 위해 재사용
관계 : 익명 페이지는 파일 시스템에 영구적인 저장 위치가 없어 메모리에서 쫓겨날 때 그 내용을 보존할 유일한 공간이 바로 스왑 공간. 익명 페이지가 페이지 교체 정책의 희생양이 되면 스왑 공간으로 page-out됨.
파일 기반 페이지(File-backed Page) : 파일 시스템의 특정 파일 내용과 직접적으로 매핑되는 메모리 페이지
주요 용도
mmap()
시스템 콜을 통해 파일의 내용을 프로세스의 가상 주소 공간에 직접 매핑해 사용하는 경우특징 : 페이지의 초기 내용은 파일로부터 가져옴. 페이지 교체 시, 만약 페이지 내용이 수정됐다면(dirty), 스왑 공간이 아닌 원래의 파일에 다시 기록됨(write-back). 수정되지 않았다면 그냥 버림. 어차피 필요하면 다시 원본 파일에서 읽어오면 되기 때문.
DMA(Direct Memory Access) : 특정 하드웨어 장치(I/O 컨트롤러 등)가 CPU의 개입 없이, 시스템 버스를 통해 직접 물리 메모리(RAM)에 접근해 데이터를 읽거나 쓸 수 있게 하는 기능
개념 : CPU는 데이터 전송의 시작만 명령하고 실제 데이터 이동은 DMA 컨트롤러(DMAC)에 위임. DMAC는 지정된 소스 주소에서 목적지 주소로 정해진 크기의 데이터 전송 후 작업이 완료되면 CPU에 인터럽트를 발생시켜 완료를 알림.
목표 : 대용량 데이터 전송(예 : 디스크 I/O, 네트워크 패킷 전송)으로 인해 CPU가 다른 중요한 연산을 수행하지 못하고 데이터 복사에만 매달리는 것을 방지. CPU 사이클을 절약하고 시스템 전반의 성능 향상
DMA는 페이지 관리 메커니즘의 물리적인 데이터 이동을 담당하는 핵심적인 실행자 역할.
익명 페이지와 파일 기반 페이지의 page-in/page-out 작업은 본질적으로 메모리와 디스크 간의 대규모 데이터 전송이기 때문에 DMA가 매우 효율적으로 사용됨.
익명 페이지와 파일 기반 페이지는 가상 메모리 시스템이 관리하는 논리적인 데이터 단위.
스왑 공간과 파일은 이들의 비활성 상태(inactive state)를 저장하는 백업 저장소(backing store)
DMA는 이 논리적 단위들을 물리 메모리와 백업 저장소 사이에서 실제로 이동시키는 고성능 하드웨어 메커니즘
운영체제의 페이징 서브시스템은 DMA를 적극적으로 활용해 I/O 오버헤드를 최소화하고 시스템 효율성을 극대화