사실 주소에는 두 종류가 존재한다 바로 물리 주소와 논리 주소 이렇게.
CPU 와 실행중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되고 있는지 전부 다 알고있을까??? 그렇지 않다. CPU 와 메모리에 저장되어 실행중인 프로그램은 메모리 몇 번지에 뭐가 있는지 다 알지 못한다고 한다.
메모리에 저장된 정보는 시시각각 계속해서 변하고 꼭 같은 프로그램이 다시 실행될때 같은 주소에 할당되리라는 보장도 없다. 그렇기 때문에 프로그램이 몇 번지에 뭐가 있는지 다 알고있기란 어렵다.
그롷다면 CPU 와 실행중인 프로그램이 이해하는 주소는 뭘까???
많은 프로그램들은 서로 위와 같이 시시각각 변하는 메모리의 특성 때문에 나머지 프로그램들의 메모리 눈치를 봐가면서
‘어.. 나는 메모장인데.. 내 위에 어디보자.. 게임이 있네?? 게임은.. 1000번지에 있구나! 그럼 1000번지 부터… 어디까지 쓰고있냐 쟤는.. 어 1500 번지까지 쓰고 있구나..!.. 음.. 내 밑에는......’
막 이러지 않는다는 것 이다.

대신 , 자신만을 위한 주소인 논리 주소를 가지고 있다.
위와 같이 각각 자신만의 논리 주소를 갖고 있으며 얼마든이 해당 주소는 겹칠 수 있다, 왜냐 ? 물리주소가 겹친다면 큰일이겠지만 논리 주소는 각자만의 고유한 주소이기 때문이다.
그렇다면 논리 주소라고는 해도 해당 주소값을 통해서 고대~로 들고가서 물리주소로 접근을 할 수 있을까??? That’s 논노 그렇지 않다.
결국 논리주소도 메모리와 상호작용 하려면 반드시 논리주소와 물리 주소 간의 변환이 이루어져야 한다.
이 MMU 라는 장치가 바로 논리 주소와 물리 주소간의 변환을 담당한다.
MMU는 베이스 레지스터에 프로그램의 가장 작은 물리 주소를 저장하고 , 해당 물리 주소와 CPU 가 전달해준 논리 주소를 합쳐 변환을 하여 접근을 할 수 있게 한다.
