“어떤 작업을 위해 실행할 수 있는 파일”
프로그램은 하드디스크 등의 저장공간에 저장되어 있는 코드와 리소스 등이 집합된 파일을 말하고, 이 프로그램이 실행되면 메모리에 올라가서 프로세스로 동작한다. 즉, 실행되는 프로그램들은 프로세스라고 한다.
“컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램”
메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
운영체제로부터 시스템 자원을 할당받는 작업의 단위
즉, 동적인 개념으로는 실행된 프로그램을 의미
예) CPU 시간, 운영되기 위해 필요한 주소 공간, Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역

작업관리자에서 볼 수 있는 프로세스 목록. 운영체제(OS)를 통해 여러 프로세스를 처리할 수 있다. 이를 멀티태스킹이라고 한다.

그림에서는 여러 프로세스가 실행되고 있는 것처럼 보이지만, CPU는 한 번에 한 가지 명령어밖에 실행하지 못한다. CPU의 속도는 엄청나게 빠르지만, 프로세스들을 번갈아가며 실행시키는 것이 사실은 동시에 처리하는 것처럼 보이는 것 뿐이다. 이를 **문맥교환(Context Swiching)**이라고 한다.
<aside> 💡 멀티태스킹
OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드 간에 나누는 행위를 말한다. 이를 통해서 여러 프로그램을 동시에 열고 작업할 수 있다.
</aside>
<aside> 💡 CPU Scheduler
스케쥴러는 레디 큐(queue)에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당 받게 해주는 역할이다.
</aside>
