리눅스
리눅스의 swap 메모리 정리
그누임
2022. 11. 7. 10:27
Swap Memory
물리 메모리가 부족하면 대개 메모리 부족(OOM) 상태가 된다.
리눅스에서는 메모리 부족에 대한 구제장치가 존재하는데 가상 메모리 방식을 응용한 Swap이다.
스왑
- 저장 장치의 일부를 일시적으로 메모리 대신 사용하는 방식
- 시스템의 물리 메모리가 부족한 상태가 되어 물리 메모리를 획득할 때에, 기존에 사용하던 물리 메모리의 일부분을 저장 장치에 접근하여 빈공간을 만들어낸다. 이때 메모리의 내용이 저장된 영역을 스왑영역이라고 부른다.
스왑영역은 언제 생기나?
- 스왑 영역은 시스템 관리자가 시스템을 구축할 때 만들어 둔다.
용어
스왑아웃
- 물리 메모리에 빈 공간이 없어 커널은 사용 중인 물리 메모리의 일부를 스왑영역에 임시 보관한다.
스왑인
- 커널은 스왑영역에 임시 보관했던 데이터를 물리 메모리에 되돌린다.
스와핑
- 스왑인 + 스왑아웃을 합쳐서 부르는 말
페이징
- 스왑의 단위가 페이지이므로 페이징이라고도 부른다
페이지 인
- 스왑인과 동일
페이지 아웃
- 스왑아웃과 동일
스왑의 동작방식
스왑의 동작 방식은 시스템이 사용할 수 있는 메모리의 양이 실제로 탑재된 메모리 + 스왑 영역 처럼 보이게 한다.
단점은 저장장치에 접근하는 속도가 메모리에 접근하는 속도보다 너무나도 느림
메모리 부족이 일시적이 아니라 만성적이라면 메모리에 접근할때마다 스왑인,스왑아웃이 반복되는 스래싱 상태가 된다.
1. 메모리 부족
프로세스 B에 아직 매핑되지 않은 가상 주소 100번지에 접근했지만, 실제 매핑되지 않아서 페이지 폴트가 발생함
2. 물리 메모리에 빈공간이 없이므로 커널은 사용 중인 물리 메모리의 일부를 스왑 영역에 임시 보관한다. (스왑 아웃)
3. 빈 메모리를 프로세스 B에 할당
4. 시간이 흘러 메모리에 빈공간이 생겼고 프로세스 A가 스왑 아웃된 페이지에 접근한 경우
5.커널은 스왑 영역에 임시 보관했던 데이터를 물리 메모리에 되돌린다. (스왑 인)
출처 - 실습과 그림으로 배우는 리눅스 구조