HS_development_log

주소 바인딩(Address Binding)과 주소 변환(Address Translation) 본문

CS/운영체제

주소 바인딩(Address Binding)과 주소 변환(Address Translation)

DevHyeonseong 2020. 9. 28. 05:54
반응형

주소 바인딩(Address Binding) 과 주소 변환(Address Translation)

배경지식

  • 기억장치(DRAM) : 주소를 가지는 워드 (또는 바이트)들로 구성
  • 프로그램이 실행되기 위해서는 기억장치에 적재되어야 한다
    • 적재된 프로그램 : 프로세스(Process)
  • 프로세스의 일반적인 실행과정
    • 프로그램 계수기에서 가리키고 있는 주소에서 명령어를 CPU로 가져옴(fetch)
    • 명령어를 해독(decode)
    • 기억장치에서 피연산자를 CPU로 가져와서 피연산자에 대해 명령어를 실행(execute)
    • 실행한 결과를 기억장치에 다시 저장(store)

주소 바인딩(Address Binding)

  • 프로그램의 명령어와 데이터를 기억장치에 적재할 때, 그것들의 기억장치 주소를 결정하는 것

    • 프로그램에서 사용하는 심볼(전역변수, 함수)은 기억장치의 어떤 주소가 있어야, 실행될 때 그 주소를 사용하여 접근(읽기/쓰기) 할 수 있다
  • ex)

    • 컴파일러는 심볼의 주소를 재배치 가능 주소(relocatable address)로 바인딩한다.
    • 실행파일을 실행하면, 운영체제는 재배치 가능 주소를 절대 주소(absolute address)로 바인딩한다

compile and load time

1


주소 바인딩의 종류

컴파일 시간 (compile time) 바인딩

  • 컴파일 시간에 절대 코드(absolute code)를 생성한다
  • 프로그램을 기억장치 내에 적재할 위치를 컴파일 시간에 결정함
  • 적재 위치를 바꾸려면 다시 컴파일 해야 한다

적재 시간(load time) 바인딩

  • 컴파일 시간에 재배치 코드(relocatable code)를 생성한다
  • 적재 시간에 적재할 위치를 결정한다

실행 시간(execution time) 바인딩

  • 프로세스가 실행 중에 기억장치의 한 세그먼트로부터 다른 세그먼트로 이동될 수 있다
  • 바인딩은 실행시간에 결정됨

적재 와 연결

동적 적재(dynamic loading)

  • 함수가 호출될 때까지 디스크에 재배치 가능 적재 형태로 존재하다가, 호출되면 기억장치로 적재됨
  • 호출되지 않는 함수는 적재되지 않기 때문에 기억장치 공간의 사용률을 높일 수 있다

정적 연결(static linking) 과 동적 연결(dynamic linking)

  • 정적 연결 : 라이브러리와 프로그램이 컴파일될 때, 정적으로 연결되어 실행 파일 안에 존재한다
  • 동적 연결 : 라이브러리가 실행파일에 있지 않고 연결 정보만 존재. 실행 시간(runtime)에 라이브러리 함수가 호출될 때 동적으로 연결되며 기억장치에 적재된다

물리 주소와 논리주소

  • 물리 주소(Physical address)

    • 기억장치가 나타내는 주소, 실제주소 라고도 한다
  • 논리 주소(Logical address)

    • 프로세스를 실행하면서 CPU가 생성하는 주소, 가상 주소(vitual address)라고도 한다
  • 논리 주소 공간 : 프로세스가 실행하면서 생성되는 모든 논리 주소 집합

  • 물리 주소 공간 : 이 논리 주소와 대응하는 모든 물리 주소 집합


주소 변환(Address Translation)

  • 주소 변환 : CPU에서 생성되는 논리 주소를 물리 주소로 변환하는 것
  • MMU (Memory Management Unit)
    • 주소 변환을 해주는 하드웨어 장치
    • 프로세스가 생성하는 논리주소에 재위치 레지스터(relocation register)의 값을 더해서 물리주소를 구한다

2

< 주소 변환 요약>

  • 운영체제는 어떤 프로세스에게 CPU를 할당하여 실행시킬 때, 그 프로세스의 시작 위치를 MMU의 재위치 레지스터에 셋팅한다
  • 이 후, 프로세스가 CPU에 의해 실행될 때 생성되는 논리 주소는 MMU에 의해 물리 주소로 변환된다

참고

반응형

'CS > 운영체제' 카테고리의 다른 글

교착상태  (0) 2020.09.28
동기화  (0) 2020.09.28
CPU 스케줄링  (0) 2020.09.28
멀티 프로세스 vs 멀티 쓰레드  (0) 2020.09.28
쓰레드  (0) 2020.09.28