C compiler & Program memory 구조

<Main Memory로의 적재> D HDD에 저장된, 프로그래머가 작성한 소스코드가 전용 컴파일러에 의해 기계어 코드로 변환된다. 이 실행파일이 생성이 되고 실행된다면 Process가 생성되고 Process가 가지는 opened_file은 이 실행파일일 것이다. 위 단계부터 Main memory (RAM) 에 여러 정보들이 적재되기 시작한다. 이 적재도 무작정 순차적으로 되는 것이 아니라 위와 같은 메모리 구조를 따라서 적재된다. <Compile time & Run time> 변수 초기 데이터는 프로그래머가 지정한 초기값으로 초기화된 전역 변수로 main()함수가 실행되기 전 compile타임에 변수 초기 데이터가 복사되어 들어간다. <선언과 할당> 만약 위 code에서 man이 선언된 후 man = {20, 'F', 'gordon'} 의 코드가 실행되면 이는 '선언'이 아니라 '할당'이다. <Const> const로 선언할 경우, 반드시 초기값이 존재해야한다. 선언 이후에 바뀔 수 없는 값이기 때문이다. <정적 변수 할당 시점> 정적 변수는 프로그램이 실행되기 전까지 존재하지 않는다. 프로그램 실행 후 | 정적 변수 할당 | main function으로의 돌입 executable file 자체는 변수가 아니며, 프로그램 실행시 executable code와 함께 Main Memory에 적재되어야 하는 데이터다. <Optimization> 프로그램이 특정 variable를 '절대' 참조하지 않거나, Compiler에서 프로그램이 variable에 의존하지 않는다 판단할 경우 자체적으로 최적화 시킬 수 있다. 이는 compiler의 구현에 따라 다르며 일반적으로는 해당되지 않음. <메인 메모리 구조> 코드 영역에는 일련의 명령어들이 텍스트 형태로 저장되어있다. 프로그램이 시작되고 종료될 때까지 M...