[OS] Memory Binding

Memory Binding

메모리 주소 공간에서 명령어와 데이터의 바인딩은 시점에 따라 구분된다.

Compile Time Binding

프로세스가 메모리 내에 들어갈 위치를 컴파일 시간에 알 수 있다면 컴파일 타임에 적재된다. static키워드가 명시된 변수나 함수들 같은 내용이 대상이고 C++을 기준으로 Data영역 혹은 Data영역 내 BSS영역에 바인딩 된다.

Load Time Binding

컴파일 시점에 메모리의 어디에 바인딩될지 알지 못한다면 로드 타임에 적재된다. 이 경우 컴파일러는 이진 코드를 재배치 가능 코드로 만들고 심벌과 메모리 번지수와의 바인딩은 프로그램이 주 메모리로 적재되는 순간에 이루어진다.

Execution Time Binding

실행 타임 바인딩은 페이징이나 세그멘테이션과 같은 방법을 통해 이루어진다. 프로세스가 실행하는 중간에 메모리 내의 한 세그먼트로부터 다른 세그먼트로 옮겨질 수 있다면 이에 해당한다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/23/OS/memory-binding/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.