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의 값을 더해주며 물리적 주소를 생성