CPU와 실행 프로그램은 현재 메모리가 몇 번지에 무엇이 저장되어 있는지 알지 못한다. 그렇다면 어떻게 CPU는 시시 때때로 적재된 프로그램의 주소를 찾아가는 걸까? 나아가서 현재 적재된 프로그램은 다른 메모리에 적재된 프로그램과 상호작용할 수 있는 걸까?
그럼 CPU와 실행 프로그램이 참조하는 주소들에 대해 알아보자.
논리주소와 물리주소
주소의 체계에는 논리주소와 물리주소 두 가지가 있다.
- 물리주소: 실제 메모리의 하드웨어 상의 주소(고유한 주소)
- 논리주소: CPU와 실행 중인 프로그램이 사용하는 주소 (0번지부터 시작하며 프로그램마다 가지고 있다. - 고유하지 않다.)
모든 프로그램은 0번지부터 시작하는 각자의 논리 주소를 사용한다. CPU는 0번지부터 시작하는 각 프로그램의 논리 주소를 인출/해석/실행한다.
위 이미지를 보면 각각의 프로그램이 고유의 물리주소를 가지고 있다. 하지만 논리주소는 0부터 시작하는 각자의 논리 주소를 사용하게 된다.
주소 변환
CPU와 프로그램이 사용하는 주소 체계는 논리주소이고, 메모리가 사용하는 주소 체계는 물리 주소이다. 이 둘이 다르다면 어떻게 문제없이 부품 간 통신이 가능할까?
CPU와 메모리 사이의 주소 변환이 이루어져야 한다. 논리 주소와 물리 주소 간의 변환을 담당하는 장치를 MMU(Memory Management Unit)라고 한다.
MMU의 기본 동작
MMU는 베이스 레지스터를 활용한 주소 변환이 이루어진다.
베이스 레지스터는 기준 주소를 의미하며, 기준 주소는 물리 메모리상의 프로그램이 첫 주소이다. 그런 다음 논리 주소의 값으로 기준 주소로부터 떨어진 거리를 보낸다.(변위의 역할)
그러면 기준주소 + 변위값을 이용해 실 물리주소의 번지를 알아낼 수 있게 된다.
예를 들면 프로그램 A의 물리 주소 첫 시작이 15000이면, MMU의 베이스 레지스터의 기준주소는 15000이다. 여기서 논리 주소를 100번지 값을 보내게 된다면 실 물리주소 15100번지의 처리를 요청하게 되는 것이다.
출처
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online.
'Knowledge > 컴퓨터구조&운영체제' 카테고리의 다른 글
[컴퓨터구조] 보조기억장치와 RAID (0) | 2024.12.02 |
---|---|
[컴퓨터구조] 캐시메모리 (0) | 2024.11.30 |
[컴퓨터구조] 빅 엔디안과 리틀 엔디안 (메모리에 바이트를 밀어 넣는 순서) (0) | 2024.11.30 |
[컴퓨터구조] 메모리 - RAM (1) | 2024.11.27 |
[컴퓨터구조] 파이프라이닝을 통한 명령어 병렬 처리 (0) | 2024.11.27 |