Chapter#13 Address Translation
- Address Translation
- Address Translation Techniques
- Dynamic Relocation
- Segmentation ( #14 )
- Paging ( #15~16 )
Address Translation
각 프로세스는 private virtual address space를 가짐
physical memory는 모든 프로세스가 공유함
Address translation : virtual address를 physical address와 mapping한 것
Design Goal
Transparency : 프로그램은 메모리가 virtualized된지 알지 못함
Protection : 프로세스간 메모리 침범이 안되도록 OS에서 관리
Flexibility : 프로그램 작성이 더 쉬운 방식으로 시스템 만듦
언제 Address Translation이 되어야 하는가?
1. Compile Time : 컴파일러에 의해 만들어진 주소값이 physical address에 직접 mapped된 경우 (virtual address = physical address)
똑같은 주소값에 할당된 같은 프로세스는 충돌이 일어날 수 있다
2. Load Time : executables가 physical memory에 로드되었을 때 address translation 하는 경우
다른 프로세스 주소를 참조할 수 있다
3. Execution Time : executable이 CPU에 돌고 있을 때 address translation 하는 경우
load time의 call과는 다르게 virtualized되어있어 physical address접근할 때마다 OS에 의해 주소값 translation함
다만, cpu time이므로 엄청 느리다 (퍼포먼스 낮음)
Address Translation with Hardware : CPU 내의 H/W 디바이스(MMU : Memory Management Unit)가 관리
Address Translation Techniques
Dynamic Relocation ( Base and Bounds )
두 H/W(CPU) register 필요
- base register : 시작 주소 저장
- bound(or limit) register : physical memory의 길이
physical address = virtual addres + base
0 <= virtual address < bound
Starts running : 알맞은 physical 주소 찾기
Terminated : 메모리를 free시킴
Switch occurs : Saving/Storing base-bound pair
Dynamic Relocation의 문제점
virtualized space length가 제한되어있으나 실질적으로 엄청 크다.
즉, heap-stack 사이 space가 낭비된다
학교 강의를 토대로 개인 공부 목적으로 작성되어 오타가 및 오류가 있을 수 있으며, 문제가 될 시 삭제될 수 있습니다.
'Study > 운영체제' 카테고리의 다른 글
Chapter#17 Swapping (0) | 2021.12.10 |
---|---|
Chapter#16 Paging Advanced (0) | 2021.12.09 |
Chapter#15 Paging (0) | 2021.12.09 |
Chapter#14 Segmentation (0) | 2021.12.08 |
Chapter#12 Virtual Memory (1) | 2021.12.08 |