Процесс - это программа в процессе выполнения. Иными словами, процесс - это программный код, который из состояния "ready" ("готов к выполнению") запланирован к выполнению процессором компьютера. Так же всей информацией о выбранном процессе располагает PCB или Process Control Block. PCB - это виртуальная таблица в памяти компьютера, содержащая такую информацию как приоритет процесса, задействованные регистры, ограничения по памяти, номер процесса и так далее. Так же процесс может порождать другие процессы (Child Processes). По сравнению с потоками (threads), процесс требует больше ресурсов для завершения. Кроме этого, процесс изолирован и не делит память с другими процессами. Процесс так же может находиться в одном из следующих состояний:
- new (новый)
- ready (готов к исполнению)
- running (выполняется)
- waiting (ожидает)
- terminated (завершен)
- suspended (приостановлен).
Поток или Thread - это сегмент процесса, т.е. процесс может иметь несколько потоков. При этом в отличие от процесса, поток может находится в трех состояниях:
- running (выполняется)
- ready (готов к исполнению)
- blocked (заблокирован)
С точки зрения потребления ресурсов потоки более легкие, их завершить проще чем закрыть процесс. Но при этом потоки не имеют такой изоляции между собой как процессы.