Notice
Recent Posts
Recent Comments
Link
HS_development_log
주소 바인딩(Address Binding)과 주소 변환(Address Translation) 본문
반응형
주소 바인딩(Address Binding) 과 주소 변환(Address Translation)
배경지식
- 기억장치(DRAM) : 주소를 가지는 워드 (또는 바이트)들로 구성
- 프로그램이 실행되기 위해서는 기억장치에 적재되어야 한다
- 적재된 프로그램 : 프로세스(Process)
- 프로세스의 일반적인 실행과정
- 프로그램 계수기에서 가리키고 있는 주소에서 명령어를 CPU로 가져옴(fetch)
- 명령어를 해독(decode)
- 기억장치에서 피연산자를 CPU로 가져와서 피연산자에 대해 명령어를 실행(execute)
- 실행한 결과를 기억장치에 다시 저장(store)
주소 바인딩(Address Binding)
-
프로그램의 명령어와 데이터를 기억장치에 적재할 때, 그것들의 기억장치 주소를 결정하는 것
- 프로그램에서 사용하는 심볼(전역변수, 함수)은 기억장치의 어떤 주소가 있어야, 실행될 때 그 주소를 사용하여 접근(읽기/쓰기) 할 수 있다
-
ex)
- 컴파일러는 심볼의 주소를 재배치 가능 주소(relocatable address)로 바인딩한다.
- 실행파일을 실행하면, 운영체제는 재배치 가능 주소를 절대 주소(absolute address)로 바인딩한다
compile and load time
주소 바인딩의 종류
컴파일 시간 (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)의 값을 더해서 물리주소를 구한다
< 주소 변환 요약>
- 운영체제는 어떤 프로세스에게 CPU를 할당하여 실행시킬 때, 그 프로세스의 시작 위치를 MMU의 재위치 레지스터에 셋팅한다
- 이 후, 프로세스가 CPU에 의해 실행될 때 생성되는 논리 주소는 MMU에 의해 물리 주소로 변환된다
참고
-
[System Software & Security Lab @ Myongji Univ. - Operating System ppt]
반응형