스와핑(Swapping)
스와핑(Swapping) 개념은 메모리 관리 전략을 배울때 꼭 알아두어야하는 필수 개념이다.
메모리 관리 전략
메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족하다.
메모리 관리 전략이란 제한된 메모리를 효율적으로 사용하기 위한 전략을 의미한다.
- CPU 스케줄링
- CPU 를 효율적으로 사용하기 위한 여러 CPU 스케줄링 기법들에 대해서 배운다.
- 메모리 관리전략
- 메모리를 효율적으로 사용하기 위해서 메모리 관리 전략들에 대해서 배운다.
스와핑(Swapping)
스와핑(Swapping)은 원어 그대로 교체
라는 의미를 지닌다. 무엇을 교체하는지 배워보자.
프로세스가 실행 되기 위해서는 메모리에 있어야 하지만, 프로세스는 실행 중에 임시로 예비 저장장치(backup store)
로 내보내어졌다가 실행을 계속하기 위해 다시 메모리로 돌아올 수있다.
여기서 설명하는 backup store 에는 하드디스크나, ssd 같은 storage 를 의미한다.
예를 들어, 최대 메모리에 20 개의 프로세스를 올릴 수 있다고 가정하자. 메모리가 꽉찬 상태에서 21번째의 프로세스가 실행되면, 이미 실행 중인 프로세스를 잠시 backup store 에 저장했다가, 그 빈 공간에 새로운 프로세스를 집어 넣는다.
위 그림을 보자.
처음에 실행 준비가 된 모든 프로세스들은 준비 리스트(준비 완료 큐)
에 들어가 있어야 하며, CPU 스케줄러가 다음 실행할 프로세스를 선정할 때, 디스패처(Dispatcher) 를 호출한다. 디스패처는 준비 리스트에 있는 다음 프로세스가 메모리에 올라와 있는지 확인하여, 만약 올라와 있지 않다면 디스크에서 불러들인다. 그런데 만약에 실행 시킬 프로세스를 위한 공간이 메모리에 없다면 공간을 만들기 위해 현재 메모리에 올라와 있는 프로세스를 내보내고(swap-out), 실행시킬 프로세스를 메모리에 적재한다.
즉, 프로세스를 backup store 로 쫓아내는 것을 swap-out
이라고 하며, swap-in
은 backup store 에 저장되어있던 녀석을 다시 메모리에 올려서 수행시켜주는 것을 의미한다. backup store 에 저장되어있던 프로세스를 다시 메모리에 로딩 시켜야하므로 교체 과정에서 context switching
이 발생한다.
프로세스의 Context-Swithcing 비용은 크기 때문에 현대 운영체제에서는 스와핑
이 사용되지 않는다. 대신 스와핑을 변형한 방식을 사용한다고 한다.(Ex. UNIX, Linux, Windows 등) 이 부분에서는 다루지 않을 것이다.
이 스와핑 개념은 VMM(Virtual Memory Management)
방식과 유사하다. VMM 은 가상 메모리 관리라는 개념인데, 가상 메모리 자체가 8기가 메모리에서 10 기가 짜리 프로그램을 돌리게 할 수 있는 기법이다.
스와핑은 swap-in, swap-out 의 단위가 프로세스(process)
인 반면, VMM 은 페이징(paging)
이라는 단위로 스와핑을 실시한다.
- 정리
- 스와핑(Swapping) : 메모리에 적재한 하나의 프로세스와 보조기억장치(backup store)에 적재한 다른 프로세스의 메모리를 교체하는 방법
- 프로세스 단위의 스와핑은
가상 메모리 관리 방법인 페이징 기법
으로 발전하였다.
References
'CS > OS' 카테고리의 다른 글
세그멘테이션과 페이징 (0) | 2021.12.17 |
---|---|
메모리 할당과 단편화 (0) | 2021.12.17 |
주소 바인딩 (0) | 2021.12.17 |
교착상태와 기아상태 (0) | 2021.12.15 |
프로세스 동기화 (0) | 2021.12.10 |