Swap Memory(가상메모리)

Swap Memory는 가상 메모리라고도 합니다. Swap은 하드디스크의 용량을 메모리인것 처럼 운영체제를 속이는 기법을 사용한다고 할 수 있습니다.

Swap Memory의 기능은 실제 메모리(RAM)가 가득 차고 더 많은 메모리가 필요할 때 디스크 공간(가상 메모리)으로 대체하는 것입니다.
실제 메모리보다 하드디스크를 이용하기 때문에 속도 면에서는 현저히 떨어집니다. OS 에서 실제 물리적 메모리를 다 땡겨다 쓰고 Swap Memory를 가져가 쓸 때는 데이터 처리 속도가 떨어질 수밖에 없는 것 입니다.
하지만 스왑 메모리가 없으면 실제 메모리가 부족하여 시스템이 다운되거나 장애가 발생하는 것보단 스왑 메모리를 두어보다 안정을 높일 수 있습니다.

리눅스에서 memory/swap memory 확인

Swap은 리눅스 커널은 실제 메모리에 올라와 있는 메모리 블록들 중 당장 쓰이지 않는 것을 디스크에 저장하고, 이를 통해 사용 가능한 메모리 영역을 늘립니다.

자세한 동작 과정

프로세스가 실행되려면 반드시 메모리에 올라가야 합니다. 프로세스가 스와핑(swapping) 한다 라는 것은 현재 메모리에서 잠깐 다른 저장공간(HDD나 SSD)으로 옮겨졌다가, 돌아왔다가 이런 식으로 실행에 따라 교체될 수 있다는 걸 의미합니다.

swap-out : 프로세스의 정보들이 주 메모리에서 보조저장장치에 위치한 Swap 영역으로 옮겨지는 것
swap-in : 다시 이 정보를 보조저장장치의 Swap 영역에서 주 메모리로 옮겨가는 것
swapping : swap-out + swap-in

어떤 10개의 프로세스가 유저 공간에 있다고 가정해보겠습니다. 이 메모리는 최대 10개의 프로세스만을 실행 시킬 수 있죠. 꽉 차 있는 상태에서 11번째 프로세스가 실행되었습니다. 그렇다면 10개의 프로세스 중 하나를 잠깐 빼고 11번째 프로세스를 넣어야 할 텐데요. 가장 안 쓰는 프로세스를 잠깐 빼야합니다. 아예 없애버리는 것이 아니라 잠깐 어디 빼놔야 다음에 또 실행시킬 수 있습니다. 여기서 잠깐 어디 빼놓는 공간을 보조기억장치(secondary storage,Backing storage)라고 합니다. 그리고 잠깐 2번 프로세스를 빼놓는 일을 Swap-out 한다고 표현하죠. 1시간이 지나고 방금 빼놨던 2번 프로세스에서 이벤트 요청이왔습니다. 그렇다면 다시 메모리로 복귀시켜줘야겠죠? 다시 메모리에 올려서 실행시키는 작업을 Swap-in 한다고 합니다

참고링크

profile
열심히 굽고 있어요🍞

0개의 댓글