В. Столлингс - Операционные системы (1114679), страница 43
Текст из файла (страница 43)
Потоки, симметричная мультипроцессорная обработка... 233 тч потоку на пользовательском уровне соответствует свой облегченный о переключать потоки при вычислениях не потребуется, для некоторых приложений подходит смешанное использование юстоянно связанных с облегченными процессами, н несвязанных пото '' ,том несколько облегченных процессов совместно используются несколь оками).
Например, при реализации прикладной системы реального . грограммист может захотеть, чтобы одни потоки обладали приоритетоте,. птабе всей системы и планировались в реальном времени, а другие — в: ти функции в фоновом режиме и могли совместно использовать один ~ольшое количество облегченных процессов. труктура процессов На рис. 4.16 приводится общее сравнение структуры процессов в тнной операционной системе 1)1ч11Х со структурой процессов в операцио геме Бо1аг1з.
В типичных реализациях У)к11Х в структуру процесса вхо :оставляющие: идентификатор процесса, идентификаторы пользователя, тиспетчеризации сигналов; дескрипторы файлов, схема распределения. ;труктура состояния процессора. В операционной системе Яо1аг1з эта, :труктура остается, но в ней блок состояния процессора заменен списко: гур, в котором для каждого облегченного процесса имеется свой блок д Стртктура процесса а операционной системе Зотаг1а 2.к Структтра процесса а операционной системе 0МХ ИдентиФикатор процесса Идентификаторы полааоаатели Таблица диспетчеризации сигналоа Дескрипторы Файлоа Облегченный процесс т Облегченный процесс т данта катар аалеченнага л еааа СТЕК Рис.
4.16. Структура процесса в У1тт1Х и е Яо!атта Я.х 11,ЕМЧ963 В структуру данных облегченного процесса входят такие элементы: идентификатор облегченного процесса; приоритет данного облегченного процесса (и, следовательно, потока ядра, который его поддерживает); маска сигналов, предоставляющая ядру информацию о том, какие сигналы могут быть восприняты процессом; ° сохраненные значения регистров пользовательского уровня (когда облегченньтй процесс не выполняется); ° стек ядра данного облегченного процесса, в который входят аргументы системного вызова, результаты и коды ошибок каждого уровня; ° данные по использованию ресурсов и профилированию," указатель на соответствующий поток ядра; ° указатель на структуру процесса. Выполнение потоков На рис.
4.17 показана облегченная схема состояний выполнения потоков на пользовательском уровне и облегченных процессов. Выполнением потоков на пользовательском уровне управляет библиотека потоков. Рассмотрим сначала несвязанные состояния, т.е. состояния, которые совместно используют несколько облегченных процессов. Несвязанный поток может находиться в одном из четырех состояний: работоспособный, активный, ожидания или остановленный. Если поток на пользовательском уровне находится в активном состоянии, он закрепляется за облегченным процессом и выполняется до тех пор, пока выполняется лежащий в его основе поток ядра. Поток на пользовательском уровне может выйти из активного состояния по нескольким причинам. Рассмотрим активный поток Т1 на пользовательском уровне.
Возможны такие события Синхронизация. Чтобы скоординировать свои действия с другими патоками поток Т1 вызывает один из примитивов, которые обсуждаются в главе б, "Параллельные вычисления: взаимоисключения и многозадачность", а сам переходит в состояние ожидания После выполнения условия синхронизации поток Т1 переходит в работоспособное состояние. П н Рностановка. Любой из потоков (включая поток Т1) может стать причиной и ой приостановки потока Т1 и его перехода в состояние остановки.
Поток Т1 ост остается в этом состоянии, пока другой поток не сгенерирует запрос на "Родолжение его выполнения, который и переводит остановленный поток в Работоспособное состояние. сненне. Активныи поток (Т1 или какой-то другой) выполняет некоторое детютвие б ие, благодаря которому становится работоспособным другой поток (Т2) с бо'тсе высок ысоким приоритетом. Если Т1 является активным потоком с наиболее низким и ио приоритетом, он вытесняется и переходит в состояние готовности, а поток Т2 эа ° акрепляется за освободившимся облегченным процессом.
а ' упка. у а Если поток Т1 выполняет библиотечную команду сЬг уае1с1(), и"'ани ов Ровщик потоков этой библиотеки проверяет, есть ли другой работо- Часть 2. Потоки, симметричная мультипроцессорная обработка... 235 оааталаоаваг 'гФ л,, ~с сс с ~с % ю Ф 236 Часть 2. способный поток (Т2) с тем же приоритетом. Если такой поток есть, реходит в работоспособное состояние, а поток Т2 закрепляется за '. дившимся облегченным процессом. В противном случае продолжает няться поток Т1. рис. 4.1 7.
Состояния потоггов и облегченных процессов в Яо1аг1а Во всех перечисленных выше случаях при выходе потока Т1 из состояния библиотека потоков выбирает другой несвязанный поток в Р» .. собном состоянии и запускает его на освободившемся облегченном прон, На рис. 4.17 показана также диаграмма состояний облегченных про диаграмму можно рассматривать как детализацию активного состояния пользовательском уровне, так как несвязанному потоку облегченный про чается только тогда, когда он находится в активном состоянии.
Д 'Ъ „вй облегченного процесса почти не требует пояснений. Активный поток выполня~~ ся ' ,пшь тогда, когда его облегченный процесс находится в состоянии выполнен и активный цоток делает блокирующий системный вызов, его облегченный пр~т с переходит в состояние блокировки. Однако на пользовательском уровне этот пс~~ - остается связанным с данным облегченным процессом до тех пор, пока библиоф .;; потоков оставляет его в активном состоянии. 'у Цзанмосвязь связанных потоков с облегченными процессами несколько дру-:,. „я НапримеР, если свЯзанный поток на пользовательском УРовне пеРеходит в стояние ожидания наступления синхронизирующего события, его облегченный „Ропесс тоже должен перестать выполняться.
Прерывания в роли потоков В большинстве операционных систем приняты две основные формы асинхрон- ной деятельности: процессы и прерывания. Процессы (или потоки) взаимодействуют друг с другом и управляют использованием совместных структур данных с помощью Разлитых примитивов, обеспечивающих взаимоисключения (когда в каждый мо- мент времени только один процесс может выполнять определенный код или осуще- ствлять доступ к определенным данным) и синхронизирующих их выполнение. Пре- рывания синхронизируются путем их предотвращения на некоторое время.
В опера- ционной системе Яо1апв эти две концепции объединяются в одной модели потоков ядра; прерывания в такой модели преобразуются в потоки ядра. Зти преобразования выполняются для сокращения накладных расходов. Обработчики прерываний часто манипулируют данными, которые используются совместно с остальной частью ядра. Поэтому во время работы процедуры ядра, осуществляющей доступ к этим данным, прерывания должны быть заблокирова- ны, даже если большинство прерываний не оказывают влияния на эти данные. Обычно для этого приходится повышать уровень приоритета прерываний, чтобы блокировать прерывания на время выполнения подпрограммы. После заверше- ния подпрограммы уровень приоритета понижается. Все эти операции отнимают ~ремя. В многопроцессорной системе проблема усиливается.
Ядро должно защи- "1ать большее количество объектов, и ему может понадобиться блокировать пре- Рывания на всех процессорах. решение, принятое в операционной системе Яо1аг)в, выглядит так. Для обработки прерываний в системе Яо1аг1з используются потоки ядра. 1~ах и любой другой поток ядра, поток прерывания обладает своим собственным идентификатором, приоритетом, контекстом и стеком. Яд лро управляет доступом к структурам данных и синхронизирует потоки преРь'ваний с помощью примитивов взаимоисключений 1рассматривающихся в '"ве о, "*Параллельные вычисления: взаимоисключения и многозадачность"). аким образом, для обработки прерываний используются обычные методы синхронизации потоков З.
1)о„„, "охам прерываний присваиваются более высокие приоритеты, чем всем другим типам потоков ядра. полня ' и происходит прерывание, оно передается определенному процессору, а яющийся на этом процессоре поток закрепляется, Закрепленный поток ;,' может ет перейти на другой процессор; его контекст сохраняется, и процесс 4 Потоки, симметричная мультипроцессорная обработка...
237 станавливается до тех пор, пока не будет обработано прерывание.: о процессор приступает к выполнению потока прерывания. В наличии ется запас деактивированных потоков прерываний, так что новый пото ,ть не нужно. Затем исполняется поток, в котором происходит об взывания. Если программе обработки понадобится доступ к структуре >Рая каким-то образом заблокирована и используется другим потоком,." ывания должен ждать. Поток прерывания может быть вытеснен только потоком прерывания с более высоким приоритетом.
Опыт использования потоков прерываний в операционной системе Бо1 льствует о том, что такой подход обеспечивает производительность, п ~ производительность традиционных методов обработки прерываний ~К1.Е1 6. УПРАВЛЕНИЕ ПРОЦЕССАМИ::- И ПОТОКАМИ В ХЛЫЩ ОЦЕССЫ В ХЛПиХ В операционной системе 1.1пих процесс, или задание, представляется.". ~й данных сззй зегисе. Ь1пих поддерживает таблицу газ~, пред з собой линейный вектор указателей на каждую определенную в дан г структуру данных сазй зггысс..