[TIL]가상메모리에 대한 이해

경준·2022년 12월 1일
0

OS

목록 보기
4/5
post-thumbnail

🥕 가상메모리(Virtual Memory)란?

메모리 관리 기법의 하나로, 기계에 실제로 이용 가능한 기억 자원(물리메모리)을 이상적으로 추상화하여
사용자들에게 매우 큰 메모리(가상메모리)로 보이게 만드는 것을 말한다.




가상메모리의 사용 목적

  1. 메모리의 의존성을 없엔다
  2. 높은 추상성을 제공 → 보안성⬆️(접근 및 제어가 용이해짐)
  3. Process 오작동 시 OS가 관련 Memory를 신속히 회수 → 자원 낭비⬇️



32bit 응용 S/W에서의 Memory Space


통상 User Memory Space에 2GB가 할당되나 일부 영역(약 200mb)은 OS파일이 할당되어 있어 실 가용한 Memory Space는 약 1.8GB정도이다.

메모리 관리자(Memory Management)는 Kernel Space에 위치하며 RAM과 Swapd영역을 관리한다.

Process가 Mapping Table에 의해 Virtual Memory가 Physical Memory로 할당됨

  • Process마다 각자 고유한 주소를 가리킴 → Virtual Memory Addr가 같다고 Physical Memory Addr이 같지 않다.

Virtual Addr은 RAM상의 Physical Addr에 Mapping되어 Page Table형태로 관리된다.



Page : Vitural Memory의 연속적인 영역

  • size는 4096bytes, Page는 Page크기로 균등하게 나눌 수 있는 가상 주소에서 시작해야함 (64bit OS에서 마지막 12bit : page offset)
  • 각각의 Process는 User Page의 독립적인 집합을 가지고 있음
  • 어떤 Process가 실행되던 상관없이 같은 위치에 남아있음
  • Kernel은 User & Kernel Page에 접근하지만 User Process는 오직 자신의 User Page만 접근가능



Frame : Physical Memory의 연속적인 영역

Page처럼 Frame도 Page size로 균등하게 크기를 나누어야 함

  • Frame은 Kernel VM을 통해 전달될 수 있다 (Kernel의 첫 페이지 ↔ PM의 첫 Frame, 두번째 Page ↔ 두번째 Frame)



Page Table : VA를 PA로 변환하는데 사용하는 자료구조

PintOS에서는 threads/mmu.c에서 제공함

  • Page Table은 Page Number를 Frame Number로 변환하여, 오른쪽 PA를 얻기위해 수정되지 않은 offset과 결합된다

code 영역의 경우 : read/execute만 가능하나 system call로 write 권한비트를 수정 가능하다(이러한 접근을 조심해야 함)

  • Data Execution Prevention : OS 수준에서 메모리 접근을 막아 잘못된 접근 시 Page fault발생


Swap Slots : Swap Partition에서 disk공간의 page size 영역

Slot 배치를 결정하는 H/W의 제한이 frame보다 유연해도, Swap Slots는 Page를 정렬해야 함



Process 영역 별 Memory 접근 권한




Virtual Memory 파트는 이론도 알아할 내용들이 많고 정리가 쉽지 않은 것 같다.
차근차근 점진적으로 공부해보자🔥

profile
코린이 좌충우돌 메모장

0개의 댓글