티스토리 뷰

Swap Space란?

OS에서 프로그램을 실행해 메모리에 올려 사용하다보면, RAM(Random Access Memory)의 용량이 부족할 때가 있다.

 

이 때, 대부분의 운영체제는 Secondary Storage인 Disk의 일부를 Virtual Memory로 활용하는데, Memory의 데이터를

디스크로 옮겨 보관하는 것을 Paging(페이징)이라고 한다. 그리고 이 Paging을 하기 위한 공간을 Swap Space라고 부른다.

 

그리고 페이징을 하는 경우는 메모리가 부족할 때도 있고 컴퓨터가 절전 모드(Hibernation)에 들어갈 때도 있다.

 

페이징을 하는 우선순위를 정하는 정책은 여러가지가 있다. 대표적인 예로 FIFO나 LRU를 들 수 있겠다.

 

Swap Space in file system vs. partition 

그렇다면, 파일시스템 내부에 swap space file을 두는 것이 좋을까 아니면 별도의 partition으로 분리해 swap space를 두는것이 좋을까? 윈도우의 경우에는 일반적으로 C:\에 *.sys 형식 숨겨진 파일로 페이지 파일을 저장한다.

 

이렇게 파일 시스템 내에 페이지 파일로 직접 저장하면, 미리 페이징 용량을 확보해두지 않고 필요한 양에 따라 동적으로 접근할 수 있다는 이점이 있다. 하지만, 이렇게 파일 시스템을 사용해 페이징 파일을 저장하면 파일 시스템 오버헤드가 발생한다.

 

별도의 파티션을 Swap space로 지정한다고 해보자.

 

지금이야 SSD를 사용량이 많이 늘었기 때문에 파일 접근에 대한 time cost가 적지만, RAM의 용량이 적고, 속도가 느린 HDD를 사용한다면 페이지 파일에 접근할 때 마다 계속 하드디스크를 읽어야만 한다 (Thrashing). 그렇기 때문에 병목 현상이 발생해 성능 저하가 심각해진다. 하지만, 별도의 파티션으로 저장하면 파일 시스템에서 가지는 오버헤드가 없다.

 

그리고 리눅스에서는 기본적으로 별도의 파티션을 swap space로 사용한다. 물론 설정을 통해서 파일 시스템 내부의 파일을 swap space로 사용할 수 있다. 하지만, 그렇지 않은 경우라면 리눅스에서 partition으로 swap space를 지정하지 않는다면 절전 모드를 사용할 수 없다.

 

 

 

댓글
댓글쓰기 폼
공지사항
Total
20,516
Today
17
Yesterday
32
링크
TAG
more
«   2022/05   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
글 보관함