프로세스란 실행 중인 프로그램을 뜻하며 다음과 같이 여러 섹션으로 구분된 메모리 구조를 가지고 있다.
이때 Text와 Data는 고정 크기를 가지며 Heap과 Stack은 프로그램 실행 중 동적으로 크기가 변할 수 있다.
프로세스는 다음의 상태들 중 하나에 속하게 된다.
PCB란 프로세스 제어 블록(Process Control Block)을 뜻하며 프로세스와 관련된 정보들을 저장하고 있다.(프로세스 상태, Program Counter, CPU Registers 등)
프로세스를 실행하기 위해서는 CPU 코어가 필요하다. 하지만 CPU 코어는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 프로세스 스케줄러가 실행가능한 여러 프로세스 중 하나를 선택하여 실행한다.
프로세스가 시스템에 들어가면 먼저 준비 큐에 들어간 후 프로세스 스케줄러에 의해 선택되어 CPU 코어에서 실행된다. 이후 특별한 이벤트를 기다리는 경우 대기 큐에 들어가게 된다.
현재 실행중인 프로세스를 멈추고 다른 프로세스를 실행하는 경우 정지된 프로세스의 상태를 저장한 후 재실행 하기 위해 복구해야 한다. 이때 저장하는 상태를 문맥이라 하며 이는 프로세스의 PCB에 표현되기 때문에 이 작업을 문맥 교환(context switching)이라 한다.