본문 바로가기

Computer Science/컴퓨터 구조

컴퓨터 구조 - 메모리의 주소 공간

메모리의 주소에는 메모리 하드웨어가 사용하는 물리 주소와 CPU와 프로세스가 사용하는 논리 주소가 있습니다.

 

물리 주소와 논리 주소

 

CPU와 프로세스는 현재 메모리 몇 번지에 무엇이 저장되어 있는지 알 수 없습니다. 메모리에는 새롭게 실행되는 프로그램이 적재되고, 실행이 끝난 프로그램은 삭제됩니다. 또한 같은 프로그램일지라도 메모리에 적재될 때마다 새로운 주소에 할당됩니다. 때문에 CPU와 프로세스가 이해하는 주소와 메모리가 이해하는 주소는 다릅니다.

  • 물리 주소 : 정보가 실제로 저장된 하드웨어상의 주소를 의미합니다.
  • 논리 주소 : 프로세스 각각에게 부여된 0번지부터 시작되는 주소를 의미합니다.

예를 들어 현재 메모리에 메모장, 게임, 인터넷 브라우저 프로그램이 적재되어 있습니다. 이들은 서로 메모리 몇 번지에 저장되어 있는지 굳이 알 필요가 없습니다. 프로그램은 메모리에 적재될 때마다 새로운 주소를 할당받기 때문입니다. 그래서 메모장, 게임, 인터넷 브라우저 프로그램은 물리 주소가 아닌 자신만을 위한, 0번지부터 시작하는 논리 주소를 가지고 있습니다. 즉, '10'번지라는 주소는 세 프로그램에 모두 존재할 수 있다는 것(같은 논리주소를 갖을 수 있다)입니다. CPU는 이 논리주소를 받아들이고, 해석하고, 연산합니다.

 

중요한 점은 여기서부터입니다. 메모리의 0번지는 하나밖에 없습니다. 근데 메모리에 세 프로그램이 적재되어 있다고 할 때, CPU가 게임의 0번지 데이터 삭제와 인터넷 브라우저 0번지 데이터 저장 연산을 수행하면 어떻게 될까요?

이처럼 물리 주소와 논리 주소는 주소 체계가 다르기 때문에 변환이 필요합니다.

 

MMU(Memory Management Unit)

 

물리 주소와 논리 주소 간의 변환을 수행하는, CPU와 주소 버스 사이에 위치한 메모리 관리 장치입니다. MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터의 값을 더하여 논리 주소를 물리주소로 변환합니다. 여기서의 베이스 레지스터는 MMU내에 위치해있습니다.

 

베이스 레지스터는 프로세스의 첫 물리 주소를 저장하고, 논리 주소는 그 값으로부터 떨어진 거리인 셈입니다.

 

 

메모리 보호 기법

  • 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호하는 방법입니다.
  • 이는 한계 레지스터(limit register)가 담당합니다. 한계 레지스터는 논리 주소의 최대 크기를 저장합니다.
  • 즉, 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 값 + 한계 레지스터 값
  • 논리 주소 < 한계 레지스터 값
  • 만약 다른 프로그램의 주소 공간을 침범하면, 인터럽트(트랩)이 발생합니다.

공부 내용에 쓰인 이미지는 유튜브 채널 '개발자 강민철' 에서 스크랩했습니다.

https://www.youtube.com/@kangminchul