-
메모리 주소 공간
- 논리 주소 VS 물리 주소
- CPU와 실행중인 프로그램은 현제 메모리 몇번지에 저장되어있는지 다 알까?? 🤔
메모리에 저장된 값은 시시각각 변화한다.
- 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
- 실행이 끝난 프로그램은 메모리에서 삭제
- 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라 짐
물리주소, 논리주소

물리주소
- 메모리 입장에서 바라본 주소
- 말 그대로 정보가 실제로 저장되어 있는 하드웨어상 주소
논리주소
- CPU와 실행중인 프로그램 입장에서 바라본 주소
- 실행중인 프로그램 각각에게 부여된 0번지 부터 시작하는 주소

- 위 그림에서 하나 이상한점은 주소 번지가 중복이 되는데 메모리에는 0번지가 하나밖에 없다 😮 그렇다면 주소변환은 어떻게 되는걸까?
MMU
- MMU(메모리 관리 장치)라는 하드웨어에 의해 변환
- MMU는 논리주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환


- 위 사진을 보면 간단하게 실제로 물리 주소가 되는 15100이 있다.
- 우선 데이터는 15000번지서 부터 시작이 되어 베이스 레지스터는 15000이 된다. 이 때 논리주소는 100만큼 떨어진 15100이니 논리주소는 100이 된다.
베이스 레지스터 : 프로그램의 가장 작은 물리주소(프로그램의 첫 물리주소)를 저장
논리주소 : 프로그램의 시작점으로부터 떨어진 거리

- 위 그림에서 이상한 점이 있는데... 바로 논리주소의 범위를 벗어나 버린 것인데, 메모리 주소는 999번지 까지 있는데, 베이스 레지스터는 1000번지이다.이를 1500번지를 더해 2500번지에 있는 데이터를 삭제한다면???
-> 이로 인해 메모리를 보호 해야하는데
메모리 보호(한계 레지스터)
- 프로그램 영역을 침범할 수 있는 명령어의 실행을 막음
- 베이스 레지스터가 실행중인 프로그램의 가장 작은 물리주소를 저장한다면, 논리주소의 최대 크기를 저장한다.

- 그래서 CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안된다
'CS지식' 카테고리의 다른 글
CS 지식 (0) 2025.09.07 CS지식 (캐시 메모리) (0) 2025.09.07 CS 지식 (0) 2025.09.07 CS 지식 9일차 (0) 2025.09.07 CS지식 (명령어 병렬처리 기법) (0) 2025.09.03