메모리 관리 - 1

초보개발·2022년 2월 15일
0

OS

목록 보기
27/38

메모리 관리


메모리는 집 주소처럼 주소(address)로 관리된다. 32비트, 64비트가 있는데 32비트의 주소 체계를 사용하는 컴퓨터는 2322^{32}바이트만큼의 메모리 공간에 서로 다른 주소를 할당할 수 있다.
4KB(=212=2^{12}byte)씩 묶어 페이지(page)라는 하나의 구역을 만들어 사용한다. 페이지 하나의 크기가 2122^{12}byte이므로 페이지 내에서 바이트별 위치 구분을 위해 12비트가 필요하다. 따라서 총 32비트 중 하위 12비트는 페이지 내에서의 주소를 나타내게 되는 것이다.

메모리 관리 목표

경쟁하는 프로세스 간에 부족한 메모리 자원을 할당하여 최소한의 오버헤드로 성능을 극대화시킨다. 그리고 프로세스 사이의 isolation을 제공한다.

주소 바인딩(address binding)

프로그램이 실행을 위해 메모리에 적재되면 그 프로세스를 위한 독자적인 주소 공간이 생성되는데 이 주소를 논리적 주소(logical address) 또는 가상 주소(virtual address)라고 한다. 논리적 주소는 각 프로세스마다 독립적으로 할당되며 0번지부터 시작된다.
반면, 물리적 주소(physical address)는 물리적 메모리에 실제로 올라가는 위치를 말한다.

주소 바인딩은 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업을 말한다.

주소 바인딩의 방식

  • Compile time: 물리적 메모리 주소가 프로그램 컴파일할 때 결정되는 방식, absolute code를 생성
  • Load time: 실행이 시작될 때에 물리적 메모리 주소가 결정되는 방식, loader에 의해 물리적 메모리 주소가 부여되고 종료될 때까지 메모리 위치 고정, 재배치 가능 코드(relocateable code) 생성
    • loader: 프로그램을 메모리에 적재시키는 프로그램
  • Execution time: 프로그램이 실행을 시작한 후에도 그 프로그램이 위치한 물리적 메모리상의 주소가 변경될 수 있는 방식, CPU가 주소를 참조할 때마다 해당 데이터가 물리적 메모리의 어느 위치에 존재하는지 address mapping table을 이용
    • base register, limit register, MMU(Memory Management Unit)

MMU(Memory Management Unit)


MMU는 논리적 주소를 물리적 주소로 매핑시키는 CPU에 있는 하드웨어 장치이다.

CPU가 특정 프로세스의 논리적 주소를 참조하려고 할 때 MMU 기법은 그 주소값에 기준 레지스터의 값을 더해 물리적 주소값을 얻어낸다. 프로그램의 주소 공간이 물리적 메모리의 한 장소에 연속적으로 적재되는 것으로 가정하기 때문이다. 또한 사용자 프로그램이나 CPU는 논리적 주소만 다루기 때문에 실제 물리적 주소는 알 필요가 없다.

  • 물리적 주소 = 논리적 주소 + relocation register(= base register)
  • 메모리 보안은 limit register로 해당 프로세스의 주소 공간을 넘어서는 영역을 참조하려할 때 확인한다.

0개의 댓글