본문 바로가기

프로세스2

프로세스의 메모리 구조 프로세스의 메모리 구조 프로세스는 메모리에 올라가 실행되고 있는 프로그램을 의미합니다. 여기서 프로세스의 코드들은 코드의 상태와 종류에 따라 프로세스에 각기 다른 메모리 영역에 들어가게 됩니다. 이번 포스팅에서는 이러한 프로세스의 메모리 구조에대해 설명 해보겠습니다. 스택 함수가 호출되고 사용되는 지역변수와 매개변수가 저장되는 영역입니다. 컴파일 시 크기가 정해집니다. 컴파일 시간에 크기가 정해지는 스택 영역 특성상 크기를 늘릴 수 없기 때문에 재귀함수의 경우, 스택 영역을 초과하는 메모리가 필요할 경우 stack overflow가 발생합니다. 힙 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다. 런타임 시 크기가 정해집니다. 데이터 전역변수, 정적변수가 저장되고 프로그램이 종료될 때 .. 2023. 2. 25.
프로세스와 컴파일 과정 프로세스와 컴파일 과정 이번 포스팅에서는 소스코드가 어떠한 과정을 거쳐 프로세스, 즉 실행가능한 파일이 되는지 설명해 보겠습니다. 컴파일 과정 전처리 첫 번째로 소스코드는 전처리 과정을 통해 주석들이 제거되고 헤더파일을 병합합니다. C언어에서 주로 사용하는 #include 같은 전처리문은 stdio.h 헤더파일을 선언한 소스코드 파일에 포함시킨다는 의미입니다. #include를 말고도 다양한 전처리문을 처리해주는 과정입니다. 컴파일러 오류 처리, 코드 최적화 작업을 하며 중간코드인 어셈블리어로 변환합니다 어셈블러 어셈블리어로 이루어진 코드를 .obj 형태에 목적코드로 변환합니다. 링커 마지막 단계입니다. 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만듭니다. .. 2023. 2. 25.