лекции СПО
.pdfсодержимое ре истров |
о ще о н зн чения, режим р |
оты процессор , |
фл и, |
|
м ски прерыв ний и |
дру ие |
п р метры. Во-вторых, контекст включ ет |
||
п р метры опер ционной среды, |
именно ссылки н |
открытые ф йлы, |
д нные |
о нез вершенных опер циях ввод -вывод , коды оши ок выполняемых д нным потоком системных вызовов и т. д.
|
Диспетчериз ция сводится к следующему: |
|
сохр нение контекст текуще о поток , который тре уется сменить; |
|
з рузк контекст ново о поток , вы р нно о в результ те пл ниров ния; |
з пуск ново о поток н выполнение.
Поскольку опер ция переключения контекстов существенно влияет н
производительность вычислительной системы, про р ммные модули ОС
выполняют диспетчериз цию потоков совместно с пп р тными средств ми процессор .
В контексте поток |
можно выделить ч сть, о щую для всех потоков |
д нно о процесс (ссылки н |
открытые ф йлы), и ч сть, относящуюся только к |
д нному потоку (содержимое ре истров, счетчик ком нд, режим процессор ).
Н пример, в среде 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 Алгоритмы планирования, основанные на приоритетах
Дру ой в жной концепцией, леж щей в основе мно их вытесняющих
л оритмов |
пл ниров ния, |
является |
приоритетное |
о служив ние. |
||
Приоритетное |
о служив ние |
предпол ет |
н личие у |
потоков некоторой |
||
изн ч льно известной х р ктеристики — приоритет , н |
основ нии которой |
|||||
определяется |
порядок |
их |
выполнения. |
Приоритет |
— |
это число, |
х р ктеризующее степень |
привиле иров нности поток |
при |
использов нии |
ресурсов вычислительной м шины, в ч стности процессорно о времени: чем выше приоритет, тем выше привиле ии, тем меньше времени удет проводить поток в очередях.
Приоритет может выр ж ться целым или дро ным, положительным или отриц тельным зн чением. В некоторых ОС принято, что приоритет поток тем выше, чем ольше (в рифметическом смысле) число, о озн ч ющее приоритет. В дру их систем х, н о орот, чем меньше число, тем выше приоритет.
Вольшинстве опер ционных систем, поддержив ющих потоки,
приоритет поток непосредственно связ н с приоритетом процесс , в р мк х