Различия между потоками и процессами
Основное различие между потоками и процессами состоит в том, что каждый процесс имеет собственное адресное пространство, а потоки — нет. Если процесс создает множество потоков, то все они будут содержаться в его адресном пространстве. Вот почему они так легко разделяют общие ресурсы, и так просто обеспечивается взаимодействие между ними. Сыновние процессы имеют собственные адресные пространства и копии разделов данных. Следовательно, когда процесс-потомок изменяет свои переменные или данные, это не влияет на данные родительского процесса. Если необходимо, чтобы родительский и сыновний процессы совместно использовали данные, нужно создать общую область памяти. Для передачи данных между родителем и потомком используются такие механизмы межпроцессного взаимодействия, как каналы и FIFO-очереди. Потоки одного процесса могут передавать информацию и связываться друг с другом путем непосредственного считывания и записи общих данных, которые доступны родительскому процессу.
Потоки, управляющие другими потоками
В то время как процессы могут управлять другими процессами, если между ними установлены отношения типа «родитель-потомок», потоки одного процесса считаются равноправными и находятся на одном уровне, независимо от того, кто кого создал. Любой поток, имеющий доступ к идентификационному номеру (id) некоторого другого потока, может отменить, приостановить, возобновить выполнение э того потока либо изменить его приоритет. Отмена основного потока приведет к завершению всех потоков процесса, т.е. к ликвидации процесса. Любые изменения, внесенные в основной поток, могут повлиять на все потоки процесса. При изменении приоритета процесса все его потоки, которые унаследовали этот приоритет, должны также изменить свои приоритеты. Сходства и различия между потоками и процессами сведены в табл. 4.1.
Таблица 4.1. Сходства и различия между потоками и процессами
Сходства
• Оба имеют идентификационный номер (id), состояние, набор регистров, приоритет и привязку
к определенной стратегии планирования
• И поток, и процесс имеют атрибуты, которые описывают их особенности для операционной системы
• Как поток, так и процесс имеют информационные блоки
• Оба разделяют ресурсы с родительским процессом
• Оба функционируют независимо от родительского процесса
• Их создатель может управлять потоком или процессом
• И поток, и процесс могут изменять свои атрибуты
• Оба могут создавать новые ресурсы
• Как поток, так и процесс не имеют доступа к ресурсам другого процесса
Различия
• Потоки разделяют адресное пространство процесса, который их создал; процессы имеют собственное адресное пространство
• Потоки имеют прямой доступ к разделу данных своего процесса; процессы имеют собственную копию раздела данных родительского процесса
• Потоки могут напрямую взаимодействовать
с другими потоками своего процесса; процессы должны использовать специальный механизм межпроцессного взаимодействия для связи с «братскими» процессами
• Потоки почти не требуют системных затратна поддержку процессов требуются значительные затраты системных ресурсов
• Новые потоки создаются легко; новые процессы требуют дублирования родительского процесса
• Потоки могут в значительной степени управлять потоками того же процесса; процессы управляют только сыновними процессами
• Изменения, вносимые в основной поток (отмена, изменение приоритета и т.д.), могут влиять на поведение других потоков процесса; изменения, вносимые в родительский процесс, не влияют на сыновние процессы
Преимущества использования потоков
При управлении подзадачами приложения использование потоков имеет ряд преимуществ.
• Для переключения контекста требуется меньше системных ресурсов.
• Достигается более высокая производительность приложения.
• Для обеспечения взаимодействия между задачами не требуется никакого специального механизма.
• Программа имеет более простую структуру.
Переключение контекста при низкой (ограниченной) доступности процессора
При организации процесса для выполнения возложенной на него функции может оказаться вполне достаточно одного основного потока. Если же процесс имеет множество параллельных подзадач, то их асинхронное выполнение можно обеспечить с помощью нескольких потоков, на переключение контекста которых потребуются незначительные затраты системных ресурсов. При ограниченной доступности процессора или при наличии в системе только одного процессора параллельное выполнение процессов потребует существенных затрат системных ресурсов в связи с необходимостью обеспечить переключение контекста. В некоторых ситуациях контекст процессов переключается только тогда, когда процессору последовательно назначаются потоки из разных процессов. Под системными затратами подразумеваются не только системные ресурсы, но и время, требуемое на переключение контекста. Но если система содержит достаточное количество процессоров, то переключение контекста не является проблемой.
Читать дальше