# 가상 메모리 시스템
하드디스크를 RAM처럼 사용한다는 의미
모든 메모리 관리 단위는 Page이다
프로세스가 만들어지면
각 프로세스마다 RAM의 공간을 차지하게 되는데
프로세스 <-> RAM을 서로 연결시켜 Page 단위를 기준으로 관리한다
만약,
A 프로세스로 이미 램의 공간이 부족한 상태에서
B 프로세스가 실행이 되면
기존에 쓰고 있었던 A 프로세스의 RAM의 Page들을 HDD로 보내버리는 행위를 하는데
이를 Page-out(Swap-out)
만약,
다시 A 프로세스를 사용하려고 하면
RAM에 있는 B 프로세스의 Page들을 Page-out(Swap-out)하고
HDD에 있는 A 프로세스의 Page들을 Page-in(Swap-in)함
따라서,
램이 부족하면 프로그램 간 스위칭할 때 하드디스크의 읽기/쓰기가 빈번하게 일어나고
Page-in, Page-out 하는 동안 OS는 잠시 모든 프로그램들을 멈추게 된다
결국, 가상 메모리 시스템을 사용하면 작동은 되고
각자 프로세스들의 영역이 보호가 되지만
부족한 공간을 하나의 메모리로 논리적으로 추상화해 주니 작동은 되지만 매우 느림
그리고
특정 프로그램이 오류가 나서 다운돼버리면
운영체제가 프로세스에게 부여한 메모리 공간을 강제로 회수하고
그 공간들은 다시 쓸 수 있는 공간으로 변하게 되고 프로세스가 제거되기에 장단점이 존재한다
# 가상 메모리 시스템을 사용하는 이유
- 각 프로세스 공간을 완벽하게 분리하고 통제할 수 있다
- 프로세스 오류가 운영체제에 까지 영향을 주지 못하도록 차단할 수 있다
(운영체제 입장에서 관리가 쉽고 편하다)
- 메모리가 부족해도 여러 프로그램들이 작동하는 등 자원을 효율적으로 활용할 수 있다
- 내부적으로 메모리를 직접 제어 가능한 C언어, C++을 통해
실행파일을 실행해 Process가 만들어지면
내부의 메모리들이 다 가상메모리로 이루어진다
'CS > [널널한 개발자] CS 개론' 카테고리의 다른 글
[자료구조] 자료구조와 알고리즘 (0) | 2023.02.13 |
---|---|
[운영체제 5] User mode와 Kernel mode 그리고 가상화 (0) | 2023.02.13 |
[운영체제 4] 국가와 국민으로 이해하는 컴퓨터 (0) | 2023.02.13 |
[운영체제 3] 컴퓨터의 구성요소 (Process, Thread, Stack, Heap) (0) | 2023.02.13 |
[운영체제 2] 원자성, 동기화 그리고 데드락 (0) | 2023.02.13 |