프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(Task)이라는 용어와 거의 같은 의미로 쓰인다. 스레드는 프로세스 내 작업의 흐름을 지칭한다.

앞의 그림처럼 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다.
프로세스는 프로그램으로부터 인스턴스화된 것을 말한다. 예를 들어 프로그램은 구글 크롬 프로그램(chrome.exe)와 같은 실행 파일이며 두 번 클릭하면 구글 크롬 “프로세스”가 시작된다.
프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것을 의미하며 “컴파일 과정”이란 다음과 같다. 참고로 여기서 말하는 프로그램이란 C 언어 기반의 프로그램을 의미하며, 이는 별도의 컴파일 과정없이 한 번에 한 줄씩 읽어들여서 실행하는 프로그램인 인터프리터 언어(파이썬 등)로 된 프로그램과 다르다.

소스 코드의 주석을 제거하고 @#include 등 헤더 파일을 병합하여 매크로를 치환한다.
오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환한다.
어셈블리어는 목적 코드(object code)로 변환된다. 이때 확장자는 운영체제마다 다른데 리눅스에서는 .o다.
e.g. 가영.c라는 파일 생성 ⇒ 가영.o라는 파일 만들어짐