레지스터 : PC(Program Counter) + SP(Stack Pointer)
stack 순서 : SP주소 → 함수 리턴 주소 → 함수인자 → 함수 내 변수
heap : 동적으로 생성되는 메모리
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *data;
data = (int *) malloc(sizeof(int));
*data = 1;
printf("%d\n", *data);
return 0;
}
malloc이라는 함수가 동적메모리를 생성하는 함수.
컴파일러 단계에서 메모리가 얼마만큼 필요한지 알 수 없어서, stack이 아닌 heap 영역에 생성된다.
BSS - 초기화되지않은 전역변수
DATA - 초기값이 있는 전역변수
int global_data1; // 초기값 x
int global_data2 = 1; // 초기값 o
컨텍스트 스위칭
CPU에 실행할 프로세스를 교체하는 기술
각각의 프로세스마다 관리하고 있는 PCB(Process Control Block)라는 저장공간에 자신의 상태를 나타내고 있는 PC&SP 값을 저장하여, 컨텍스트 스위칭이 일어날 때마다 CPU에 업데이트 시킨 후 실행하면 된다.