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의 값을 더해주며 물리적 주소를 생성
'CS' 카테고리의 다른 글
[CS / SW] 클린코딩 & 리팩토링 & 시큐어코딩 (0) | 2023.10.19 |
---|---|
[CS / OS] 파일시스템 (0) | 2023.10.10 |
[CS / OS] 페이지 교체 알고리즘 (0) | 2023.10.10 |
[CS / OS] Paging & Segmentation (1) | 2023.10.10 |
[CS / OS] 세마포어와 뮤텍스 (0) | 2023.10.10 |