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