본문 바로가기

Project/OS

10. main memory #1 : 주소바인딩에 대해서


학습목표


1. 주소 바인딩 개념을 설명할 수 있다.

2. 연속적인 메모리 할당의 장단점을 설명할 수 있다.

3. 페이징 기법을 설명할 수 있다.

4. 세그멘테이션 기법을 설명할 수 있다.


1. Address binding


① 주소 바인딩이란?


 컴파일러가 프로그램의 명령과 변수를 실제 메모리주소와 연결시키는 과정이다. 즉, 우리는 기호를 이용해 함수와 변수를 선언하고 코드를 작성하는데, 실제로 이러한 기호들이 물리적인 주소로 연결하는 과정이 필요한 것이다.





② 주소 바인딩의 종류는?


Address Binding을 하는 시점에 따라 3가지로 나눠진다.


  - Compile time binding

     다음과 같이 컴파일을 할 때의 주소가 실제 물리주소로 바인딩된다.

※ Starting location가 변하면 컴파일 자체를 다시 해야함. (Recompile)




  - Load time binding

컴파일 시에는 상대주소만 정해지고, 메모리에 load할 때 starting locating에 따라 주소가 상대적으로 정해진다.



※ starting location이 달라졌을 때, compile time binding 방식과 달리 Load time binding 방식은 recompile은 하지 않아도 되고 reload만 하면 된다.



  -Execution time binding

    주소 바인딩이 run time 때까지 딜레이된다. 다음 그림처럼 컴파일과정까지는 logical address(virtual address)로 컴파일되고, 실제로 참조가 실행될 때 CPU에서 MMU라는 address mapping을 해주는 장치에 의해 physical address로 계산된다.




※MMU에 대해서?

 MMU란 Memory Management Unit의 약자다. 즉 logical address를 physical address로 맵핑해주는 하드웨어이다. CPU에서 생성된 모든 logical address에 대해서 주소가 메모리에 넘겨질 때마다, relocating register라는 기준 레지스터에 들어있는 기준주소값을 더해준다. 그러니까 우리가 디버깅하면서 보는 주소들은 physical address가 아니다. 그것들은 virtual address이며 MMU에 의해 다시 physical address로 바뀌게 된다.






 



'Project > OS' 카테고리의 다른 글

10. Main memory #2 : 운영체제 메모리 관리 전략  (0) 2017.12.24