<aside> 💡 “운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!

</aside>

주소 변환의 원리

운영체제는 효율성, 제어, 유연성을 추구하면서 주소변환을 하려고 한다.

주소 변환의 핵심 기법은 하드웨어 기반 주소 변환이다. 이러한 주소 변환을 통해 가상 주소를 정보가 실제 존재하는 물리 주소로 변환한다.

즉, 프로그램의 모든 메모리 참조를 실제 메모리 위치로 재지정한다. 운영체제는 메모리의 빈공간과 사용중인 공간을 항상 파악하므로서 메모리를 제어 할 수 있다.

가정

아래의 비현실적인 가정들을 완화하면서 실제적인 메모리 가상화를 알아볼 것이다.

  1. 사용자의 주소공간은 물리 메모리에 연속적으로 배치된다.
  2. 주소공간의 크기는 물리 메모리 크기보다 작다
  3. 각 주소공간의 크기는 같다

사례

void func()
	int x = 3000;
	x = x + 3;

// 어셈블리어로 변환하면
128 : movl 0x0 (\\%ebx), \\%eax;
132 : addl \\$0x03, \\%eax;
136 : movl \\%eax, 0x0(\\%ebx);

https://blog.kakaocdn.net/dn/k92g2/btrXORSFCrU/4KzTNXK6wqLBiDbtaSC4K0/img.png

https://blog.kakaocdn.net/dn/bqY2f8/btrXORd5UxR/FyAgTNrSnfXItSeQluzRNK/img.png