본문 바로가기

Cpp

주소 바인딩

주소 바인딩이란?

cpu가 프로세스가 포함하는 데이터를 참조하기 위해서는 프로세스가 가지는 논리주소를 물리주소로 변환 할 수 있어야한다. 이 논리주소와 물리주소를 연결시키는 것을 주소 바인딩이라고 한다.

 

주소 바인딩은 컴파일 타임 바인딩(Compile-time binding), 로드 타임 바인딩(Load-time binding), 런타임 바인딩(Runtime binding)으로 나뉜다.

 

1. 컴파일 타임 바인딩

컴파일 타임 바인딩은 데이터의 위치가 컴파일 타임에 결정되는 것을 의미한다. 정적인 주소 할당.

물리적 메모리 위치를 변경하려면 다시 컴파일해야하는 단점이 있다.

 

2. 로드 타임 바인딩

프로그램이 시작 될 때 데이터의 물리적 위치가 결정되는 바인딩.

프로그램이 종료될 때까지 위치가 고정됩니다.

이는 메모리에 데이터를 로드할 때 로드 할 모든 데이터들의 주소 변환을 해야해서 오버헤드가 크다는 단점이 있다.

 

3. 런타임 바인딩

프로그램의 실행 시간 동안에 주소 변환이 가능한 바인딩

로드 타임과는 다르게 실행 중에도 주소 변환이 가능하다. 런타임 바인딩은 주소 변환을 실행한 다음 메모리에 접근한다.미리 주소 변환을 다 해놓는 로드 타임 바인딩보다 안좋아보이지만 하드웨어 성능의 상승으로 메모리 접근에 대한 성능 차이가 로드 타임과 크지 않고 오히려 메모리 로딩에서 오버헤드가 커 런타임 바인딩을 주로 사용한다.

'Cpp' 카테고리의 다른 글

가상 함수와 순수 가상 함수의 차이  (0) 2024.05.16
C++에서의 메모리 관리 방식  (0) 2024.05.16
재귀 함수  (0) 2024.04.22
래퍼 함수  (0) 2024.04.22
push_back, emplace_back  (0) 2024.04.02