Machineboy空

메모리 ② 메모리의 주소 공간 - 논리 주소, 물리 주소 본문

Computer/CS

메모리 ② 메모리의 주소 공간 - 논리 주소, 물리 주소

안녕도라 2024. 1. 8. 12:18

논리 주소 (Logical Address) : CPU와 실행중인 프로그램 입장에서 바라본 논리 주소

실제 주소는 아니지만 논리적으로 이런 주소야!


*논리 프로세서 : 하드웨어 스레드의 다른 말로, 실제 스레드가 몇 개인지 모르고 일을 하는 양으로 미루어 볼 때 몇개쯤이다 추측하는 것 처럼  CS학문에서 무언가 추상적 추측을 논리적(Logical)이라고 말하나 봄 

https://machineboy0.tistory.com/95 

 

CPU 성능 향상 ① 빠른 CPU를 위한 설계 기법 - 클럭(clock), 코어(core), 스레드(thread)

방법 1)클럭(clock) 속도 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. → 빠른 CPU를 위해 클럭신호를 빨리

machineboy0.tistory.com

 

물리 주소 (Physical Address): 실제 하드웨어의 주소.

논리 주소와 물리 주소로 주소 공간을 나눈 이유?

논리 주소를 물리 주소로 변환하는 방법?

 


CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 알까?

 

NO!

 

메모리에 저장된 값들은 시시각각 변하기 때문이다.

  • 새롭게 실행되는 프로그램은 새롭게 메모리에 적재된다.
  • 실행이 끝난 프로그램은 메모리에서 삭제된다.
  • 같은 프로그램을 실행하더라도 실행할 떄마다 적재되는 주소는 달라진다.

그래서 물리 주소와 논리 주소의 개념을 나누었다.

논리 주소 (Logical) 물리 주소 (Physical)
CPU와 실행 중인 프로그램 입장에서 바라본 주소 메모리 입장에서 바라본 주소
실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소
0번지 여러 개 0번지는 하나이며 겹치는 주소가 없다

 


물리주소와 논리 주소의 변환

 

MMU(Memory Managament Unit, 메모리 관리 장치)라는 하드웨어에 의해 변환

 

내부 과정

MMU는 논리 주소와 베이스 레지스터(프로그램의 기준 주소)값을 더하여 논리 주소를 물리 주소로 변환한다.

 

* 베이스 레지스터 : 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장하는 셈

* 논리 주소: 프로그램의 시작점으로부터 떨어진 거리인 셈

 

기준주소로부터 15000이 떨어진 곳을 실행해주세요
기준 주소로 부터 100(논리주소)만큼 떨어진 곳을 실행해주세요


메모리 보호, 명령어 검수해서 실행!

 

다른 프로그램의 영역을 침범하는 명령어를 실행하면 안된다.

999번지 까진데 논리 주소 범위를 벗어난 1100번지를 실행?

 

한계 레지스터 (limit register)

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음

*베이스 레지스터(base register): 실행 중인 프로그램의 가장 작은 물리 주소 저장

*한계 레지스터(storage limit register): 논리 주소의 최대 크기 저장

 

베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값

 

CPU는 메모리에 접근하기  전에 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사하고,

클 경우 인터럽트를 발생시킨다.