여러 프로그램을 메모리상에서 돌리다 보면 메모리가 부족할 수밖에 없다.
이런 메모리 부족을 해결하기 위해서 나온 방법이 Swapping이다. 더 많은 프로세스가 메모리에 존재할 수 있도록 하는 것이다. swapping을 사용하면 프로세스를 다시 실행할 때 처음부터 메모리에 올리는 것이 아니라 더 빨리 할 수 있기 때문이다.
Swapped은 backing store를 만들어서 프로세스 단위로 swap in, swap out을 동작한다. ( backing store는 임시저장소로 하드디스크나 NVM처럼 여러 하드웨어가 될 수 있다. 즉 Secondary Storage다.)
프로그램이 실행되면 Bakcing store에 있는 필요한 page 정보를 메모리에 올린다.
이렇게 프로세스 단위로 왔다 갔다 하는 걸, standard swapping이라 한다. 하지만 요즘에는 standard swapping을 사용하지 않는데 그 이유는 아래와 같다.
만약에 다음에 실행할 프로세스가 메모리에 없다면, 메모리에 올라가 있는 하나의 프로세스를 swap out 하고 내가 실행시킬 프로세스를 swap in 한다. 이때 conext swich time이 오래 걸린다. 예를 들어 100MB 프로세스를 1초당 50MB씩 전송할 수 있다면, swap out 하는데 2초, swap in 하는데 2초. 즉, 총 4초가 걸린다. 사람의 입장에서는 4초면 짧지만 CPU 입장에서는 엄청나게 긴 시간이다.
이렇기 때문에 프로그램 단위로 swap in, out 하는 것이 아니라 page 단위로 옮긴다.
아래 그럼에서 왼쪽은 프로그램 단위로 왔다 갔다 하는 것이고 오른쪽은 page 단위로 왔다 갔다 하는 것이다.
운영체제 Swapping ( page in, page out ) (tistory.com)
'CS > OS & 하드웨어' 카테고리의 다른 글
Virtual Memory - 가상 메모리 ( 필요한 이유 ) (0) | 2023.08.24 |
---|---|
Memory Allocation (논리 메모리, 물리 메모리, Dynamic Loading, Paging이 나온 이유 ) (0) | 2023.08.24 |
CPU 스케줄링(Scheduling) 알고리즘 정리 및 요약 | FCFS, SJF, Round Robin (0) | 2023.07.29 |
스레드 안전(Thread-Safety)란? (0) | 2023.07.27 |
시스템 구조와 프로그램 실행 2 (0) | 2023.03.24 |