운영체제 - 메모리관리

2020-10-12

OS를 공부하면서 정리를 한 내용들 입니다.


메모리는 주소를 통해 접근하는 장치 입니다.

메모리 주소라는 것은 크게 2종류가 있습니다.

Logical vs Physical Address

Logical address(= virtual address)

  • 프로세스마다 독립적으로 가지는 주소 공간
  • 각 프로세스마다 0번지 부터 시작
  • CPU가 보는 주소는 logical address

Physical address

  • 메모리에 실제 올라가는 위치

주소 바인딩 : 주소를 결정하는 것

우리가 프로그래밍을 할 때 논리적/물리적인 주소 메모리를 사용하지만

메모리 주소를 적어가면서 하는게 아니라 메모리 변수(Symbolic)를 만들어서

프로그래밍을 하게 됩니다.

이것을 Symbolic Address라고 부릅니다.

이것이 컴파일 되어서 실행파일이 만들어지면서

프로그램만의 독자적인 메모리 주소(Logical Address)가 메겨지고,

메모리에 올라가서 실행이 될 때 물리적인 메모리 주소(Physical Address)를 가지게 됩니다.

그럼 여기서 논리적 주소가 물리적 주소로 바뀌는 시점이 누구이고 언제인가를 정하는게 주소 바인딩입니다.

주소 바인딩(Address Binding)

시점에 따라서 3가지로 구분이 됩니다.

Complie time binding

  • 물리적 메모리 주소(physical address)가 컴파일 시 정해짐
  • 시작 위치 변경시 재컴파일
  • 컴파일러는 절대 코드(absolute code) 생성

Load time binding

  • Loader의 책임하에 물리적 메모리 주소 부여
  • 컴파일러가 재배치가능코드(relocatable code)를 생성한 경우 가능

Execution time binding(= Run time binding)

  • 수행이 시작도니 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음.
  • CPU가 주소를 참조할 때마다 binding을 점검(address mapping table)
  • 하드웨어적인 지원이 필요(예 : base and limit registers, MMU)

Memory-Management Unit(MMU)

  • 논리적 주소를 물리적 주소로 변환하는 것을 도와주는 하드웨어입니다.

MMU scheme

  • 사용자 프로세스가 CPU에서 수행되며 생성해내는 모든 주소값에 대해 base register의 값을 더 해줍니다.

User program

  • logical address만을 다룹니다.
  • 실제 physical address를 볼 수 없으며 알 필요가 없습니다.

그림 출처

  1. CPU가 logical address를 전송함.
  2. MMU는 이 address가 주소공간 내에 있는지 확인을 합니다.
  3. 정상적인 메모리접근이라 하면 relocation register에서의 값과 더해서 물리적 주소로 변환시킨 후 메모리에 올립니다.

운영체제 및 사용자 프로세스 간의 메모리 보호를 위해 사용하는 레지스터

  • Relocation register(base register) : 접근할 수 있는 물리적 메모리 주소의 최소값
  • Limit register: 논리적 주소의 범위

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의