Потоки, потоки и еще раз потоки FreeBSD

Слово поток, или нить (thread), встречается в разных контекстах. Некоторые процессоры поддерживают технологию HyperThreading. Некоторые процессы запускают несколько потоков исполнения (нитей). Операционная система FreeBSD содержит три отдельные библиотеки, позволяющие реализовать многопоточную модель исполнения. Некоторые части ядра работают как отдельные потоки исполнения (нити). Мои штаны состоят из огромного множества нитей (хотя в некоторых предметах одежды этих нитей так мало, что в них, по мнению моей жены, неприлично появляться на публике).1 Что же это за потоки и что подразумевается под этим словом?

В большинстве случаев под словом поток подразумевается легковесный процесс. Не забывайте: процесс – это задача в системе, запущенная программа. Процессы в системе имеют собственные числовые идентификаторы (ID), могут запускаться, останавливаться и обычно могут управляться пользователем. Поток – это часть процесса, но потоки управляются самим процессом и недоступны пользователю. В каждый конкретный момент времени процесс может выполнять только одно действие, а отдельные потоки исполнения могут действовать независимо друг от друга. В многопроцессорных системах одновременно могут исполняться потоки, принадлежащие одному процессу.

В английском «нить» и «поток» обозначаются одним и тем же словом. В русском языке это разные слова. Поэтому, хотя данное предложение можно рассматривать как забавное отвлечение, тем не менее оно плохо вписывается в контекст, так как слово «нить» довольно редко используется в русскоязычной литературе для обозначения потоков исполнения. – Прим. перев.

Любая многопоточная программа использует библиотеку реализации многопоточной модели исполнения (threading library), позволяющую приложению использовать потоки в данной операционной системе, взаимодействуя с ядром. Библиотеки реализуют многопоточную модель разными способами, поэтому применение конкретных библиотек может влиять на производительность приложения.

Подобным образом, поток ядра – это подпроцесс в ядре. В операционной системе FreeBSD имеются потоки ядра, которые обслуживают операции ввода-вывода, поддерживают работу с сетью и т. д. Каждый поток имеет собственные функции, задачи и механизмы блокировок. В многопоточной модели ядра не используются библиотеки из пространства пользователя.

HyperThreading – это маркетинговый термин, не имеющий никакого отношения к потокам исполнения в системе. Хотя вам необходимо понимать, что такое HyperThreading и какое влияние эта технология оказывает на систему (об этом рассказывалось в предыдущем разделе), тем не менее она не является частью многопоточной модели исполнения.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий