알쓸코지
article thumbnail
Published 2024. 6. 4. 19:31
[OS] Swapping과 Paging CS

스와핑(Swapping)

메모리에서 사용되지 않는 프로세스를 보조기억장치로 옮겨서 생긴 메모리 상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
    • 메인 메모리 공간이 부족할 때 사용한다.

https://tscofet.oopy.io/1e172c69-7af2-4fa4-876e-b6f2d9ee7430

  • `스왑 공간`: 메인 메모리에서 쫓겨난 프로세스들이 저장되는 보조 메모리 영역
    • 보조 메모리에 스와핑된 프로세스의 임시 대기열을 형성한다.
    • `스왑 아웃(swap-out)`: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
    • `스왑 인(swap-in)`: 스왑 영역에 있던 프로세스를 다시 메모리로 옮겨오는 것

특징

  • 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리보다 큰 경우에도 프로세스를 동시에 실행할 수 있다.

  • 시스템의 유연성을 높이고 가용 메모리를 효율적으로 사용할 수 있게 해준다.
  • 프로세스를 스왑시키는 과정이 디스크 I/O를 유발한다. ➡️ 성능 저하가 발생할 수 있다.

 

페이징(Paging)

프로세스의 논리 주소 공간을 일정한 크기의 블록인 `페이지`로 자르고, 메모리 물리 주소 공간을 `프레임`이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤, 페이지를 프레임에 할당하는 가상 메모리 기법

https://hojunking.tistory.com/110#%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC(Virtual%20Memory)-1

  • 가상 메모리 페이지가 물리적 메모의 어느 페이지 프레임에 매핑되어 있는지에 대한 정보는 `페이지 테이블`에 저장되어 있다.
    • 페이지 번호, 프레임 번호, 유효 비트, 보호 비트 등 다양한 정보를 담고 있다.
    • 페이지 테이블은 프로세스마다 개별적으로 가지고 있는 정보로, 커널에 저장된다.
  • CPU가 접근하려는 페이지가 물리적 메모리에 없으면 `페이지 폴트(page fault)`가 발생한다. 

 

특징

  • 프로세스가 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있다.
  • `외부 단편화` 문제를 해결할 수 있지만, `내부 단편화`가 발생할 수 있다.
    • `외부 단편화`: 가용 공간의 총합은 충분하지만 실제 할당 가능한 공간은 부족하여 할당할 수 없는 상황
    • `내부 단편화`: 프로세스가 필요한 양보다 더 큰 메모리로 할당되어 메모리 공간 낭비 발생
    • ex. 페이지 크기가 10KB, 프로세스의 크기가 108KB라면, 마지막 페이지에서는 8KB만 사용해서 2KB 공간이 남게 된다.
  • 페이지 폴트가 발생하면 디스크에서 페이지를 로드해야 하므로, 성능 저하가 발생할 수 있다.

 

요구 페이징(Demand Paging)

프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

  • 당장 실행에 필요 없는 부분은 `Backing Store(=스왑 영역)`에 저장해 두었다가 필요할 때 메모리에 올린다.
  • `순수 요구 페이징(Pure Demand Paging)`: 어떤 페이지가 필요해지기 전까지 메모리에 적재하지 않는 기법으로, 메모리에 로드된 페이지가 없어도 실행할 수 있다.
    • 프로세스의 첫 명령어를 실행하는 순간부터 필요한 페이지가 적재될 때까지 페이지 폴트가 계속 발생하게 된다.
  • 필요한 페이지만 물리 메모리에 적재하므로 메모리를 효율적으로 활용할 수 있으며, 실행 속도가 빨라진다.

 

스와핑 vs 요구 페이징

공통점

주기억장치(메인 메모리)의 용량의 한계를 극복하기 위한 방법으로, 메모리를 효율적으로 사용할 수 있도록 한다.

 

차이점

요구 페이징은 주로 가상 메모리를 효율적으로 사용하고 관리하기 위한 기법으로 프로그램 실행 과정에서 지속적으로 사용되지만,
스와핑은 메모리가 부족할 때 임시로 메모리 공간을 확보하기 위해 사용된다는 차이점이 있다.

 

페이지 스와핑

프로세스 단위가 아닌 페이지 단위로 스와핑할 수 있다.

페이지 스와핑은 메모리가 부족하여 메모리 공간을 확보할 때 유용하며, 요구 페이징은 초기 메모리 사용을 최소화하여 시스템 부하를 줄이는 데 효과적이다.
페이지 교체 vs 페이지 스와핑
페이지 교체는 필요한 페이지가 메인 메모리에 없는 경우(페이지 폴트) 발생한다.
페이지 스와핑은 보조 기억 장치와 메인 메모리 간의 페이지를 교환하는 과정으로, 일반적으로 프로세스의 전체 페이지 또는 다수의 페이지를 한 번에 이동하는 것을 의미한다. 시스템에서 메모리를 확보하거나 프로세스의 실행을 중단할 때 발생한다.

 

Ref

https://www.scaler.com/topics/swapping-in-os/

https://www.geeksforgeeks.org/difference-between-swapping-and-context-switching/?ref=ml_lbp

https://www.javatpoint.com/paging-vs-swapping-in-operating-system

https://www.naukri.com/code360/library/difference-between-paging-and-swapping

https://resilient-923.tistory.com/397

https://charles098.tistory.com/106

 

 

'CS' 카테고리의 다른 글

[OS] 접근 통제 정책  (0) 2024.06.18
[OS] 리눅스 파일 시스템  (0) 2024.06.11
[OS] 뮤텍스와 세마포어  (0) 2024.05.12
[OS] 스레드 풀(Thread Pool)  (0) 2024.04.26
[OS] Interrupt와 Context Switching  (0) 2024.04.19
profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!