В. Столлингс - Операционные системы (1114679), страница 36
Текст из файла (страница 36)
Соответствующие мы состояний показаны на рис. 4.7,г. о С$, о Е 3 о о Е Ф М Ф 3 Фц й, Часть 2. Б случаях 1 и 2 «см. Рис. 4.7.6 и з) при возврате управления процессу зобновляется выполнение потока 2. Заметим также, что процесс, в кото полняется код из библиотеки потоков, может быть прерван либо из-за то закончится отведенный ему интервал времени, либо из-за наличия про более высоким приоритетом. Когда возобновится выполнение прерванного: песса, оно продолжится работой процедуры из библиотеки потоков, кото "' вершит переключение потоков и передаст управление новому потоку проц Использование потоков на пользовательском уровне обладает некот преимушествами перед использованием потоков на уровне ядра. К этим имуществам относятся следующие. 1.
Переключение потоков не включает в себя переход в режим ядра, т структуры данных по управлению потоками находятся в адресно странстве одного и того же процесса. Поэтому для управления по ' процессу не нужно переключаться в режим ядра. Благодаря этому тельству удается избежать накладных расходов, связанных с двумя ключениями режимов (пользовательского режима В режим ядра и об 2. Планирование производится в зависимости от специфики приложе одних приложений может лучше подойти простой алгоритм плани '" по круговому алгоритму, а для других — алгоритм планирования, ный на использовании приоритета.
Алгоритм планирования может: раться для конкретного приложения, причем это не повлияет на планирования, заложенный в операционной системе. 3. Использование потоков на пользовательском уровне применимо для:,. операционной системы. Для их поддержки в ядро системы не по вносить никаких изменений. Библиотека потоков представляет с утилит, работающих на уровне приложения и совместно используе ми приложениями. Использование потоков на пользовательском уровне обладает двумя недостатками по сравнению с использованием потоков на уровне ядра.
1. В типичной операционной системе многие системные вызовы явля кирующими. Когда в потоке, работающем на пользовательском уро полняется системный вызов, блокируется не только данный поток, потоки того процесса, к которому он относится. 2. В стратегии с наличием потоков только на пользовательском уровне ние не может воспользоваться преимуществами многопроцессорной так как ядро закрепляет за каждым процессом только один процессор. несколько потоков одного и того же процесса не могут выполняться менно.
В сущности, у нас получается многозадачность на уровне прил,, Рамках одного процесса. Несмотря на то, что даже такая многозада жет привести к значительному увеличению скорости работы приложе ются приложения, которые работали бы гораздо лучше, если бы Р части их кода могли выполняться одновременно. Эти две проблемы разрешимы. Например, их можно преодолеть, сать приложение ие в виде нескольких потоков, а в виде нескольких и Однако при таком подходе основные преимущества потоков сводятся на удое дое переклю"ение становится не переключением потоков, а переключени ПРОЦ сов, ~то приведет к значительно большим накладным затратам.
пругим методом преодоленпя проблемы блокирования является использоэанн . поеобразования блокирующего системного вызова в неблокирующий. Ка вместо непосредственного вызова системной процедуры авода-вывода вызывает подпрограмму-оболочку, которая производит ввод-вывод на , „ВНЕ ПРПЛОжеНИЯ.
Б этой программе содержится код, который проверяет, за лп устройство ввода-вывода. Если оно занято, поток передает управление угому потоку (что происходит с помощью библиотеки потоков). когда наш по- вновь получает управление, он повторно осуществляет проверку занятости устрой -тва ВВОД'Вывода. ПОТОни нн урОВНВ ядри Б программе„работа которой полностью основана на потоках, работающих на урвне Дра Все дей Япоупр е по . ивыполняю др . Б бла приложений отсутствует код, предназначенный для управления потоками. Вместо него используется ингерфейс приклаДИОГО прОГраммирОВаниЯ (арр11са$10п ргойташ- пппд 1п1ег1асе -- АР1) средств ядра, управляющих потоками.
Примерами такого подхода являются Операционные системы 06/2, Ыпих и ЪЧ2К. Ба рис. 4.6,6 проиллюстрирована стратегия использования потоков на уровне Ядра. Любое приложение при этом можнО запрограэпчировать как многопоточное; все потоки приложения поддерживаются в рамках единого процесса. Ядро поддер- живает информацию контекста процесса как единого целого, а также контекстов каждого отдельного потока процесса. Планирование выполняется ядром исходя из состояния потоков. С помощью такого подхода удается избавиться от двух упомяну- тых Ранее основных недостатков потоков пользовательского уровня. Во-первых, ядро может Одновременно осуществлять планирование работы нескольких потоков одного и того же процесса на нескольких процессорах.
Во-вторых, при блокировке одного из потоков процесса ядро может выбрать для выполнения другой поток этого же процеоса. Еще ОДНИМ прЕИмУщеспюм такого поДхода ЯвляетсЯ то, что Сами проЦедУ- Ры ядра могут быть многопоточными. Основным недостатком подхода с использованием потоков на уровне ядпо ~равнению с использованием потоков на пользовательском уровне яв- Ра по с ляется -„, я то, что для передачи управления от одного потока другому в рамках "ДНОГО О и то~ О же процесса приходится переключаться в режим ядра.
Резуль- тать исследований, проведенных на однопроцессорной машине Ъ'АХ под Управленя . 4.1 н ~ЗХ1Х-подобной операционной системы, представленные в валось В е, иллюстрируют Различие между этими двумя подходами. Сравни- Время выполнения таких двух задач, как (1) нулевое ветвление (ХН11 ОГ)~) Вр~мя, затраченное на создание, планирование и выполнение проЕССЗй~отОКа состоящего только пз нулевой процедуры (измеряются только -' Расходы, связанные с Ветвлением процесса/потока), и (2) ожидал"Дные сигнала В «ь1зпа1-Жа1«) -- время, затраченное на передачу сигнала от одпррцее..~ потока друГОму процессу/потоку, нахОдящемуся В сОстОянии нлання «н кладные расходы на синхронизацию двух процессовупотоков).
было ло легче сравнивать полученные значения, заметим, что вызоВ Цеду на машине УАХ, используемой в этом исследовании, длится 7 рв. темное е прерывание — 17 пэ. Мы видим, что различие во времени вы- Часть 2. ,.4. П Отоки, сиыметричнан мультипроцессорная обработка 209 4 1. Время задержек потоков (Рв) ~АХЭЕ921 Процессм':: Потоки на Потоки на уровне пользовательском уровне ядра Операция 11300- 1 840 левое ветвление <илание сигнала Таким образом, создается впечатление, что как применение многопо ' и на уровне ядра дает выигрыш по сравнению с процессами, так и мн ' чность на пользовательском уровне дает выигрыш по сравнению с много' стью на пользовательском уровне. Однако на деле возможность этого д льного выигрыша зависит от характера приложений, Если для боль реключений потоков приложения необходим доступ к ядру, то схема е' .ми на пользовательском уровне может работать не намного лучше, чем токами на уровне ядра.
Комбинированные подходы В некоторых операционных системах применяется комбинирова ков обоих видов 1рис. 4.6,в). Ярким примером такого подхода мож' ить операционная система Бо1аг)з. В комбинированных системах со ' >токов выполняется в пользовательском пространстве, там же, где:. танирования и синхронизации потоков в приложениях. Несколько г пользовательском уровне, входящих в состав приложения, отобра такое же или меньшее число потоков на уровне ядра.
Программист ~менять число потоков на уровне ядра, подбирая его таким, которое чет достичь наилучших результатов. При комбинированном подходе несколько потоков одного и риложения могут выполняться одновременно на нескольких процесс токирующие системные вызовы не приводят к блокировке всего ри надлежащей реализации такой подход будет сочетать в себе пре ~ва подходов, в которых применяются только потоки на пользова Ровне или только потоки на уровне ядра, сводя недостатки каждого одходов к минимуму. ~РУ1ИЕ ЕХЕЫЫ Как уже упоминалось, понятия единицы распределения ресурсов ирования традиционно отождествляются с понятием процесса. В так,.
епции поддерживается однозначное соответствие между потоками и ИИП ами. В последнее время наблюдается интерес к использованию неск; отоков в одном процессе, когда выполняется соотношение многие-кМнако возможны и другие комбинации, а именно соответствие нес неск отоков нескольким процессам и соответствие одного потока нес еск роцессам. Примеры применения каждой из упомянутых комбинаци ий ятся в табл. 4.2. лнени ия потоков на уровне ядра и потоков на пользовательском урони" е чем .м на порядок превосходит по величине различие во времени выц ' я потоков на уровне ядра и процессов. „блица 4.2.
Соотношение между потоками и процессами ~о оки-процессы Описание Каждый поток Реализован в ниде отдельного процесса со своим собственным адресным пространством и со своими ресурсами Для процесса задается адресное пространство и динамическое владение Ресурсами. В рамках этого процесса могут бьггь создаиы несколько потоков Поток может переходить из среды одного процесса в среду другого процесса. Это облегчает перенос потоков из одной системы в другую Сочетает в себе подходы, основанные на соотношениях М:1 и 1:М Примеры систем Тредициопные Реализации системы И~ПХ ОЯ,.'2, ЪУ1пбоч з ХТ„ Яо1аг1я, 1.и~ох, ОЯ/390, МАСН Ва ~С)опт), Егяегзм ТВ1Х Соответствие нескольких потоков нескольким процессам Идея реализации соответствия нескольких процессов нескольким потокам была исследована в экспериментальной операционной системе ТВ?Х 181ЕВЯЗ, "гуАВВЯО~.
В данной операционной системе используются понятия домена и потока. Домен — это статический объект, состоящий из адресного пространства и портов, через которые можно отправлять и получать сообщения. Поток — это единая выполняемая ветвь, обладающая стеком выполнения и характеризующаяся состоянием процессора, а также информацией по планированию. Как и в других указанных ранее многопоточных подходах, в рамках одного домена могут выполняться несколько потоков.
При этом удается получить уже описанное повышение эффективности работы. Кроме того, имеется возможность осуществлять деятельность одного и того же пользователя или приложения в нескольких доменах. В этом случае имеется поток, который может переходить из одного домена в другой. По-ви - идимому, использование одного и того же потока в разных доменах продиктован " онако желанием предоставить программисту средства структурирования.