<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />

메모리엔 컴퓨터 실행 순간부터 다양한 프로세스들이 적재되어 실행됨

</aside>

IMG_5806.heic

프로세스 유형은 두 가지로 분류할 수 있음. 포그라운드(foreground) 프로세스는 사용자가 보는 공간에서 사용자와 상호작용하며 실행하는 프로세스를 의미하며, 백그라운드(background) 프로세스는 사용자가 보지 못하는 곳에서 실행하는 프로세스를 의미함. 추가로, 백그라운드 프로세스 중 사용자와 별다른 상호작용 없이 주어진 작업만 수행하는 특별한 프로세스를 **데몬(daemon)**이라고 함

flowchart TB
	1(프로세스) --> 2(포그라운드 프로세스)
	1 --> 3(백그라운드 프로세스)
	3 --> 4(데몬)

프로세스 유형을 막론하고 하나의 프로세스를 구성하는 메모리 내 정보는 크게 다르지 않음. 커널 영역에는 “프로세스 제어 블록(PCB)”이라는 정보가 저장되고, 사용자 영역에는 실행 중인 프로세스가 “코드 영역, 데이터 영역, 힙 영역, 스택 영역”으로 나뉘어 저장

메모리 영역

메모리 영역은 크게 두 영역으로 나눌 수 있음. 정적 할당 영역은 프로그램 실행 도중 크기가 변하지 않는 영역을 말하며, 동적 할당 영역은 프로그램 실행 도중 크기가 변할 수 있는 영역을 의미함

flowchart TB
	1(메모리 영역) --> 2(정적 할당 영역)
	1(메모리 영역) --> 3(동적 할당 영역)
	2 --> 4(코드 영역)
	2 --> 5(데이터 영역)
	3 --> 6(힙 영역)
	3 --> 7(스택 영역)

1️⃣ 코드 영역(텍스트 영역)

<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />

실행 가능한 명령어가 저장되는 공간

</aside>

2️⃣ 데이터 영역

<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />

프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간

</aside>

3️⃣ 힙 영역

<aside> <img src="/icons/info-alternate_blue.svg" alt="/icons/info-alternate_blue.svg" width="40px" />

프로그램을 만드는 사용자(= 개발자)가 직접 할당 가능한 저장 공간. 즉, 프로그램 실행 도중 비교적 자유롭게 할당하여 사용 가능한 메모리 공간

</aside>

4️⃣ 스택 영역