차곡차곡 성 쌓기
article thumbnail

컴퓨터에는 주소의 개념이 2가지가 있다. 물리 주소와 논리주소이다. 

물리주소는 하드웨어적인 실제 주소를 말하며, 논리주소는 CPU가 이해하는 주소이다. 무엇인지 알아본다.

 

물리주소와 논리 주소

CPU는 전체 메모리에서 몇 번지에 무엇이 저장되어있는지 알지 못한다. 그 이유는 다음과 같다.

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

새롭게 실행되는 프로그램은 새롭게 메모리에 적재되고, 실행이 끝나면 메모리에서 삭제되기 때문에 전체 메모리를 알고 있는 것을 매우 비효율적이다. CPU는 이러한 점을 극복하기 위해 주소를 물리 주소와 논리주소를 나누었고, 논리 주소를 사용한다.

 

▶︎ 물리 주소

  • 정보가 실제로 저장된 하드웨어상의 주소

 

▶︎ 논리 주소

  • CPU와 실행 중인 프로그램 입장에서 바라본 주소
  • 각 프로그램이 0번지부터 시작

 

 

논리 주소 -> 물리 주소 변환

MMU(Memory Management Unit)에 의해 이루어진다.

 

MMU

  • CPU가 메모리에 접근하는 것을 관리하는 하드웨어 부품
  • 논리 주소를 물리 주소로 변환한다.
  • 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 한다.

 

MMU는 어떻게 변환?

논리 주소와 베이스 레지스터 값을 더한다. (가장 기본적인 방식으로 현재는 페이지 번호와 offset을 더하는 방식 등을 사용)

 

1. 페이지 테이블 조회:

변환은 주로 페이지 테이블을 사용하여 이루어진다. 페이지 테이블은 논리 페이지와 물리 페이지 간의 매핑 정보를 담고 있는 데이터 구조이다. 이 엔트리에는 해당 논리 페이지가 매핑되어있는 물리 페이지의 주소가 저장된다.

 

2. 물리 주소 생성:

찾아낸 물리 페이지의 주소와 논리 페이지 내의 offset을 결합하여 최종적인 물리 주소를 생성한다.

 

 

메모리 보호란?

각 프로그램 영역을 침범하는 명령어의 실행을 막는 기법

베이스 레지스터와 limit 레지스터를 이용한다.

 

  • base 레지스터 : 메모리 상의 프로그램의 실제 시작 주소를 저장
  • limit 레지스터 : 프로그램의 마지막 논리 주소

CPU는 메모리에 접근하기 전 아래 그림처럼 접근하고자 하는 논리 주소가 limit 레지스터보다 작은지를 항상 검사한다.

 

728x90
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!