본문 바로가기

프로그래밍 공부방/C 프로그래밍 방

C Programming - 1.4 프로그램의 구동


컴파일, 연결 과정을 통해 생성된 실행 파일은 운영체제의 로더(loader)에 의해서 메모리에 적재된다. 또한 실행 파일에 대해 하나의 프로세스 주소공간을 갖도록 메모리 공간을 잡아준다. 왜나하면 여러 개의 프로그램이 동시에 수행하는 멀티태스킹(multitasking) 운영체제에서는 하나의 실행 프로그램을 하나의 프로세스(process)로 간주해서 관리하기 떄문이다. 이 때 프로세스 주소 공간은 다음과 같이 논리적으로 4개의 영역으로 구분 되는 메모리 영역을 갖는다.

1. 텍스트 세그먼트(text segment) : 프로그램 실행에 필요한 기계 코드가 실제로 저장되는 공간
2. 데이터 세그먼트(data segmant) : 전역변수(global variable)나 정적 변수(static variable)가 저장되는 공간
3. 스택 세그먼트(stack segment) : 프로그램 실행 중에 다양한 용도로 사용되는 메모리 영역. 함수 호출이나 함수의 인수, 지역의 반환 주소를 저장 한다.
4. 힙 세그먼트(heap segment) : 프로세스 수행 중에 메모리 공간의 추가 할당이 필요할 때 동적 메모리 할당 함수를 통해 사용할 수 있는 메모리 영역이다.