본문 바로가기
2️⃣ 개발 지식 B+/OS

[OS] Virtual Memory 역할, 주소 변환

by ddubbu 2024. 10. 14.

[참고자료] 

CS:APP 9장

영상 : https://www.youtube.com/watch?v=Fg00LN30Ezg&t=1182s
블로그 : https://charles098.tistory.com/101


 

VM 역할 및 장점

 

1. 캐싱

CPU는 메인 메모리를 디스크에 저장된 주소공간에 대한 캐시로 취급해서
메인 메모리 내 활성화 영역만 유지 (CS:APP 772p)

 

[궁금증] 캐싱 저장장치가 아닌데, 왜 그렇게 표현하는걸까?

[해결]

  • 캐싱? 원본을 접근하는 시간이 오래 걸리는 경우, 가까운 임시 저장소에 저장 후 시간 절약하는 기법
  • CPU ~ Disk 거리가 너무 멀어서 사이에 여러 개의 기억 장치(ex. DRAM(메인 메모리))가 존재함. CPU는 필요한 데이터를 메모리에 요청하고, 없으면 OS가 데이터를 디스크에서 데이터를 가져온다.
  • CPU와 가까운 메인메모리를 캐시로 취급 한다는 표현 ( 이해 완료🙆‍♂️)

 

2. 메모리 관리: 링킹(w. demand paging), 로딩, 공유, 메모리 할당 단순화

3. 메모리 보호: W/R, U/S, 다른 프로세스 간 침범 보호

 

 

n-bit 운영체제란?

  • 가상 주소길이 = n
    • 포인터 크기 = 주소 길이 (운영체제별로 상이함)
    • 2^n 개의 가상 주소를 가질 수 있음
  • 데이터 처리 단위, word

 

[예시1] 16bit 운영체제 word 이해하기

  • 명령어 6bit + 데이터 10bit = 16bit 운영체제
  • 메인 메모리는 1byte씩 저장되므로, word = 2byte
  • = 메인메모리에서 한번에 2줄을 읽을 수 있다
  • = CPU register 크기

16bit 운영체제 예시

 

** RAM 메모리 한칸 크기 = 1byte(8bit) = 한 주소 공간에 저장 가능한 데이터 크기

 

[예시2] 32bit, 64bit 응용

32bit OS 64-bit OS
word = 4byte word = 8byte
pointer가 최대 4G(=2^32) 메모리까지 지원 가능 최대 256T (48bit만 사용) 메모리까지 지원
(이론적으로는 16EB)

address 길이 비교

 

 

Address Translation

MAP: VAS -> PAS or Φ (CS:APP 784p)

 

주소 번역 과정 요약

 

Page Hit

  1. 프로세서는 가상주소를 생성하고 이것을 MMU로 보냄
  2. MMU는 PTE 주소를 생성하고 이것을 (캐시/메인) 메모리에 요청
  3. 메모리는 PTE를 MMU로 리턴
  4. MMU는 물리 주소를 구성하고 이것을 메모리로 보냄
  5. 메모리는 요청한 데이터 워드를 프로세서로 보냄

Page Fault
[1] 가상주소 valid 체크
[2] 접근 권한 체크
[3] bogus Page Fault (case by Lazy Load)

  1. Page Hit 1 ~ 3 단계
  2. PTE 유효비트는 0이므로, MMU는 예외 발생 후 CPU의 제어를 OS 커널로 반환해 page fault 예외 핸들러로 이동
  3. (swap-out) 핸들러는 메모리 내 victim 페이지를 결정 (Dirty bit = 1, 디스크로 페이지 이동)
  4. (swap-in) 핸들러는 새 페이지를 들여오고, Page Table 갱신
  5. 사용자 프로그램으로 돌아가 instruction restart