Virtual Memory: Paging, Physical Memory, MMU
포스트 난이도: HOO_Middle
# Virtual Memory
Virtual memory는 실행하고 운영하고자 하는 프로그램의 크기가 메모리에 비해 너무 클 경우에 효율성을 위해서 사용하는 방식이다.
OS에서 VM(Virtual Memory)을 사용하는 이유는 SW가 HW를 보조해주기 위해서이다.
예를 들어 VM이 없을 경우, 각 컴퓨터의 메인 메모리 사이즈에 맞는 프로그램만을 실행하고 운영할 수 있다.
이 경우 여러 프로그램을 동시에 운영을 하지 못하는 경우가 발생할 수 있다는 것도 의미한다.
따라서 VM은 메인 메모리보다도 사이즈가 큰 프로그램을 실행하고 운영할 수 있도록 도와주는 역할을 하며, 이것이 사실상 SW가 HW를 도와주고 있는 것이다.
한마디로 다양한 프로그램을 실행하고 운영하는 과정에서도 virtual memory, 가상 메모리를 사용되어진다는 것이다.
하지만 HW 기술이 발달하고 HW에 대한 비용이 절감됨에 따라 충분히 사이즈가 큰 메인메모리를 사용할 수 있게 되었다.
따라서 VM의 사용 방식도 다소 과거와 다소 달라졌다.
HW 기술이 부족한 과거에는 마치 HW 기능에 집중해서 support을 해주었다면 이제는 HW 기술이 발달해서 VM이 보다 더 효율성 부분에 집중해서 지원할 수 있게 되었다는 것이다.
한마디로 과거 HW가 3살짜리 애기였다면 이제는 초등학생이 되어서 혼자서 옷을 입고 밥을 먹고 학교를 다닐 수 있어 VM이 HW 효율성에 더욱 집중하여 support 해줄 수 있게 되었다고 볼 수 있다.
각각의 프로세스(Processes)들은 고유의 address space를 가지고 있는데 이것을 pages로 나눠지게 된다.
이 페이지(Pages)들은 또다시 mapped 되어 물리적 메모리라고 불리는 Physcial memory로 향하게 되는데 여기서 유의할 점은 모든 페이지가 물리적 메모리로 가지지는 않는다는 것이다.
Physcial memory로 가진 페이지들은 HW나 SW가 작업을 mapping 하고 수행하는데 참고하여 실행된다.
만약에 memory에 실행하거나 운영할 프로그램의 정보가 없다면 OS는 다시 재실행 과정을 거쳐 데이터를 불러온다.
# Paging
페이징(Paging)은 아래와 같은 과정을 거쳐서 작업이 수행된다.
- Paging
- Virtual address
- Virtual address space
- Memory management Unit
우선 CPU가 virtual addresses들을 MMU에 전달한다.
MMU에서는 받은 virtual addresses들을 Physical addresses에서 memory로 전달하는 작업을 수행한다.
이때 전달되는 방식은 bus를 통해서 전달이 이루어지며 최종적으로는 disk controller까지 연결되어 전달된다.
참고로 MMU라고 불리는 memory management unit의 경우에는 CPU의 하나의 chip 방식으로 존재할 수도 있지만 HW의 발달로 인해 이제는 별도의 chip 방식으로 구성될 수 있다.
# Virtual Address and Physcial Memory Address
Virtual addres에서 Physcial memory address로 전달되는 과정은 아래와 같다.
- Pages
- Page frames
- Page table
- Page fault
- Present bit or Absent bit
Virtual page에서 Physcial address인 Page frames로 전달이 되며, mapping function인 page table에서 작업이 수행된다.
이후에는 accessing 하려는 page가 physcial memory 안에 없다면 Page fault가 발생한다.
이후에 Present or absent bit을 통해 특정 페이지가 physcial memory에 있는지 없는지를 알 수 있다.
# MMU
MMU를 통해 Phsical memory보다 큰 Virtual address space를 사용할 수 있다.
이때 사용되는 방식이 mapping function인 Page table을 통해 이루어진다.
Virtual address에 특정 데이터가 들어오면(Incoming) Page table을 참고하여 Mapped 되어 Physcial address로 전달된다.
'Computer Science' 카테고리의 다른 글
[Programming] Wear Leveling (0) | 2022.03.21 |
---|---|
[Operating System] Garbage Collection, Write Amplification (0) | 2022.03.21 |
[Programming] SSD(Solid-state Drive) (0) | 2022.03.19 |
[Programming] RAID: RAID 0, RAID 1, RAID 4, RAID 5, RAID 10 (0) | 2022.03.18 |
[Programming] Magnetic Hard Disk Drive (0) | 2022.03.17 |
댓글