
운영체제는 위에서부터 스택, 힙, 데이터 영역, 코드 영역으로 나눌 수 있다.
스택 : 지연변수, 매개변수, 리턴값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역이고, LIFO(Last In, First Out) 방식으로 운영된다.
함수 호출 시 할당되고 함수 반환 시 소멸되며, 컴파일 시 크기가 할당된다.
힙 : 힙 영역은 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간이다.
힙 영역에서 malloc() 또는 new 연산자를 통해 메모리를 할당하고, free() 또는 delete 연산자를 통해 메모리를 해제한다.
힙 영역은 선입선출(FIFO, First-In First-Out) 의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출 된다.
이는 힙 영역이 메모리의 낮은 주소에서 높은 주소의 방향으로 할당되기 때문이다.
데이터 영역 : BSS 영역과 Data 영역으로 나뉘고 정적할당에 관한 부분을 담당한다.
초기화가 어떠한 값으로도 되어 있지 않은 변수 들이 이 메모리 영역에 할당된다.초기화된 변수 가 이 메모리 영역에 할당된다.코드 영역 : 소스코드가 들어간다.

생성 상태 : 프로그램을 메모리에 가져와 실행 준비가 완료된 상태이다.
준비 상태 : 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태이다.
프로세스 제어 블록은 준비 큐(ready Queue) 에서 기다리며 cpu스케줄러에 의해 관리된다.
cpu 스케줄러가 dispatch(PID) 명령을 실행하여 준비상태에서 실행상태로 바뀌는 작업이 이루어진다.
실행 상태 : 선택된 프로세스가 타임 슬라이스를 얻어 cpu를 사용하는 상태이다.
실행상태에 들어가는 프로세스는 cpu의 개수 만큼이다.
timeout(PID) 가 실행되어 준비 상태로 전환exit(PID) 가 실행되어 프로세스 정상 종료block(PID) 을 실행하는데 block(PID) 는 입출력이 완료될때까지 작업을 진행할 수 없기 떄문에 해당 프로세스를 대기 상태로 옮긴다.휴식 상태 : 프로세스가 작업을 일시적으로 쉬고 있는 상태이다.
사용하던 데이터가 메모리에 그대로 있고 PCB도 유지되므로 프로세스는 멈춘 지점에서 부터 재시작할 수 있다.
보류 상태 : 프로세스가 메모리에서 잠시 쫓겨난 상태로 일시 정지 상태 라고도 불린다.
보류 상태의 프로세스는 메모리 밖으로 쫓겨나 스왑 영역에 보관된다.
완료 상태 : 코드와 사용했던 데이터를 메모리에서 삭제하고 PCB 를 폐기한다.
정상적인 종료는 exit() 로 처리하고 만약 오류나 다른 프로세스에 의해 비정상적으로 종료되는 강제 종료를 만나면 디버깅 하기 위해 강제 종료 직전의 메모리 상태를 저장장치로 옮기는데 이를 코어 덤프 라고한다.
PCB(Process Control Block)는 운영체제에서 관리하는 프로세스에 대한 메타데이터를 저장한 데이터블록

컨텍스트 스위칭이란 CPU 를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업을 말한다.

프로세스1 이 작업을 수행하다가, 인터럽트나 시스템 콜이 발생했을 때 프로세스1 은 지금까지 작업하던 내용을 PCB 에 저장할 것이다.
이후 대기하고 있던 프로세스2 가 작업을 수행하고, 프로세스 도 작업이 일시중지되면, PCB 에 저장 후 프로세스 1 은 상태 복구 후 작업을 다시 수행한다.
유후시간 발생 : 컨텍스트 스위칭 을 할 때마다 유후시간이 발생한다.
캐시 미스 : 프로세스1 이 실행 중일 때, 해당 프로세스의 페이지 테이블 매핑 정보는 TLB 에 캐싱된다.
그러나 컨텍스트 스위칭 이 발생하면, TLB 에 저장된 프로세스1 의 매핑 정보는 지워지고, 프로세스 2 의 매핑 정보로 대체된다.
이후 다시 프로세스1 으로 전환될 때, TLB 에는 프로세스1 의 정보가 없으므로 캐시 미스 가 발생하고, 시스템은 페이지 테이블을 다시 참조해 데이터를 로드해야 한다.
이 과정에서 캐시의 이점을 잃고, 더 느린 메모리 접근으로 인해 성능 저하가 발생하는 것이다.
오버헤드 : CPU는 중단된 작업의 상태(레지스터, 프로그램 카운터, 메모리 매핑 등)를 저장하고, 새 작업의 상태를 로드해야 한다.
이때 일정한 오버헤드 가 발생하게 되며 이 오버헤드 가 자주 발생하면 전체적으로 시스템 성능이 저하될 수 있으며, CPU의 유효 가동 시간에 영향을 미칠 수 있다.
https://all-young.tistory.com/17
https://www.youtube.com/watch?v=a2GDsaReFEA