Операционные системы: архитектура и управление процессами. Макаров П.С. - 72 стр.

UptoLike

Составители: 

72
— KLT). Потоки второго типа в литературе иногда называются потоками, под-
держиваемыми ядром, или облегченными процессами.
Потоки на уровне пользователя
В программе, полностью состоящей из ULT-потоков, все действия по
управлению потоками выполняются самим приложением; ядро по сути и не по-
дозревает о существовании потоков. На рис. 30, а проиллюстрирован подход,
при котором используются только потоки на уровне пользователя. Чтобы при-
ложение было многопоточным, его следует создавать с применением специаль-
ной библиотеки, представляющей собой пакет программ для работы с потоками
на уровне ядра. Такая библиотека для работы с потоками содержит код, с по-
мощью которого можно создавать и удалять потоки, производить обмен сооб-
щениями и данными между потоками, планировать их выполнение, а также со-
хранять и восстанавливать их контекст.
По умолчанию приложение в начале своей работы состоит из одного по-
тока и его выполнение начинается как выполнение этого потока. Такое прило-
жение вместе с составляющим его потоком размещается в едином процессе, ко-
торый управляется ядром. Выполняющееся приложение в любой момент вре-
мени может породить новый поток, который будет выполняться в пределах то-
го же процесса. Новый поток создается с помощью вызова специальной под-
программы из библиотеки, предназначенной для работы с потоками. Управле-
ние к этой подпрограмме переходит в результате вызова процедуры. Библиоте-
ка потоков создает структуру данных для нового потока, а потом передает
управление одному из готовых к выполнению потоков данного процесса, руко-
водствуясь некоторым алгоритмом планирования. Когда управление переходит
к библиотечной подпрограмме, контекст текущего потока сохраняется, а когда
управление возвращается к потоку, его контекст восстанавливается. Этот кон-
текст в основном состоит из содержимого пользовательских регистров, счетчи-
ка команд и указателей стека.
Все, описанные в предыдущих абзацах события, происходят в пользова-
тельском пространстве в рамках одного процесса. Ядро не подозревает об этой
деятельности. Оно продолжает осуществлять планирование процесса как еди-
ного целого и приписывать ему единое состояние выполнения (состояние го-
товности, состояние выполняющегося процесса, состояние блокировки и т. д.).