티스토리 뷰
반응형
※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.
예전에 이것과 관련된 내용을 IT 포럼에서 발표하기 위해 만들어 놓은 prezi가 있다.
함께 참고하면 좋을 듯.
http://prezi.com/obkhqdxaz3zx/programming-compile-loading-for-korean/
전 포스팅에서 메모리의 영역은 코드, 스택, 데이터, 힙 세그먼트로 나눠진다고 조사하였다. 스택(Stack)은 LIFO(Last in Last out) 구조로 이루어져 있다. LIFO란 마지막으로 들어온 값이 처음으로 나간다는 뜻으로써 FIFO(First in First out) 구조의 큐(Queue)와는 상반되는 개념으로 설명되고 있다. 스택 프레임은 스택 세그먼트에서 함수의 호출과 동시에 해당 함수의 스택 프레임으로써 만들어 진다. 그리고 코딩의 순서에 맞춰 LIFO 구조로 차곡차곡 쌓여진다. 이 때 esp라는 포인터가 사용되게 되는데 흔히 스택 포인터라고 하며 현재 데이터의 위치를 알려준다. 그리고 ebp라는 흔히 베이스 포인터라고 일컫는 또 다른 포인터가 있는데, 이는 스택 프레임이 시작된 위치의 주소값을 가르키며 나중에 esp가 시작점으로부터 얼마나 벗어나 있는지를 가리킨다. 스택 프레임이 소멸하는 시점은 해당 스택 프레임의 함수가 종료되는 시점에서 함께 소멸된다. 이때 ebp는 돌아와야 할 주소 값을 가리킨다.
반응형
'개인공부 > 시스템' 카테고리의 다른 글
httpd.conf 에 대해 : 사용자별 홈 디렉토리 설정 등 (0) | 2014.04.14 |
---|---|
스택 메모리 영역에 대해 (2) | 2014.01.16 |
시스템 인터럽트(interrupt), 시스템 콜(system call) (0) | 2014.01.16 |
x86 레지스터의 종류와 역할 (0) | 2014.01.16 |