cpp : pre-processor 전처리 단계
compiler : 어셈블리어로 변환
assembler : 기계어 인스트럭션으로 변환
linker : 호출된 (printf).o 파일과 결합 -> 실행파일 생성
① 응용 프로그램이 하드웨어를 잘못 사용하지 못하게 하기 위해
② 응용 프로그램이 하드웨어를 조작할 수 있도록
Kernel virtual memory
: 응용 프로그램들은 이 부분에 R/W 불가, Kernel 호출 해야해
User stack (created at runtime)
: 컴파일러가 함수 호출하기 위해 사용 (함수 호출 → 늘어나고, return → 줄어들고)
Runtime Heap created by malloc
: 동적 (malloc, free)를 이용하여 크기 조절
( 메모리영역이 두 개가 있는데 하나는 스택이고 하나는 힙이다. 스택은 정적인 경우에 사용하고, 힙은 동적인 경우에 저장되는 곳이다. 실행이라고 오해하지 말아라 -나중에 또 공부하렴- )