Современные операционные системы

Современные операционные системы
Процессы и потоки  Реализация потоков в ядре

Реализация потоков в ядре

Теперь давайте рассмотрим, что произойдет, если ядро будет знать о потоках и управлять ими. Как показано на рис. 2.10, б, здесь уже не нужна система поддержки исполнения программ. Также здесь нет и таблицы процессов в каждом потоке. Вместо этого у ядра есть таблица потоков, в которой отслеживаются все потоки, имеющиеся в системе. Когда потоку необходимо создать новый или уничтожить существующий поток, он обращается к ядру, которое затем производит создание или разрушение путем обновления таблицы потоков в ядре.

Реализация потоков в ядре читать полное описание.


Процессы и потоки  Классическая модель потоков

Классическая модель потоков

Разобравшись в пользе потоков и в порядке их использования, давайте рассмотрим идею их использования более пристально. Модель процесса основана на двух независимых понятиях: группировке ресурсов и выполнении. Иногда их полезно отделить друг от друга, и тут на первый план выходят потоки. Сначала будет рассмотрена классическая модель потоков, затем будет изучена модель потоков, используемая в Linux, которая размывает грань между процессами и потоками.

Классическая модель потоков читать полное описание.


Процессы и потоки  Функция pthread _attr_init

Функция pthread _attr_init

Два следующих вызова функций, связанных с потоками, относятся к атрибутам. Функция pthread _attr_init создает структуру атрибутов, связанную с потоком, и инициализирует ее значениями по умолчанию. Эти значение (например, приоритет) могут быть изменены за счет работы с полями в структуре атрибутов.

И наконец, функция pthread_attr_destroy удаляет структуру атрибутов, принадлежащую потоку, освобождая память, которую она занимала. На поток, который использовал эту структуру, влияние не оказывается, и он продолжает свое существование.

Функция pthread _attr_init читать полное описание.


Процессы и потоки  Реализация потоков в пользовательском пространстве

Реализация потоков в пользовательском пространстве

Есть два основных способа реализации набора потоков: в пользовательском пространстве и в ядре. Это утверждение носит несколько спорный характер, поскольку возможна еще и гибридная реализация. А теперь мы опишем эти способы со всеми их достоинствами и недостатками.

Первый способ — это поместить весь набор потоков в пользовательском пространстве. И об этом наборе ядру ничего не известно. Что касается ядра, оно управляет обычными, однопотоковыми процессами. Первое и самое очевидное преимущество состоит в том, что набор потоков на пользовательском уровне может быть реализован в операционной системе, которая не поддерживает потоки. Под эту категорию подпадают все операционные системы, даже те, которые находятся еще в разработке.

Реализация потоков в пользовательском пространстве читать полное описание.


Процессы и потоки  Потоки в POSIX

Потоки в POSIX

Чтобы предоставить возможность создания переносимых многопоточных программ, в отношении потоков институтом IEEE был определен стандарт — IEEE standard 1003.1с. Определенный в нем пакет, касающийся потоков, называется Pthreads. Он поддерживается большинством UNIX-систем. В стандарте определено более 60 вызовов функций. Рассмотреть в этой книге такое количество функций мы не в состоянии. Лучше мы опишем ряд самых основных функций, чтобы дать вам представление о том, как они работают. В табл. 2.5 перечислены все вызовы функций, которые мы будет рассматривать.

Потоки в POSIX читать полное описание.