바인딩 타임이란?
바인딩은 프로그램의 각종 변수값들이 실제 값으로 묶여 버리는 것으로, 개념적으로는 설계, 코딩, 컴파일, 실행, 번역, 언어의 구현, 정의 등 프로그래밍 전 과정에 걸쳐 일어나나 일반적으로는 컴파일 시간에 일어나는 정적 바인딩과, 실행 시간에 일어나는 동적 바인딩을 의미한다.
따라서 바인딩 타임이란 프로그램에서 변수들이 갖는 속성이나 값이 완전히 결정되는 시간을 말하며, 이름에 속성이 연결되는 시간을 뜻한다.
바인딩 타임의 종류
1) Language Implementation time :: data type(ex:int, float, char..)에 대해서 표현 범위나 자리수가 정해진다..
2) language definition time :: data type을 정의한다. 예를들면 int는 정수형을 나타내는 data type이라고 정의를 할 수 있다.
3) Compile time :: Data, Stack메모리에 들어갈 변수들은 이때 다 정해지며 High-level언어를 바이너리파일, 즉 Obj File로 매칭한다.
4) Link time :: 라이브러리 등의 사용 가능성을 조사하고 메인 프로그램과 보조 프로그램 등 각 모둘을 합친다.
5> Load time : 운영체제 측면에서 메모리로 프로그램을 불러와서 실행을 하며 주소의 결정에 관여한다.
6)Run time :: 프로그램 실행부터 종료될 때 까지 변수값이 바인딩되고 이 시간을 Run time이라고 한다.
위에서는 6가지로 분류를 했지만 사람마다 분류방법이 틀리다고 한다. 위의 6가지로 분류하는 사람과 컴파일타임, 링크타임, 로드타임을 하나로 묶어서 컴파일타임으로 취급하는 삶, 즉, 구현시간, 정의시간, 컴파일타임, 런타임 이렇게 4가지로 분류할수도 있다고 한다.
/*** 구글링해서 여러글 수집한터라 출처를 못 남긴점 양해바랍니다.. ***/
'Security > [리얼] System' 카테고리의 다른 글
ARM 어셈블리어 Cross compile하기 (0) | 2015.04.28 |
---|---|
간단한 바이너리를 통한 ROP 공격 (0) | 2014.08.15 |
페이징(Paging) (0) | 2014.05.29 |