본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

스와핑(swapping)은 주기억장치가 모자랄 때 운영체제가 당장 실행하지 않는 프로세스(또는 그 일부)를 보조기억장치의 스왑 영역으로 내보내고(스왑 아웃), 다시 필요할 때 주기억장치로 불러오는(스왑 인) 메모리 관리 기법이다.

여러 프로세스를 동시에 돌리면 그 메모리를 다 합친 크기가 실제 램보다 커질 수 있다. 스와핑은 대기 중이거나 우선순위가 낮은 프로세스를 디스크로 옮겨 램을 비우고, 그 자리에 다른 프로세스를 올려 실행한다. 사용자 입장에서는 실제 램보다 많은 프로그램을 띄워 둘 수 있다. 디스크는 램보다 훨씬 느리므로 스와핑이 잦아지면 시스템이 눈에 띄게 느려진다.

  • 리눅스는 스왑 파티션이나 스왑 파일을 스왑 영역으로 쓴다(mkswap, swapon, free 로 확인)
  • 윈도우는 페이지 파일(pagefile.sys)을 쓴다

스와핑과 페이징

편집 원본 편집
구분 스와핑 페이징
옮기는 단위 원래는 프로세스 전체 페이지(고정 크기 조각)
언제 메모리가 부족할 때 프로세스 단위로 내보냄 필요한 페이지가 없을 때(페이지 폴트) 그 페이지만 가져옴(요구 페이징)
관련 개념 중기 스케줄링 가상 메모리, 페이지 교체 알고리즘

오늘날 운영체제는 프로세스 전체가 아니라 페이지 단위로 내보내고 들여오므로, 디스크로 페이지를 내보내는 일도 흔히 스와핑(스왑 아웃)이라 부른다. 페이지 교체가 너무 잦아 실제 작업보다 스와핑에 시간을 더 쓰는 상태를 스래싱(thrashing)이라 한다.

다른 운영체제 기능과 구분

편집 원본 편집
기능 하는 일
스와핑 주기억장치와 보조기억장치 사이에서 메모리 내용을 옮긴다
시스템 호출 사용자 모드 프로세스가 커널의 서비스를 요청하는 인터페이스. 호출하면 커널 모드로 바뀌어 처리한 뒤 사용자 모드로 돌아온다
인터럽트 하드웨어나 예외 상황이 CPU 에 사건을 알려 실행 중인 작업을 멈추고 처리 루틴을 실행하게 하는 것
시그널 운영체제가 프로세스에 사건을 알리는 소프트웨어 통지(SIGKILL 등) → 리눅스 시그널