Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции СПО

.pdf
Скачиваний:
30
Добавлен:
03.06.2015
Размер:
2.4 Mб
Скачать

содержимое ре истров

о ще о н зн чения, режим р

оты процессор ,

фл и,

м ски прерыв ний и

дру ие

п р метры. Во-вторых, контекст включ ет

п р метры опер ционной среды,

именно ссылки н

открытые ф йлы,

д нные

о нез вершенных опер циях ввод -вывод , коды оши ок выполняемых д нным потоком системных вызовов и т. д.

 

Диспетчериз ция сводится к следующему:

 

сохр нение контекст текуще о поток , который тре уется сменить;

 

з рузк контекст ново о поток , вы р нно о в результ те пл ниров ния;

з пуск ново о поток н выполнение.

Поскольку опер ция переключения контекстов существенно влияет н

производительность вычислительной системы, про р ммные модули ОС

выполняют диспетчериз цию потоков совместно с пп р тными средств ми процессор .

В контексте поток

можно выделить ч сть, о щую для всех потоков

д нно о процесс (ссылки н

открытые ф йлы), и ч сть, относящуюся только к

д нному потоку (содержимое ре истров, счетчик ком нд, режим процессор ).

Н пример, в среде NetWare 4.x р злич ются три вид

контекстов:

ло

льный

контекст (контекст процесс ), контекст

руппы потоков и контекст отдельно о

поток .

Соотношение

между д нными

этих

контекстов

 

н помин ет

соотношение ло

льных и лок льных переменных в про р мме, н пис нной н

языке

С.

Переменные

ло льно о контекст

доступны

для

всех

потоков,

созд нных в р мк х одно о

процесс . Переменные

лок льно о

контекст

доступны

только

для

кодов

определенно о

поток ,

н ло ично

лок льным

переменным функции. В NetWare можно созд в ть несколько

рупп потоков

внутри одно о процесс

и эти

руппы

удут иметь свой

рупповой контекст.

Переменные, прин длеж щие

рупповому контексту, доступны всем поток м,

входящим в руппу, но недоступны ост льным поток м.

 

 

 

 

 

 

 

Очевидно,

что т к я иер рхическ я ор низ ция контекстов ускоряет

переключение потоков, т к к к при переключении с поток

н поток в предел х

одной

руппы нет нео ходимости з менять контексты

рупп или

ло

льные

контексты, дост точно лишь з менить контексты потоков, которые имеют меньший о ъем. Ан ло ично при переключении с поток одной руппы н поток дру ой руппы в предел х одно о процесс ло льный контекст не изменяется, изменяется лишь контекст руппы. Переключение же ло льных контекстов происходит только при переходе с поток одно о процесс н поток дру о о процесс .

5.6 Состояния потока

ОС выполняет пл ниров ние потоков, приним я во вним ние их состояние. В мультипро р ммной системе поток может н ходиться в одном из

трех основных состояний:

выполнение — ктивное состояние поток , во время которо о поток

о л д ет всеми нео ходимыми ресурс ми и непосредственно выполняется процессором;

 

ожид ние — п ссивное состояние поток , н ходясь в котором, поток

з

локиров н по своим внутренним причин м (ждет осуществления некоторо о

со ытия, н пример з вершения опер ции ввод -вывод , получения соо щения от дру о о поток или осво ождения к ко о-ли о нео ходимо о ему ресурс );

отовность — т кже п ссивное состояние поток , но в этом случ е поток з локиров н в связи с внешним по отношению к нему о стоятельством (имеет

все тре уемые для не о ресурсы, отов выполняться, одн ко процессор з нят выполнением дру о о поток ).

В течение своей жизни к ждый поток переходит из одно о состояния в дру ое в соответствии с л оритмом пл ниров ния потоков, принятым в д нной

опер ционной системе.

Р ссмотрим типичный р ф состояния поток (рис. 4.3). Только что созд нный поток н ходится в состоянии отовности, он отов к выполнению и.

стоит в очереди к процессору. Ко д в результ те пл ниров ния подсистем

упр вления поток ми приним ет решение о ктивиз ции д нно о поток , он

переходит в состояние выполнения и н ходится в нем до тех пор, пок ли о он

с м осво одит

процессор, перейдя

в состояние

ожид ния к ко о-ни удь

со ытия, ли о

удет принудительно

«вытеснен»

из процессор , н пример

вследствие исчерп ния отведенно о д нному потоку кв нт

процессорно о

времени. В последнем случ е поток возвр щ ется в состояние

отовности. В это

же состояние поток переходит из состояния ожид ния,

после то о к к

ожид емое со ытие произойдет.

 

 

Рис. 4.3. Гр ф состояний поток в мно оз д чной среде

 

В

состоянии выполнения в

однопроцессорной системе

может

н ходиться не

олее одно о поток ,

в к ждом из состояний ожид ния и

отовности

несколько потоков.

Эти потоки о р зуют

очереди

соответственно ожид ющих и отовых потоков. Очереди потоков ор низуются

путем о ъединения в списки опис телей отдельных потоков. Т ким о р зом,

к ждый опис тель поток , кроме все о проче о, содержит по кр йней мере один ук з тель н дру ой опис тель, соседствующий с ним в очереди. Т к я

ор низ ция очередей позволяет ле ко их переупорядочив ть, включ ть и

исключ ть потоки, переводить потоки из одно о состояния в дру ое. Если предположить, что н рис. 4.4 пок з н очередь отовых потоков, то з пл ниров нный порядок выполнения вы лядит т к: А, В, Е, D, С.

Рис. 4.4. Очередь потоков

5.7 Вытесняющие и невытесняющие алгоритмы планирования

С с мых о щих

позиций

все множество

л оритмов пл ниров ния

можно р зделить н

дв

кл сс :

вытесняющие и невытесняющие

л оритмы

пл ниров ния.

 

 

 

 

 

 

Невытесняющие

(non-preemptive) л оритмы основ ны

н

том, что

ктивному потоку

позволяется выполняться, пок

он с м, по

со ственной

иници тиве, не отд ст упр вление опер ционной системе для то о, что ы т вы р л из очереди дру ой отовый к выполнению поток.

Вытесняющие

(preemptive)

л оритмы

это

т кие спосо ы

пл ниров ния потоков,

в которых решение о переключении

процессор с

выполнения

одно о поток

н

выполнение дру о о

поток

приним ется

опер ционной системой,

не

ктивной з д чей.

 

 

 

 

Основным р зличием

между

вытесняющими

и

невытесняющими

л оритм ми

является

степень

центр лиз ции

мех низм

пл ниров ния

потоков. При вытесняющем мультипро р ммиров нии функции пл ниров ния потоков целиком сосредоточены в опер ционной системе и про р ммист пишет

свое приложение, не з

отясь о том, что оно удет выполняться одновременно с

дру ими з д ч ми. При

этом

опер ционн я

систем выполняет следующие

функции: определяет

момент

снятия

с

выполнения ктивно о поток ,

з помин ет е о контекст,

вы ир ет из очереди

отовых потоков следующий,

з пуск ет новый поток н

выполнение, з

руж я е о контекст.

При невытесняющем мультипро р ммиров нии мех низм пл ниров ния

р спределен между опер ционной системой и

прикл дными про р мм ми.

Прикл дн я про р мм , получив упр вление от опер ционной системы, с м

определяет момент з вершения очередно о цикл свое о выполнения и только

з тем перед ет упр вление ОС с помощью к ко о-ли о системно о вызов . ОС формирует очереди потоков и вы ир ет в соответствии с некоторым пр вилом

(н пример, с учетом приоритетов) следующий поток н

выполнение.

Т кой

мех низм созд ет про лемы к к для пользов телей, т к и для р зр отчиков

приложений.

 

 

 

 

 

 

 

 

 

Для пользов телей это озн ч ет, что упр вление системой теряется н

произвольный период времени, который определяется

приложением

(

не

пользов телем).

Если приложение

тр тит

слишком

мно о времени

н

выполнение

к кой-ли о

р оты,

н пример

н

форм тиров ние

диск ,

пользов тель

не

может

переключиться с этой

з д чи

Н дру ую

з д чу,

н пример н текстовый ред ктор, в то время к к форм тиров ние продолж лось

ы в фоновом режиме.

 

Поэтому

р зр отчики приложений для

опер ционной среды с

невытесняющей

мно оз д чностью вынуждены,

возл я н се я ч сть

функций пл нировщик

, созд в ть приложения т к, что ы они выполняли свои

з д чи не ольшими ч

стями. Н пример, про р мм форм тиров ния может

отформ тиров ть одну дорожку дискеты и вернуть упр вление системе. После

выполнения дру их з д ч систем возвр тит упр вление про р мме

форм тиров ния, что ы т отформ тиров л следующую дорожку. Подо ный

метод р зделения

времени между з д ч ми р

от ет, но он существенно

з трудняет р зр

отку про р мм и предъявляет

повышенные тре ов ния к

кв лифик ции

про р ммист .

Про р ммист

должен

о еспечить

«дружественное»

отношение своей

про р ммы

к

дру им

выполняемым

одновременно с

ней про р мм м.

Для это о в

про р мме

должны ыть

предусмотрены ч стые перед чи упр вления опер ционной системе. Кр йним

проявлением «не дружественности» приложения является е о з вис ние,

которое приводит к о щему кр ху системы. В систем х с вытесняющей мно оз д чностью т кие ситу ции, к к пр вило, исключены, т к к к

центр льный пл нирующий мех низм имеет возможность снять з висшую

з д чу с выполнения.

Одн ко р спределение функций пл ниров ния потоков между системой

и приложениями не все д является недост тком,

при определенных условиях

может ыть

и преимуществом, потому что д ет возможность р зр

отчику

приложений

с мому проектиров ть л оритм

пл ниров ния,

н и олее

подходящий для д нно о фиксиров нно о н ор

з д ч. Т к к к р зр отчик

с м определяет в про р мме момент возвр щения упр вления, то при этом исключ ются нер цион льные прерыв ния про р мм в «неудо ные» для них моменты времени. Кроме то о, ле ко р зреш ются про лемы совместно о использов ния д нных: з д ч во время к ждо о цикл выполнения использует

их монопольно и уверен , что н протяжении это о период

никто дру ой не

изменит

д нные.

Существенным

преимуществом

невытесняюще о

пл ниров ния является

олее высок я

скорость переключения с поток н

поток.

 

 

 

 

Почти во всех современных опер ционных систем х, ориентиров нных

нвысокопроизводительное выполнение приложений (UNIX, Windows

NT/2000, OS/2, VAX/VMS), ре лизов ны вытесняющие л оритмы

пл ниров ния потоков (процессов). В последнее время дошл очередь и до ОС кл сс н стольных систем, н пример OS/2 Warp и Windows 95/98.

5.8 Алгоритмы планирования, основанные на квантовании

В основе мно их вытесняющих л оритмов пл ниров ния лежит концепция кв нтов ния. В соответствии с этой концепцией к ждому потоку

поочередно для выполнения предост вляется

о р ниченный

непрерывный

период процессорно о времени — кв нт. Смен

ктивно о поток

происходит,

если:

 

 

 

поток з вершился и покинул систему;

 

 

 

произошл оши к ;

 

 

поток перешел в состояние ожид ния;

исчерп н кв нт процессорно о времени, отведенный д нному потоку.

Поток, который исчерп л свой кв нт, переводится в состояние

отовности и

ожид ет,

ко д

ему удет

 

предост влен

новый кв нт

процессорно о

времени,

н выполнение в

соответствии с

определенным

пр вилом вы ир ется новый поток из очереди

отовых. Гр ф состояний поток ,

изо р женный

н

рис.

4.6,

соответствует

л оритму

пл ниров ния,

основ нному н

кв

нтов нии.

 

 

 

 

Рис. 4.6. Гр ф состояний поток в системе с кв нтов нием

Кв нты, выделяемые поток м, мо ут ыть один ковыми для всех потоков или р зличными. Р ссмотрим, н пример, случ й, ко д всем поток м

предост вляются кв нты один ковой длины q (рис. 4.7). Если в системе имеется п потоков, то время, которое поток проводит в ожид нии следующе о кв нт ,

можно

ру о оценить к к q(n-l). Чем

ольше потоков в системе, тем

ольше

время

ожид ния, тем меньше

возможности вести одновременную

интер ктивную р оту нескольким пользов телям. Но если величин

кв нт

вы р н

очень не ольшой, то зн чение произведения q(n-l) все р вно

удет

дост точно м ло для то о, что ы пользов тель не ощущ л дискомфорт

от

присутствия в системе дру их пользов телей. Типичное зн чение кв нт

в

систем х р зделения времени сост вляет десятки миллисекунд.

 

 

Рис. 4.7. ллюстр ция р счет времени ожид ния в очереди Если кв нт короткий, то сумм рное время, которое проводит поток в

ожид нии процессор , прямо пропорцион льно времени, тре уемому для е о выполнения (то есть времени, которое потре ов лось ы для выполнения это о

поток при монопольном использов нии вычислительной системы).

Действительно, поскольку время ожид ния между двумя цикл ми выполнения р вно q(n-l), количество циклов B/q, де В — тре уемое время выполнения, то

W*B(n-l). З метим, что эти соотношения предст вляют со

ой весьм ру ые

оценки, основ нные н предположении, что В зн чительно

превыш ет q. При

этом не учитыв ется, что потоки мо ут использов ть кв нты не полностью, что ч сть времени они мо ут тр тить н ввод-вывод, что количество потоков в

системе может дин мически меняться и т. д.

Чем ольше кв нт, тем выше вероятность то о, что потоки з верш тся в результ те перво о же цикл выполнения, и тем менее явной ст новится

з висимость времени ожид ния потоков от их времени выполнения. При

дост точно ольшом кв нте л оритм кв нтов ния вырожд ется в л оритм последов тельной о р отки, присущий однопро р ммным систем м, при

котором время ожид ния з д чи в очереди воо ще ник к не з висит от ее длительности.

Кв нты, выделяемые одному потоку,

мо ут

ыть фиксиров нной

величины,

мо ут и изменяться в р зные периоды

жизни поток . Пусть,

н пример,

первон ч льно к ждому потоку н зн ч ется дост точно ольшой

кв нт, величин к ждо о следующе о кв нт

уменьш ется до некоторой

з р нее з д нной величины. В т ком случ е преимущество получ ют короткие

з д чи, которые успев ют выполняться в течение перво о кв нт , длительные

вычисления удут проводиться в фоновом режиме. Можно предст вить се е

л оритм пл ниров ния, в котором к ждый следующий кв нт, выделяемый

определенному потоку, ольше предыдуще о. Т кой подход позволяет

уменьшить н кл дные р сходы н переключение з д ч в том случ е, ко д

ср зу несколько з д ч выполняют длительные вычисления.

Потоки получ ют для выполнения кв нт времени, но некоторые из них используют е о не полностью, н пример из-з нео ходимости выполнить ввод или вывод д нных. В результ те возник ет ситу ция, ко д потоки с

интенсивными о р щениями к вводу-выводу используют только не ольшую ч сть выделенно о им процессорно о времени. Ал оритм пл ниров ния может

испр вить эту

«неспр ведливость».

В

к честве

компенс ции

з

неиспользов нные

полностью кв нты

потоки

получ ют

привиле ии

при

последующем о служив нии. Для это о пл нировщик созд ет две очереди

отовых потоков (рис. 4.8). Очередь 1 о р зов н поток ми, которые пришли в состояние отовности в результ те исчерп ния кв нт времени, очередь 2 —

поток ми, у которых з вершил сь опер ция ввод -вывод . При вы оре поток для выполнения прежде все о просм трив ется втор я очередь, и только если

он

пуст , кв нт выделяется потоку из первой очереди.

 

 

Мно оз д чные

ОС

теряют

некоторое

количество

процессорно о

времени для выполнения вспомо

тельных

р

от во время

переключения

контекстов з д ч. При этом

з помин ются

и

восст н влив ются ре истры,

фл

и и ук з тели стек ,

т кже проверяется ст тус з д ч для перед чи

упр вления. З тр ты н

эти вспомо

тельные действия не з висят от величины

кв нт времени, поэтому чем

ольше кв нт, тем меньше сумм рные н кл дные

р сходы, связ нные с переключением потоков.

 

 

 

Рис. 4.8. Кв нтов ние с предпочтением потоков, интенсивно о р щ ющихся к

вводу-выводу

5.9 Алгоритмы планирования, основанные на приоритетах

Дру ой в жной концепцией, леж щей в основе мно их вытесняющих

л оритмов

пл ниров ния,

является

приоритетное

о служив ние.

Приоритетное

о служив ние

предпол ет

н личие у

потоков некоторой

изн ч льно известной х р ктеристики — приоритет , н

основ нии которой

определяется

порядок

их

выполнения.

Приоритет

это число,

х р ктеризующее степень

привиле иров нности поток

при

использов нии

ресурсов вычислительной м шины, в ч стности процессорно о времени: чем выше приоритет, тем выше привиле ии, тем меньше времени удет проводить поток в очередях.

Приоритет может выр ж ться целым или дро ным, положительным или отриц тельным зн чением. В некоторых ОС принято, что приоритет поток тем выше, чем ольше (в рифметическом смысле) число, о озн ч ющее приоритет. В дру их систем х, н о орот, чем меньше число, тем выше приоритет.

Вольшинстве опер ционных систем, поддержив ющих потоки,

приоритет поток непосредственно связ н с приоритетом процесс , в р мк х