바인딩 ( Binding )



일반적으로 속성과 개체 사이 또는 연산과 기호 사이와 같은 연관 ( Association ) 

변수에 변수와 관련된 속성을 연관시키는 것
값들이 확정이 되어 구속(Bind) 된 상태 

함수 호출된 부분에서 함수가 위치한 메모리 번지를 연결

 




 바인딩 타임 ( Binding Time )



프로그램에서 변수들이 갖는 속성이나 값이 완전히 결정되는 시간.
이름에 속성이 연결되는 시간

 




 바인딩 타임의 종류 ( Variety of Binding Time )



1. 언어 정의 시간 ( Language Definition Time ) 

언어에서 허용되는 대부분의 자료구조나 프로그램 구조 등을 확정.
ex) int를 정수형으로 나타낸다고 정의

2. 언어 구현 시간 ( Language Implementation Time ) 

언어를 정의할 때 이루어 지는 형태(표현 자리 수, 범위, 크기 등이 정해짐)
렉싱 ( Lexing ) : 키워드를 문법대로 자르는 것

ex) int a 를 4바이트로 결정, int, char 등 사전에 정의된 키워드를 렉싱

3. 컴파일 시간 ( Compile Time )

원시프로그램 을 번역할 때 이루어지며 . Data, Stack 등 메모리에 들어갈 변수가 정해짐.
정적바인딩, 변수의 이름 또는 형과 프로그램 문장 구조

고레벨 언어를 Binary File , Obj 파일로 전환 

작동) Obj 파일로 변환하는 과정에서 코드가 문법에 맞는지 검사 (Parsing)


4. 링크 시간 ( Link Time )

프로그램을 라이브러리와 링크할 때 이루어 지는 형태

사용 가능성을 조사하고, 라이브러리와 모듈을 합친다.


5. 적재 시간 ( Load Time )

변수를 메모리 로 적재할 때 (주소가 결정됨)

운영 체제에서 메모리로 프로그램을 불러와 실행


6. 실행 시간 ( Run Time )

프로그램을 실행 할 때 이루어지며 변수의 값을 확정

변수의 기억장소 할당
실행 부터 종료 까지 변수 값을 바인딩

 




 정적 바인딩 ( Static Binding )



실행 시간 전에 일어나고, 실행 중에 변하지 않는 상태로 유지되는 바인딩

ex) int a; // 정수 타입(Integer Type)을 이름 'a'에 정적으로 바인딩

 




 동적 바인딩 ( Dynamic Binding )



실행 시간 ( Run-Time ) 중에 일어나거나 프로그램 실행 과정에서 변경되는 것

(정적 바인딩한 변수들도 실행 중에 변경 되면 동적 바인딩이다)

ex) int * ptr = malloc( sizeof(int) * 10 ); 

 




 할당 ( Allocation )



기억장소 할당 : 변수에 메모리 공간을 바인딩( Binding )하는 과정

 




 정적 할당 ( Static Allocation )



메모리 에 적재될 크기를 미리 아는 것

Run-Time 에 각 타입에 맞는 메모리 영역 ( Segment ) 에 할당

 



 동적 할당 ( Dynamic Allocation )



외부환경에 의해 변화하여 크기를 미리 알 수 없는 것

명시적인 명령어에 의해 실행되는 할당

동적할당이 공간은 힙영역( Heap Segment )

포인터나 참조 변수를 통해 접근이 가능

 




 바인딩, 바인딩의 종류, 할당에 대해 알아보았다

 바인딩은 변수의 값이 실제 값과 묶이는 것이며 묶인 속성과 값이 완전히 결정되는 시간이 바인딩 타임이다.

 할당에는 정적할당과 동적할당이 있다.

출처 : http://wookss-blog.tistory.com/6 / http://people.cs.clemson.edu/~turner/courses/cs428/summer00/webct/content/pz/ch2/ch2_5.html


'프로그래밍 > 프로그래밍 기초' 카테고리의 다른 글

메모리 구조  (0) 2016.03.23
메모리 관리기법  (0) 2016.03.21

+ Recent posts