Computer Science

[운영체제] 스와핑(스와핑, 스와핑-입출력, 여러가지 스와핑, 모바일 시스템에서의 스와핑)

imsunbow 2024. 1. 18. 17:03

스와핑(Swapping)이란 실행을 계속할 수 없는 프로세스를 메모리에서 일시적으로 예비 저장장치로 내보내고, 실행을 계속할 수 있는 프로세스를 예비 저장장치에서 메모리로 불러오기 하여 실행을 재개할 수 있게 하는 것을 의미한다.

 

예비 저장장치로는 모든 프로세스의 메모리의 복제본을 저장할 수 있을 정도의 저장 용량을 가진 빠른 디스크를 사용한다. 이 때 빠른 접근을 위해 저장된 메모리 이미지에 대해 직접 접근이 가능해야 한다.

 

스와핑이 존재하지 않는다면, 물리적 메모리의 크기보다 모든 프로세스의 물리적 주소 공간의 합이 반드시 작아야만 한다.

그러나 스와핑을 통해 이러한 경우가 아니더라도 모든 프로세스가 동시에 실행될 수 있게 할 수 있다.

 

 


 

스와핑 동작은 다음과 같은 프로세스로 진행된다.

1. CPU scheduler가 ready queue에서 다음 프로세스를 결정하고 dispatcher를 호출한다.

2. Dispatcher는 다음 프로세스가 메모리에 있는 지 예비 저장장치에 있는 지를 확인한다.

3. Dispatcher는 context switching을 수행한다.

 

context switch 시간은 swap in/swap out 하는 시간의 합보다 크다.

 


 

[스와핑과 입출력]

스와핑되는 프로세스는 완전히 idle 상태여야 한다. 진행중인 i/o를 갖는 프로세스는 스와핑하지 않고, 운영체제 buffer를 통해 입출력 연산을 대신 수행한다. 그리고 프로세스가 swap-in 될 때, 운영체제 버퍼와 프로세스 메모리 간에 입출력 데이터를 전송한다.

 

스와핑에는 여러 방법이 있다.

- 기본 스와핑:

RR 스케줄링- quantum이 종료된 프로세스를 swap out, 여유 메모리를 다른 프로세스에게 할당한다. 

우선순위 스케줄링 - 낮은 우선순위 프로세스를 swap out, 높은 우선순위 프로세스들에게 할당한다.

 

-변형된 스와핑(UNIX, Linux, Windows에서 사용)

평소에는 Swapping을 비활성화한다. 여유 메모리의 양이 일정 기준 이하가 되면 Swapping을 시작하여 여유 메모리 양이 증가하면 Swapping은 다시 정지된다.

 

 

- 모바일 시스템에서 Swapping은 보통 지원되지 않으며, 여유 메모리가 없다고 os에서 판단시 프로세스를 종료시키는 구조로 구성되어 있다. 

반응형