HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📖
공부한 책
/
📒
Computer Systems - A Programmer’s perspective
/9. Virtual Memory/
VM as a Tool for Memory Management

VM as a Tool for Memory Management

notion image
  • OS는 프로세스 마다 page table과 virtual address를 제공하게 됨
  • 이러한 방식은, 시스템에 의해 메모리가 사용되고 관리되는데 큰 영향을 주었고, 특히 VM 은 linking과 loading, sharing of code and data, and allocating memory to application을 매우 단순화 시켰음

Simplifying linking

notion image
  • 개별적인 address space는 각각의 프로세스들이 동일한 메모리 이미지의 형태를 갖도록 해줌. 실제로 code와 data가 physical memory 상 어디에 존재하는지에 상관없이
  • 이러한 통일성은 linker의 디자인과 구현을 매우 단순화 시켰음.
    • fully linked excutable을 만들 때, code와 data의 실제 physical memory 위치는 전혀 상관이 없음

Simplifying loading

  • Virtual memory는 excutable과 shared object file을 메모리 상에 로드하는 것도 쉽게 만들었음
  • .text와 .data section을 새로 만들어진 프로세스에 로드하기 위해서
    • Linux loader가 연속적인 virtual page의 chunk를 starting at address 0x0804800(32bit), 0x400000(64bit) 해당 주소에 할당
    • valid bit를 not cached로
    • PTE를 object file의 주소를 가리키게만 만들면 됨
  • 여기에서의 흥미로운 점은 로더가 어떤 데이터도 복사하지 않았다는 점임. 주소값만 넣어주면 됨. 그럼 알아서 CPU 가 read 명령어 내릴 때 동작하게 됨
  • 연속적인 virtual page의 집합을 임의의 파일의 임의의 위치로 매핑하는 개념 → memory mapping

Simplifying sharing

  • 모든 프로세스는 운영체제의 kernel의 코드를 실행해야 하기 때문에 공유의 필요성이 존재
  • 제일 위의 Fig 9.9에서 보듯이 공유는 상당히 쉬움. 동일한 physical address에 대해 다른 virtual address를 붙여주면 됨

Simplifying memory allocation

  • Virtual memory는 유저의 프로세스에 추가적인 메모리를 할당하는 간단한 메커니즘을 제공함
  • 유저 프로세스에서 돌고 있는 프로그램이 추가적인 heap 공간을 요청했을 시(as a result of calling malloc),
    • OS는 연속적인 virtual memory page를 할당하고 걔네들을 physical memory 상에 있는 임의의 동일한 갯수의 physical page로 매핑함
    • page table의 동작 방식으로 인해, OS는 physical memory를 추가적으로 할당할 필요가 없음
    • physical memory상에서 page는 랜덤하게 분산될 수 있음