본문 바로가기
책/혼공 컴퓨터구조+운영체제

컴퓨터 구조 - 논리주소와 물리주소, MMU, 베이스 레지스터 및 한계 레지스터

by 코딩하는 돼징 2023. 12. 2.
반응형

메모리에 저장된 정보의 위치는 주소로 나타낼 수 있다.

 

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

없다. 메모리에 저장된 정보는 시시각각 변하기 때문이다. 메모리에는 새롭게 실행되는 프로그램이 시시때때로 적재되고 실행이 끝난 프로그램은 삭제된다. 게다가 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소가 달라진다.


그렇다면 CPU와 실행 중인 프로그램이 이해하는 주소는 무엇일까?

주소에는 메모리가 사용하는 물리주소가 있고 CPU와 실행 중인 프로그램이 사용하는 논리주소가 있다.

01 물리 주소(Phyiscal Address)

메모리 입장에서 실제로 데이터가 저장된 물리적인 주소를 나타낸다. 주로 하드웨어 에서 사용되며 각 데이터의 실제 물리 위치를 가리킨다. 각 주소는 하나의 데이터 위치를 가리키고 물리 주소끼르는 겹치지 않는다.


02 논리 주소(Logical Address)

CPU와 실행 중인 프로그램 입장에서 바라본 주소,이다. 각 프로그램은 0번지부터 시작하는 독립적인 논리 주소 공간을 항당 받는다. 서로 다른 프로그램이 동일한 논리 주소를 사용할 수 있으며 이는 각 프로그램이 독립적인 주소 공간을 가지게 하기 위함이다.

 

메모리가 사용하는 주소는 하드웨어상의 실제 주소인 물리 주소이고 CPU와 실행 중인 프로그램이 사용하는 주소는 각각의 프로그램에 부여된 논리주소이다. CPU간의 이해하는 주소가 논리 주소라고 해도 CPU가 메모리와 상호작용하려면 논리 주소와 물리주소간의 변환이 이루어져야한다.


메모리 관리 장치(MMU, Memory Management Unit) 하드웨어

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


변환 과정

01 베이스 레지스터의 역할

베이스 레지스터는 현재 실행 중인 프로그램의 시작 물리 주소를 저장한다. 이는 해당 프로그램이 메모리 어디에 위치하고 있는지 가리키는 것이다.

02 주소 변환

CPU가 발생시킨 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리주소로 변환한다.

논리 주소 + 베이지 레지스터 값 = 물리주소

 

예시


메모리 보호 기법

한계 레지스터

다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법으로 한계 레지스터를 사용한다.

주소 범위 제한

프로그램의 물리 주소 범위는 베이스 레지스터 값 이상에서부터 베이스 레지스터 값에 한계 레지스터 값을 더한 값 미만까지로 제한된다.

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

 

CPU

CPU는 메모리에 접근하기 전에 접근하고 자하는 논리 주소가 한계 레지스터 보다 작은지를 항상 검사한다. 만약 CPU가 한계레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)을 발생시켜 실행을 중지한다.

 

 

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

반응형

댓글