솜은 코튼

[OS] 메모리 주소 본문

OS

[OS] 메모리 주소

솜.코 2023. 5. 21. 11:07

 

 

 

 

컴퓨터는 메모리에 어떻게 접근할까?

.

.

.

 

집에도 주소가 있듯 메모리에도 주소가 있다!

 

메모리 주소는 '절대 주소'와 '상대 주소로 나뉜다.

 

 

컴퓨터 설정이나 프로그램을 설치할 때

32bit나 64bit를 선택할 수 있는 것을 많이 보았을 것이다.

 

이것은 한 번에 다룰 수 있는 데이터의 최대 크기를 의미한다.

 

 

32bit CPU의 경우 메모리 주소를 지정하는 레지스터인

메모리 주소 레지스터(MAR)의 크기가 32bit이므로

표현할 수 있는 메모리 주소의 범위가 0~2³²-1, 총 개수가 2³²이다.

 

 

64bit CPU는 32bit CPU의 2배이므로 처리 속도가 당연 빠를 것이다!

요즘은 거의 64bit CPU를 사용한다.

 

 

컴퓨터에는 각 메모리 주소 공간이 있는데

물리 주소 공간은 하드웨어 입장에서 바라본 주소 공간,

논리 주소 공간은 사용자 입장에서 바라본 주소 공간이다.

 

 

우선 메모리 영역을 먼저 봐보자!

 

 

 

 

사용자가 운영체제를 침범하지 못하도록 분리하여 관리하여야 한다.

이를 360번지 주소를 가진 경계 레지스터가 담당한다.

 

 

그럼 사용자 프로세스는 400번지부터 적재될 것이다.

 

그런데 운영체제 크기에 따라 매번 적재되는 주소가 달라지면?

너무 번거롭다!!

 

 

이를 개선하기 위해 메모리의 최상위부터 사용하는 방법이 있다.

 

 

그럼 절대 주소와 상대 주소를 알아보자.

 

만약 사용자 프로세스가 메모리의 사용자 영역 400번지에 올라왔다면

컴파일 시 변수의 주소를 0번지부터 배정한다.

 

이처럼 상대 주소

사용자 영역이 시작되는 번지를 0번지로 변경하여 사용하는 주소 지정 방식이다.

 

 

 

 

상대 주소 방식을 사용하면 360번지는 0번지, 400번지는 40번지로 바뀐다.

 

이때 360번지와 400번지절대 주소(물리 주소),

0번지와 40번지상대주소(논리 주소)라고 한다.

 

그렇다면 메모리에 접근하기 위해 상대 주소를 절대 주소로 바꿔주어야 할 것이다.

 

 

 

 

먼저, 사용자 프로세스가 상대 주소 40번지를 요청하면

CPU는 메모리 관리자에게 40번지 내용을 가져오라고 명령한다.

메모리 관리자는 재배치 레지스터를 사용하여 상대 주소 40번지를 절대 주소 400번지로 변환

메모리 400번지 데이터를 가져오게 된다.

 

 

재배치 레지스터는 주소 변환의 기본이 되는 주소값을 가진다.

즉, 메모리에서 사용자 영역의 시작 주소값 360번지가 저장된다.

 

 

이 과정이 있기에 굳이 사용자 프로세스가 운영체제 영역을 확인할 필요가 없는 것이다!!

운영체제 영역이 변경되도 문제 없고...

운영체제 침범 문제도 걱정 없고... 여러모로 좋다 :)

 

 

 

 

 

 

 

 

* 해당 글은 '쉽게 배우는 운영체제' 책을 참고하여 작성하였습니다. 출처: 쉽게 배우는 운영체제 (조성호 지음)