메모리의 주소는 크게 물리적 주소(Physical Memory)와 논리적 주소(Logical Memory)로 나눈다.
물리적 주소는 실제 메모리의 유닛(Unit)의 순서대로 지정된 절대 주소를 말하고
논리적 주소는 CPU에 의해 연산된 가장 주소를 얘기한다.
Bind란 프로세스 상의 변수와 물리적 주소를 합쳐 고정시키는 것을 말한다.
bind를 하는 시간은 크게 3가지로 나눌 수 있는데
Compile Time, Load Time, Execution Time
이렇게 3가지 이다. 시간 순서도는 아래 그림을 보면 된다.
Compile Time은 지정된 변수의 주소값과 물리적 주소를 일치시킨다. 즉, 컴파일시 지정된 주소값으로 Base와 Limit를 잡아서
그래도 메모리의 적제한다. 이 경우에 만일 시작 위치가 변경될 시에는 컴파일을 다시 해야만 한다.
Load Time의 경우 처음에 운영체제에 의해 결정된 Base주소 값에다가 논리적 주소값을 더해서 물리적 주소가 결정 되어 진다.
만일 Base가 1000번이고 프로세스 변수의 논리적 주소가 200번이라면 이 변수의 물리적 주소는
1200번이 되는 것이다.
Execution Time은 가상메모리를 사용할 경우인데 변수의 주소가 메모리상에서도 유동적일 경우에 프로세스가 실행 되기전까지
바인드를 하지않고 실행 되는 순간에 바인드를 한다. 이럴 경우 Address Map이 지원되야 한다.
Compile Time의 경우 논리적 주소와 물리적 주소가 일치하고 Load Time과 Execution Time은
일치하지 않는다.
RSS : http://darknata.blog.me/
'C.E > OS' 카테고리의 다른 글
DeadLock - DeadLock이란? (0) | 2013.11.15 |
---|---|
Memory Management - Overlay (0) | 2013.11.15 |
Memory Management - Dynamic Loading, Dynamic Linking (0) | 2013.11.15 |
Memory Management - MMU (0) | 2013.11.15 |
Win 8 정품인증하기 (0) | 2013.10.20 |