Процесс — это активная сущность, выполняемая программа со своим адресным пространством, файловыми дескрипторами, стеком, регистровым контекстом и другими ресурсами. Процессы изолированы друг от друга.
Поток (thread) — это наименьшая единица, которой может быть выделено процессорное время. Находится внутри процесса, разделяет его ресурсы (адресное пространство, файловые дескрипторы). У каждого потока свой стек, Program Counter, регистровый контекст. Потоки внутри одного процесса могут взаимодействовать напрямую, что требует синхронизации.
Основные отличия:
| Признак | Процесс | Поток |
|---|---|---|
| Адресное пространство | Собственное, изолированное | Разделяет с другими потоками процесса |
| Ресурсы | Собственные (файлы, память и т.д.) | Разделяет большинство ресурсов процесса |
| Создание | Дорогостоящее (требует выделения ресурсов) | Относительно недорогое |
| Взаимодействие | Через IPC (межпроцессное взаимодействие) | Напрямую (через общую память), требует синхронизации |
| Надежность | Сбой одного не влияет на другие процессы | Сбой одного может повлиять на все потоки процесса |