주소 바인딩

dongbin_Shin·2021년 12월 9일
0

OS

목록 보기
2/2

주소 바인딩

프로그램이 실행을 위해 메모리에 적재되면 그 프로세스를 위한 독자적인 주소 공간이 생기는데 이를 논리적 주소 또는 가상 주소라고 부른다.논리적 주소는 프로세스마다 독립적으로 0번지부터 할당된다.

물리적 주소는 실제로 데이터가 메모리에 올라가는 위치를 말한다. 낮은 주소에는 운영체제, 높은 주소에는 사용자 프로세스가 적재된다.

우리는 메모리에 적재된 프로세스를 실행시키기 위해 논리적 주소를 물리적 주소로 변환하는 작업이 필요한데 이를 주소 바인딩이라고 한다.

주소 바인딩 분류

물리적 주소를 언제 결정하는 지에 따라 세가지로 분류가 가능하다.

컴파일 타임 바인딩

코드가 컴파일 될 때 물리적 주소가 결정되는 방식

프로그램 내부에서 사용하는 주소와 물리적 주소가 동일하다. 물리적 주소를 변경하려면 컴파일을 다시 해야하며 다른 프로세스가 이미 적재되어 있을 수 있으므로 하나의 프로세스만 적재될 때 사용하는데 잘 사용하지 않는다.

로드 타임 바인딩

프로그램이 실행 시작될 때 물리적 주소가 결정되는 방식

프로그램을 메모리에 적재시키는 프로그램인 로더(loader)에 의해 주소가 부여되며 프로그램 종료까지 위치가 고정된다.

프로그램 내부 메모리 주소와 물리적 주소가 다르게 된다. 때문에 멀티 프로세스 프로그래밍이 가능하다.

하지만 메모리 로딩을 할 때 변환하므로 로딩 시간이 굉장히 오래 걸린다. 때문에 실제 사용되지는 않는다.

실행 타임 바인딩

프로그램을 실행한 이후에도 물리적 메모리상 주소가 변경될 수 있는 바인딩 방식

cpu가 주소 참조를 할 때 해당하는 데이터가 물리적으로 위치해야 하는 주소를 주소 매핑 테이블을 이용해 바인딩 점검을 진행한다. 바인딩을 할 때 MMU라 부르는 하드웨어가 필요하다.

MMU: 논리적 주소를 물리적 주소로 매핑하는 하드웨어 장치

MMU 기법

MMU는 기준 레지스터의 값을 갖고 있어서 CPU가 논리적 주소를 보내면 갖고 있던 값을 더해 물리적 주소를 얻는다.

MMU 기법은 프로그램의 주소 공간이 연속적으로 적재되는 것을 가정한다. 때문에 시작 주소만 갖고 있으면 쉽게 주소 변환이 가능하다.

만약 프로세스가 컨텍스트 스위칭이 일어나면 이 기준 주소가 달라져 같은 논리적 주소에 대해 다른 물리적 주소를 매핑할 수 있다.

하지만 이렇게 다중 프로세스를 이용한 프로그래밍을 하면 다른 프로세스의 주소를 침범할 수 있다. 때문에 MMU는 기준 레지스터 이외에 한계 레지스터를 가져 프로세스가 가질 수 있는 최대 메모리 주소 또한 저장한다. 이를 통해 다른 메모리를 침범하는 문제를 방지할 수 있다.

Reference

운영체제의 주소 바인딩 알아보기

profile
멋있는 백엔드 개발자

0개의 댓글