스와핑
IT위키
더 많은 작업
스와핑(swapping)은 주기억장치가 모자랄 때 운영체제가 당장 실행하지 않는 프로세스(또는 그 일부)를 보조기억장치의 스왑 영역으로 내보내고(스왑 아웃), 다시 필요할 때 주기억장치로 불러오는(스왑 인) 메모리 관리 기법이다.
여러 프로세스를 동시에 돌리면 그 메모리를 다 합친 크기가 실제 램보다 커질 수 있다. 스와핑은 대기 중이거나 우선순위가 낮은 프로세스를 디스크로 옮겨 램을 비우고, 그 자리에 다른 프로세스를 올려 실행한다. 사용자 입장에서는 실제 램보다 많은 프로그램을 띄워 둘 수 있다. 디스크는 램보다 훨씬 느리므로 스와핑이 잦아지면 시스템이 눈에 띄게 느려진다.
- 리눅스는 스왑 파티션이나 스왑 파일을 스왑 영역으로 쓴다(
mkswap,swapon,free로 확인) - 윈도우는 페이지 파일(pagefile.sys)을 쓴다
| 구분 | 스와핑 | 페이징 |
|---|---|---|
| 옮기는 단위 | 원래는 프로세스 전체 | 페이지(고정 크기 조각) |
| 언제 | 메모리가 부족할 때 프로세스 단위로 내보냄 | 필요한 페이지가 없을 때(페이지 폴트) 그 페이지만 가져옴(요구 페이징) |
| 관련 개념 | 중기 스케줄링 | 가상 메모리, 페이지 교체 알고리즘 |
오늘날 운영체제는 프로세스 전체가 아니라 페이지 단위로 내보내고 들여오므로, 디스크로 페이지를 내보내는 일도 흔히 스와핑(스왑 아웃)이라 부른다. 페이지 교체가 너무 잦아 실제 작업보다 스와핑에 시간을 더 쓰는 상태를 스래싱(thrashing)이라 한다.