둘셋 개발!

[운영체제] 운영체제의 메모리 관리 방식 (가상메모리) 본문

운영체제

[운영체제] 운영체제의 메모리 관리 방식 (가상메모리)

23 2023. 8. 28. 12:14

이번 포스팅은 운영체제가 메모리를 어떻게 관리하는지에 대한 대략적인 내용을 간략히 다룬다.

 

메모리 관리 방식

프로그램은 메모리에 올라와야 실행할 수 있다.
만약 동시에 여러 프로그램을 실행하고 싶다면(시분할이겠지만)
하나의 메모리안에 여러 프로세스가 올라와야 하기 때문에 메모리의 공간을 잘 나누어 프로세스들에게 할당해야한다.

 

메모리의 공간할당 방법에는 대표적으로 2가지가 있다.

첫번째는 프로세스 크기만큼 메모리를 할당하는 방법인 세그멘테이션 기법이고,

두번째로는 프로세스를 일정 크기만큼 나눠서 메모리를 할당하는 페이징 기법이다.


또한 여러 프로그램을 메모리에 올릴 경우 메모리의 공간이 모자라는 경우도 있을 것이다.
그럴때에는 메모리를 할당받고자 했었던 프로세스 또는 메모리가 모잘라서 쫓겨난 프로세스는 스왑영역에 스왑 인(swap in)된다.

스왑영역은 하드 드라이브 상에 위치한다. 

 

이때 프로세스의 데이터는 메모리에 바로 올라가는 것이 아니다.

각 프로세스마다 가상 메모리가 주어진다.

프로세스는 주어진 가상 메모리만을 보면서 메모리를 사용하면 되고, 운영체제 안에서는 가상메모리에 저장된 데이터를 메모리(RAM)에 저장하거나 모자라는 경우 스왑영역에 저장한다.

그냥 메모리를 직접 사용할 수도 있는데 굳이 가상 메모리를 사용하는 이유는 뭘까?

 

 

가상 메모리의 필요성

프로세스가 사용하는 가상메모리와 실제 메모리(RAM) 사이에서 운영체제가 관여함으로써

프로세스로 부터 메모리를 보호할 수 있어 보안성을 높일 수 있고,

만약 프로세스가 예기치 못하게 종료될 경우 운영체제가 빠르게 메모리 회수를 할 수 있어서 자원낭비를 막을 수 있다.

부가적으로 프로그램을 개발할 때 메모리(RAM) 크기에 의존하지 않고 개발할 수 있다는 장점이 있다.

참고로 가상메모리가 실제 메모리에 어디에 저장되어 있는지는 커널영역에 있는 mmu(memory management unit)가 매핑 테이블에 있다.


ref

https://www.youtube.com/watch?v=-jlzaslp-w4&list=PLXvgR_grOs1DGFOeD792kHlRml0PhCe9l&index=23
https://st-lab.tistory.com/198