ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 주소 바인딩
    OS 2021. 11. 24. 09:58

     

     

    [OS] 주소 바인딩


    안녕하세요? 장장스입니다.

    오늘은 주소 바인딩에 대해 정리해보겠습니다.

     

     

    주소 바인딩


    프로그램이 메모리에 적재되면 해당 프로세스의 독자적인 주소 공간이 생성됩니다. 이 주소를 논리적 주소(logical address) 혹은 가상 주소(virtual address)라고 합니다. 논리적 주소는 프로세스마다 독립적으로 할당되며 0부터 시작합니다. 물리적 주소(physical address)는 실제 물리적 메모리에 올라가는 위치를 말합니다.

     

    CPU가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리 참조를 하게 되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되는지 확인해야 합니다. 이렇게 프로세스의 논리적 주소를 물리적 메모리 주소로 연결시켜주는 작업을 '주소 바인딩'이라고 합니다.

     

    주소 바인딩의 방식은 물리적 메모리 주소가 결정되는 시기에 따라 3가지로 나뉜다.

     

     

    주소 바인딩 방법 3가지


    컴파일 타임 바인딩 (compile time binding)

    컴파일을 하는 시점에 해당 프로그램이 물리적 메모리의 몇 번지에 위치할 것인지를 결정한다. 절대코드를 생성하는 바인딩이라고도 부른다. 물리적인 메모리 위치를 변경하려면 컴파일을 다시해야한다.


     

    로드 타임 바인딩 (load time binding)

    프로그램의 실행이 시작될 때에 물리적 메모리 주소를 결정한다. 로드 타임 바인딩 방식에서는 로더(loader)의 책임하에 물리적 메모리 주소가 부여되며 프로그램이 종료될 때까지 물리적 메모리상의 위치가 고정된다.


     

    실행시간 바인딩 (run time binding)

    프로그램이 실행을 시작한 후에도 그 프로그램이 위치한 물리적 메모리상의 주소가 변경될 수 있는 바인딩 방식이다. CPU가 메모리 주소를 참조하기 위해 주소 매핑 테이블을 이용해 바인딩을 점검한다.

     

    실행시간 바인딩을 사용하기 위해 기준 레지스터(base register), 한계 레지스터(limit register), MMU(Memory Management Unit)와 같은 하드웨어를 이용한다.

     

     

     

    MMU의 물리적 주소 계산

    사진처럼 MMU는 기준 레지스터에 논리적 주소를 더해 실제 물리적 주소값을 얻어내는 하드웨어다.

    예를 들어 기준 레지스터의 값이 17000일 때 논리적 주소가 186이라면 물리적 주소는 17186이 된다. 이때 물리적 메모리의 시작 위치인 기준 레지스터를 재배치 레지스터(relocation register) 라고도 부른다.

     

    한계 레지스터는 현재 수행중인 프로세스의 논리적 주소의 최댓값으로 프로세스의 크기를 담고 있다. 또 한계 레지스터는 프로세스가 자신의 주소 공간을 넘어서는 메모리를 참조하려고 하는지 체크하여 메모리 보안을 이루는 용도로 사용된다.

    프로세스 주소를 넘어서는 메모리를 참조하려고 하면 어떻게 될까❓
    다른 프로세스를 메모리를 침범하게 된다. 뿐만 아니라 운영체제가 존재하는 메모리 영역을 변경하여 시스템에 심각한 영향을 끼칠 수 있다.

     

     

     

     

    References


    • KOCW 운영체제 강의 - 반효경 교수

     


    잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)

     

     

    댓글