반응형

55_디스크 스왑 공간 관리(Disk Swap Space Management)

 

스와핑은 프로세스 전체를 디스크나 메인 메모리로 옮기는 작업으로 사용 가능한 물리 메모리가 매우 작을 때 활성화 되며 사용 가능 메모리를 만들기 위해 프로세스들은 메모리에서 스왑 공간으로 이동 된다. 대부분의 현재 운영체제들은 이러한 방식이 아닌 스와핑과 가상 메모리 기법을 이용하여 페이지를 스왑한다.

 

스왑 공간 관리는 운영체제가 수행하는 저수준 작업으로 가상 메모리는 디스크를 주 메모리의 스왑 공간으로 사용한다. 디스크는 메모리보다 느리므로 스왑 공간의 설계는 매우 중요하다.

 

[스왑 공간 사용 (Swap Space Use)]

사용하는 메모리 관리 알고리즘에 따라 스왑 공간은 운영체제마다 다양한 방법들로 운영된다. 스왑 공간은 예상보다 크게 잡는 것이 안전하다. 시스템을 운영하다가 스왑 공간이 바닥나면 프로세스들을 도중에 중단시켜야 하고 최악의 경우에는 시스템 전체가 손상될 수 있다.

  • Solaris는 가상 메모리 크기에서 페이징이 가능한 물리 메모리를 뺀 만큼을 제안한다.
  • Linux는 물리 메모리 크기에 두 배를 제안하나 현재 대부분의 Linux 시스템들은 그보다 작은 스왑 공간을 사용한다.

 

Linux를 포함한 여러 운영체제는 여러 개의 스왑 공간을 가질 수 있다. 이들 스왑 공간들은 보통 여러 다른 디스크에 할당되어 페이징과 스와핑에 대한 I/O부하를 I/O 디바이스에 분산한다.

 

[스왑 공간 위치 (Swap Space Location)]

스왑 공간은 두 군데 있을 수 있다. 일반 파일 시스템이 차지하고 있는 공간 안에 만들 수도 있고 별도의 파티션을 만들어 사용할 수도 있다.

 

스왑 공간이 만일 하나의 커다란 파일이라면 통상 파일 시스템 루틴을 사용하여 스왑 공간을 생성/삭제하고 스왑 공간을 관리 할 수 있다. 이 방법은 구현하기 쉬우나 스왑 할 때마다 디렉토리 구조와 디스크 할당 자료 구조를 거쳐야 하기 때문에 추가 액세스로 인한 비효율이 발생한다.

 

스왑 공간을 일반 파일이나 디렉토리는 저장되지 않는 별도의 비가공(raw) 파티션에 위치하는 경우 공간 효율성은 상대적으로 낮지만 스왑 공간은 파일 시스템 보다 자주 접근 되기 때문에 속도 효율성에는 많은 이득이 있다. 또한 내부 단편화 문제에서도 스왑 공간안에 있는 자료는 일반 파일보다 짧은 시간 동안만 존재하기 때문에 큰 문제가 되지 않는다.

 

스왑 공간은 부트시에 초기화 되어 단편화 현상은 오래 남지 않는다. 디스크 파티션을 나눌 때 별도의 파티션을 만들어 스왑 공간을 만들어 사용한다. 스왑 공간을 늘리려면 파티션 작업을 새로 하거나 별도의 파티션에 새로운 스왑 공간을 추가해야 한다.

 

 

[Solaris와 Linux 스왑 공간 관리]

Solaris는 가상 메모리 페이지가 처음 생성되었을 때가 아닌 한 페이지가 물리 메모리에서 쫓겨날 때 스왑 공간을 할당한다. 이 방법은 현재의 시스템이 예전보다 큰 물리 메모리를 가지고 있기 때문에 더 좋은 성능을 보여준다.

 

Linux는 스왑 공간을 익명 메모리 혹은 다수의 프로세스들이 공유하는 메모리 영역에만 사용한다. 이런 면에서 Solaris와 유사하다. Linux는 한 개 이상의 스왑 영역을 허용하며 일반 파일 시스템 및 스왑 파티션에 위치할 수도 있다. 각 스왑 영역은 연속된 4KB의 페이지 슬롯(page slot)들로 구성되고 이 페이지 슬롯들에 스왑된 페이지들이 적재 된다. 각각의 스왑 영역은 스왑 맵(swap map)으로 연관 된다. 해당 카운터 값이 0이면 사용가능하고 0보다 큰 값은 스왑된 페이지들이 사용하고 있는 것을 나타낸다

 

[참고자료]

Operating System Concepts / 홍릉과학출판사

 

 

반응형

+ Recent posts