ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메모리 주소란 무엇인가
    CS지식/운영체제 2021. 6. 12. 22:57

    오늘 알아 볼 메모리 주소에서 말하는 메모리는 메인메모리, RAM에서의 주소에 대해 알아볼 것이다.

     

    메모리 주소를 알아보기 전, 메모리에 대해 간단히 알아보자.

    메모리는 CPU가 작업을 수행하는 데 있어 필요할 때 직접 액세스 할 수 있도록 운영 체제, 응용 프로그램 및 기타 정보등을 저장하는 하드웨어이다. CPU의 작업공간으로서 메모리의 용량도 중요하지만 메모리를 관리하는 방법이 CPU의 성능에 큰 영향을 미친다.

    메모리는 크게 2가지의 영역으로 구분되는데 운영체제 영역사용자 영역이 있다.

    메모리 구조

    운영체제는 중요한 역할을 하기 때문에 사용자가 운영체제 영역을 침범하지 못하도록 분리하여 메모리를 사용한다.

    사용자 프로세스는 메모리에 들어올 때 운영체제 영역으로 지정된 영역 이외의 사용자 영역에 저장된다.

    위의 그림을 보면 운영체제 영역이 100번지까지 있으므로 사용자 프로세스는 101번지부터 들어올 수 있다.

     

     

     

    이러한 메모리에 접근할 때 사용하는 것이 메모리 주소이다.

    메모리는 1Byte크기로 나뉘어 각 영역은 메모리 주소로 구분을 하는데 보통 첫번째 영역을 0번지로 지정하여 시작한다.

    CPU는 메모리에 저장된 데이터를 가져오거나 저장할 때 메모리 주소 레지스터(MAR)을 사용한다.

     

    메모리 주소는 절대 주소(absolute address)상대 주소(relative address)로 나뉘는데 각자 무엇인지 알아보자.

    절대 주소(absolute address)실제 메모리의 주소 공간을 가리키는 것으로 메모리 관리자 입장에서 바라본 주소이다.

    즉, MAR이 사용하는 주소로 컴퓨터에 꽃힌 메모리의 실제 주소를 말한다.

    상대 주소(relative address)는 메모리 공간에서 사용자 영역이 시작되는 주소번지를 0번지로 변경하여 사용하는 주소 지정 방식이다.

    즉, 사용자 프로세스 입장에서 메모리 공간을 바라본 주소이며 절대 주소와 관계없이 항상 0번지부터 시작한다.

     

    아래의 그림처럼 어떠한 데이터가 메모리의 120번지에 있다고 해보자.

    절대 주소로는 실제 메모리 공간에 있는 주소를 의미하므로 120번지 그대로 쓰인다.

    상대 주소로는 사용자 영역이 시간되는 주소번지, 즉 100번지가 0번지로 변경되므로 20번지로 쓰인다.

     

     

    그러면 왜 같은 메모리 공간을 가리키는 주소인데 굳이 2개로 나누어 사용할까?

    그 이유는 사용자 입장에서 절대 주소를 사용하게 되면 불편하고 위험하기 때문이다.

    절대 주소를 사용하게 되면 사용자 프로세스 입장에서는 운영체제 영역은 사용할 수 없는 공간이지만 매번 운영체제 영역을 확인해야 하는 불편함이 존재하고 사실 상 절대 주소를 사용자 프로세스가 알 필요는 없다.

    하지만 상대 주소를 사용하면 상대 주소가 운영체제 영역의 위치를 알 필요가 없고 주소가 항상 0번지부터 시작하기 때문에 편리해진다.

    또한, 절대 주소를 사용하게 되면 사용자가 운영체제 영역의 주소를 실수나 고의적인 조작으로 접근할 수 있는 위험의 소지가 있게 된다.

     

     

     

    이렇게 사용자 프로세스 입장에서 사용하는 상대 주소와 실제로 메모리 공간을 가리키고 메모리 관리자가 쓰는 절대 주소로 나뉜다면 메모리 접근 시에 상대 주소를 절대 주소로 변환해주어야한다.

    상대 주소를 절대 주소로 변환하는 과정은 아래와 같다.

    1. 사용자 프로세스가 상대 주소 20번지에 있는 데이터를 요청한다.

    2. CPU는 메모리 관리자에게 20번지에 있는 데이터를 가져오도록 요청한다.

    3. 메모리 관리자는 Relocation Register를 사용하여 상대 주소 20번지를 절대 주소 120번지로 변환하고 메모리 120번지에 있는 데이터를 가져온다.

    여기서 Relocation Register는 메모리에서 사용자 영역의 시작 주소값을 저장하고 있는 하드웨어이다.

     

     

    댓글

Designed by Tistory.