<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Swap on Hammer's Blog</title><link>https://lkic1625.github.io/blog/swap/</link><description>Recent content in Swap on Hammer's Blog</description><generator>Hugo</generator><language>ko-kr</language><copyright>© 조원빈 - All rights reserved</copyright><lastBuildDate>Mon, 02 Nov 2026 15:30:04 +0900</lastBuildDate><atom:link href="https://lkic1625.github.io/blog/swap/index.xml" rel="self" type="application/rss+xml"/><item><title>Swap과 메모리 관리: Linux, TMO, ZRAM</title><link>https://lkic1625.github.io/os-swap/</link><pubDate>Mon, 02 Nov 2026 15:30:04 +0900</pubDate><guid>https://lkic1625.github.io/os-swap/</guid><description>&lt;h2 id="개요">개요&lt;/h2>
&lt;p>swap, 메모리 오프로딩은 물리적으로 부족한 용량 한계를 하위 단계의 메모리로 이동 시키는 기술이다. 이를 이용하여 우리는 가상화의 큰 장점을 확보하였다.
하지만, 이로 인해 생기는 여러 장단점은 명확한 trade-off이다. 우리는 우선 현대 시스템에서 이러한 Swap이 어떻게 구성되어 있는지 보고, 실제 사례를 보며 기존 시스템의 일반적인 솔루션이 가진 한계를 어떻게 해결하려고 하였는지 찾아보자.&lt;/p>
&lt;h2 id="linux">Linux&lt;/h2>
&lt;p>리눅스는 가장 기본적인 방식은 PTE가 어떻게 바뀌는지를 기본으로 설명할 수 있다. x86-64 Linux에서 특정 페이지가 Swap-out 된다면, 해당 페이지를 가리키던 PTE가 정상적인 물리적 메모리를 매핑하는 게 아닌, Swap Entry를 나타내는 값으로 변경된다.
CPU는 메모리 매핑 중에, 물리 페이지 접근이 불가능함을 판단하고, Page Fault를 통해 OS에게 이를 맡긴다. 이를 통해 Swap Entry라면, 데이터 위치에 대한 정보를 가지고 있기에 이 값을 통해 정장적인 물리 주소 매핑을 구할 수 있다. 보통의 구조는 아래와 같다.
참고로, Swap-out에 대한 victim을 구하는 Page Replacement 알고리즘은 Multi-Generational LRU(MGLRU)라는 휴리스틱을 추가한 LRU을 이용한다. 자세한 건 페이지 교체 알고리즘 챕터에서 더 설명하겠다.&lt;/p></description></item></channel></rss>