CS

[CS / OS] 메모리

따봉치치 2023. 10. 10. 14:39

1. Address Binding

프로세스의 주소

  • 논리적 주소 : 가상 주소, CPU가 생성하는 주소로 프로세스마다 독립적으로 가지는 주소 공간이기 때문에 프로세스의 내부에서 사용하고 각 프로세스마다 0부터 시작한다.
  • 물리적 주소 : 프로세스가 실행되기 위해 실제로 메모리에 올라가는 위치

💡 모든 프로그램은 실행하기 위해 디스크에서 메인 메모리로 올라와야 하고, 메모리로 올라오기 위해 Address Binding 작업이 이루어 져야 한다. 즉, 어떤 프로그램이 메모리의 어느 위치에, 어떤 물리적 주소에 load될지 결정하는 과정이다

 

  • Compile Time
    • 프로세스의 물리적 주소가 컴파일 시 정해짐 ⇒ 절대 주소(Absolute Address)
    • 프로세스 내부에서 사용하는 논리적 주소와 물리적 주소가 동일하다
    • 주소가 고정되어 있어 메모리 상 빈공간이 발생할 수 있어 비효율적임
  • Load Time
    • Loader가 프로세스를 메모리에 load 하는 시점에 물리적 주소 결정
  • Execution Time (Run Time)
    • Runtime 때 물리적 주소가 결정되며 실행 도중에 주소가 바뀔 수 있음. 따라서, 주소 매핑이 아주 빈번하게 일어남
    • 따라서, CPU가 주소를 참조할 때마다 address mapping table을 참조함

2. MMU (Memory Management Unit)

  • 런타임 주소 할당 시 MMU를 사용하여 논리적 주소를 물리적 주소로 바꿔줌
  • 프로세스가 CPU에서 수행되면서 생성해내는 모든 주소값에 대해 base register의 값을 더해주며 물리적 주소를 생성