[참고자료]
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 크기
** RAM 메모리 한칸 크기 = 1byte(8bit) = 한 주소 공간에 저장 가능한 데이터 크기
[예시2] 32bit, 64bit 응용
32bit OS | 64-bit OS |
word = 4byte | word = 8byte |
pointer가 최대 4G(=2^32) 메모리까지 지원 가능 | 최대 256T (48bit만 사용) 메모리까지 지원 (이론적으로는 16EB) |
Address Translation
MAP: VAS -> PAS or Φ (CS:APP 784p)
Page Hit
- 프로세서는 가상주소를 생성하고 이것을 MMU로 보냄
- MMU는 PTE 주소를 생성하고 이것을 (캐시/메인) 메모리에 요청
- 메모리는 PTE를 MMU로 리턴
- MMU는 물리 주소를 구성하고 이것을 메모리로 보냄
- 메모리는 요청한 데이터 워드를 프로세서로 보냄
Page Fault
[1] 가상주소 valid 체크
[2] 접근 권한 체크
[3] bogus Page Fault (case by Lazy Load)
- Page Hit 1 ~ 3 단계
- PTE 유효비트는 0이므로, MMU는 예외 발생 후 CPU의 제어를 OS 커널로 반환해 page fault 예외 핸들러로 이동
- (swap-out) 핸들러는 메모리 내 victim 페이지를 결정 (Dirty bit = 1, 디스크로 페이지 이동)
- (swap-in) 핸들러는 새 페이지를 들여오고, Page Table 갱신
- 사용자 프로그램으로 돌아가 instruction restart
'2️⃣ 개발 지식 B+ > OS' 카테고리의 다른 글
[PintOS 3-1] Memory Management (0) | 2024.10.14 |
---|---|
[OS] PML4 이해하기 (w. PintOS) (1) | 2024.10.14 |
[OS] QnA로 알아보는 Virtual Memory (1) | 2024.10.09 |
[OS] Virtual Memory 강의 정리 - 반효경 교수님 (v2017) (4) | 2024.10.09 |
[PintOS Project2] USER PROGRAMS (2) | 2024.10.08 |