лекции СПО
.pdfТ к, |
в симметричных рхитектур х вычислительный процесс может ыть |
|||
ор |
низов н к к |
симметричным о р зом, т к |
и |
симметричным. Одн ко |
симметричн я |
рхитектур непременно влечет |
з |
со ой и симметричный |
|
спосо ор низ ции вычислений. |
|
|
5.3 Понятия «процесс» и «поток»
Что ы поддержив ть мультипро р ммиров ние, ОС должн определить и оформить для се я те внутренние единицы р оты, между которыми удет
р зделяться процессор и дру ие ресурсы компьютер . В н стоящее время в
ольшинстве опер ционных систем определены дв |
тип |
единиц р |
оты. Более |
||
крупн я |
единиц р |
оты, о ычно носящ я н зв ние процесс , |
или з д чи, |
||
тре ует |
для свое о |
выполнения нескольких |
олее |
мелких |
р от, для |
оозн чения которых используют термины «поток», или «нить».
тк, в чем же состоят принципи льные отличия в понятиях «процесс»
и «поток»?
Очевидно, что лю я р от вычислительной системы з ключ ется в
выполнении некоторой про р ммы. Поэтому и с процессом, и с потоком
связыв ется определенный про р ммный код, который для этих целей
оформляется в виде исполняемо о модуля. Что ы этот про р ммный код мо
ыть выполнен, е о нео ходимо з рузить в опер тивную п мять, возможно,
выделить некоторое место н диске для хр нения д нных, предост вить доступ
к устройств м ввод -вывод , н пример к последов тельному порту для
получения д нных по подключенному к этому порту модему; и т. д. В ходе выполнения про р мме может т кже пон до иться доступ к информ ционным
ресурс м, н пример ф йл м, порт м TCP/UPD, сем фор м. |
, |
конечно же, |
|
невозможно выполнение про р ммы |
ез предост вления ей процессорно о |
||
времени, то есть времени, в течение |
которо о процессор |
выполняет коды |
|
д нной про р ммы. |
|
|
|
В опер ционных систем х, де |
существуют и процессы, и потоки, |
||
процесс р ссм трив ется опер ционной системой к к з явк |
н |
потре ление |
всех видов ресурсов, кроме одно о — процессорно о времени. Этот последний в жнейший ресурс р спределяется опер ционной системой между дру ими
единиц ми р оты — поток ми, которые и получили свое н зв ние л од ря
тому, что они предст вляют со ой последов тельности (потоки выполнения)
ком нд.
|
В простейшем случ е процесс состоит из одно о поток , и именно т ким |
о |
р зом тр ктов лось понятие «процесс» до середины 80-х одов (н пример, в |
р |
нних версиях UNIX) и в т ком же виде оно сохр нилось в некоторых |
современных ОС. В т ких систем х понятие «поток» полностью по лощ ется
понятием «процесс», то есть ост ется только одн единиц р оты и
потре ления ресурсов — процесс. Мультипро р ммиров ние осуществляется в
т ких ОС н |
уровне процессов. |
|
|
|
|
|
|
Для то о что ы процессы не мо ли вмеш ться в р спределение ресурсов, |
|||||||
т кже не мо ли повредить коды и д нные дру |
дру |
, в жнейшей з д чей ОС |
|||||
является |
изоляция одно о процесс от |
дру о о. |
Для это о опер ционн я |
||||
систем |
о еспечив ет к ждый |
процесс |
отдельным вирту льным дресным |
||||
простр нством, т к что ни один процесс не может получить прямо о достуц |
к |
||||||
ком нд м и д нным дру о о процесс . |
|
|
|
|
|||
При |
нео ходимости |
вз имодействия |
процессы о р щ ются |
к |
опер ционной системе, котор я, выполняя функции посредник , предост вляет им средств межпроцессной связи — конвейеры, почтовые ящики, р зделяемые секции п мяти и некоторые дру ие.
|
Одн ко в систем х, в которых отсутствует понятие поток , возник ют |
||||
про лемы при ор низ ции п р ллельных вычислений в р мк х процесс . А |
|||||
т к я |
нео ходимость |
может |
возник ть. |
Действительно, |
при |
мультипро р ммиров нии повыш ется пропускн я спосо ность системы, но
отдельный процесс нико д |
не |
может ыть |
выполнен |
ыстрее, чем |
в |
|
однопро р ммном |
режиме (всякое р зделение |
ресурсов |
только з медляет |
|||
р оту одно о из |
уч стников |
з |
счет дополнительных з тр т времени |
н |
ожид ние осво ождения ресурс ). Одн ко приложение, выполняемое в р мк х
одно о процесс , может о л д ть внутренним п р ллелизмом, |
который |
в |
||
принципе мо |
ы |
позволить ускорить е о решение. Если, н пример, |
в |
|
про р мме предусмотрено о р щение к внешнему устройству, то н |
время этой |
|||
опер ции можно не |
локиров ть выполнение все о процесс , |
продолжить |
вычисления по дру ой ветви про р ммы. П р ллельное выполнение нескольких
рот в р мк х одно о интер ктивно о приложения повыш ет эффективность
роты пользов теля. Т к, при р оте с текстовым ред ктором жел тельно
иметь возможность |
совмещ ть |
н ор |
ново о |
текст |
с т кими |
продолжительными по |
времени |
опер циями, к к |
переформ тиров ние |
||
зн чительной ч сти текст , печ ть документ |
или е о сохр нение н |
лок льном |
или уд ленном диске. Еще одним примером нео ходимости р сп р ллелив ния
является сетевой сервер з д нных. В этом случ е п р ллелизм жел телен к к для о служив ния р зличных з просов к зе д нных, т к и для олее ыстро о выполнения отдельно о з прос з счет одновременно о просмотр р зличных з писей зы.
Потоки возникли в опер ционных систем х к к средство р сп р ллелив ния
вычислений. Конечно, з д ч р сп р ллелив ния вычислений в р мк х одно о
приложения может |
ыть решен и тр диционными спосо ми. |
|
Во-первых, |
прикл дной про р ммист может |
взять н се я сложную |
з д чу ор низ ции п р ллелизм , выделив в |
приложении некоторую |
подпро р ммудиспетчер, котор я периодически перед ет упр вление той или
иной ветви вычислений. При этом про р мм |
получ ется ло ически весьм |
з пут нной, с мно очисленными перед ч ми |
упр вления, что существенно |
з трудняет ее отл дку и модифик цию. |
|
Во-вторых, решением является созд ние для одно о приложения
нескольких процессов для к ждой из п р ллельных р от. Одн ко
использов ние для созд ния процессов ст нд ртных средств ОС не позволяет учесть тот ф кт, что эти процессы реш ют единую з д чу, зн чит, имеют
мно о о ще о между со ой — они мо ут р от ть с |
одними и теми же |
д нными, использов ть один и тот же кодовый се мент, |
н деляться одними и |
теми же пр в ми доступ к ресурс м вычислительной системы. Т к, если в
примере с сервером з д нных созд в ть отдельные процессы для к ждо о з прос , поступ юще о из сети, то все процессы удут выполнять один и тот же
про р ммный код и выполнять поиск в з писях, о щих для всех процессов
ф йлов д нных. А опер ционн я систем при т ком подходе удет
р ссм трив ть эти процессы н р вне со всеми ост льными процесс ми и с помощью универс льных мех низмов о еспечив ть их изоляцию дру от дру .
В д нном случ е все эти дост точно ромоздкие мех низмы используются явно
не по н зн чению, выполняя не только |
есполезную, |
но и вредную р оту, |
|
з трудняющую |
о мен д нными между |
р зличными |
ч стями приложения. |
Кроме то о, н |
созд ние к ждо о процесс |
ОС тр тит определенные системные |
ресурсы, которые в д нном случ е неопр вд нно ду лируются — к ждому
процессу |
выделяются со ственное |
вирту льное |
дресное простр нство, |
физическ я п мять, з крепляются устройств ввод -вывод и т. п. |
|||
з |
все о вышеизложенно о, |
следует, что |
в опер ционной системе |
н ряду с процесс ми нужен дру ой мех низм р сп р ллелив ния вычислений,
который учитыв л ы тесные связи между отдельными ветвями вычислений
одно о и то о же приложения. |
Для этих целей современные ОС предл ют |
мех низм мно опоточной о р |
отки (multithreading). При этом вводится нов я |
единиц р оты — поток выполнения, понятие «процесс» в зн чительной
степени меняет смысл. Понятию «поток» соответствует последов тельный переход процессор от одной ком нды про р ммы к дру ой. ОС р спределяет процессорное время между поток ми. Процессу ОС н зн ч ет дресное простр нство и н ор ресурсов, которые совместно используются всеми е о поток ми.
Созд ние потоков тре ует от ОС меньших н кл дных р сходов, чем процессов. В отличие от процессов, которые прин длеж т р зным, воо ще
оворя, конкурирующим приложениям, все потоки одно о процесс все д прин длеж т одному приложению, поэтому ОС изолирует потоки в ор здо меньшей степени, нежели процессы в тр диционной мультипро р ммной
системе. |
Все |
потоки одно о |
процесс используют о щие ф йлы, |
т ймеры, |
||
устройств , одну и ту же о л сть опер тивной п мяти, одно и то же |
дресное |
|||||
простр нство. |
Это озн ч ет, |
что они р зделяют одни |
и те же ло льные |
|||
переменные. |
Поскольку к ждый поток может иметь доступ к |
лю ому |
||||
вирту льному |
дресу процесс , один поток может использов ть стек дру о о |
|||||
поток . Между поток ми одно о процесс |
нет полной з щиты, потому что, во- |
|||||
первых, |
это |
невозможно, |
во-вторых, |
не нужно. |
Что ы ор |
низов ть |
вз имодействие и о мен д нными, поток м вовсе не тре уется о р щ ться к ОС, им дост точно использов ть о щую п мять — один поток з писыв ет д нные, дру ой чит ет их. С дру ой стороны, потоки р зных процессов по-
прежнему хорошо з щищены дру от дру .
т к, мультипро р ммиров ние олее эффективно н уровне потоков,
не процессов. К ждый поток имеет со ственный счетчик ком нд и стек. З д ч ,
оформленн я в виде нескольких потоков в р мк х одно о процесс , может ыть
выполнен ыстрее з счет псевдоп р ллельно о (или п р ллельно о в
мультипроцессорной системе) выполнения ее отдельных ч стей. Н пример,
если электронн я т лиц ыл р зр от н с учетом возможностей
мно опоточной о р отки, то пользов тель может з просить пересчет свое о
р оче о лист |
и одновременно продолж ть з полнять |
т |
лицу. Осо енно |
|||||
эффективно |
можно |
использов ть мно опоточность |
для |
выполнения |
||||
р спределенных |
приложений, |
н пример |
мно опоточный |
сервер может |
||||
п р ллельно выполнять з просы ср зу нескольких клиентов. |
|
|
||||||
спользов ние потоков связ но не только со стремлением повысить |
||||||||
производительность системы з |
счет п р ллельных вычислений, но и с целью |
|||||||
созд ния |
олее |
чит |
ельных, |
ло ичных |
про р мм. Введение |
нескольких |
потоков выполнения упрощ ет про р ммиров ние. Н пример, в з д ч х тип
«пис тель-чит тель» один поток выполняет з пись в |
уфер, дру ой считыв ет |
з писи из не о. Поскольку они р зделяют о щий |
уфер, не стоит их дел ть |
отдельными процесс ми. Дру ой пример использов ния потоков — упр вление си н л ми, т кими к к прерыв ние с кл ви туры (del или break). Вместо
о р отки си н л прерыв ния один поток н зн ч ется для постоянно о
ожид ния поступления си н лов. Т ким о р зом, использов ние потоков может сокр тить нео ходимость в прерыв ниях пользов тельско о уровня. В этих
пример х не столь в жно п р ллельное выполнение, сколь в жн |
ясность |
|
про р ммы. |
|
|
Н и ольший эффект от введения мно опоточной о р |
отки дости ется |
|
в мультипроцессорных систем х, в которых потоки, |
в том |
числе и |
прин длеж щие одному процессу, мо ут выполняться н р зных процессор х действительно п р ллельно ( не псевдоп р ллельно).
5.4 Операции над процессами
Подсистем |
Упр вление процессом выполняет опер ции н д |
процесс ми: |
|
1. Созд ние: |
|
-созд ние опис теля процесс ;
-включение е о в очередь;
-выделение процессу н ч льных ресурсов.
2. Уничтожение (уд ление е о из системы. Ресурсы возвр щ ются системе, имя процесс уд ляется из списк , лок упр вления процессом осво ожд ется);
3.З пуск;
4.Блокировк .
5.Приост новк .
6.Возо новление,
7.зменение приоритет процесс (р от с очередями).
Созд ть процесс — это прежде все о озн ч ет созд ть опис тель процесс , в к честве которо о выступ ет одн или несколько информ ционных структур, содерж щих все сведения о процессе,, нео ходимые опер ционной системе для упр вления им. В число т ких сведений мо ут входить, н пример,
идентифик тор процесс , д нные о р сположении в п мяти исполняемо о
модуля, степень привиле иров нности процесс |
(приоритет и пр в |
доступ ) и |
|||||||||||||||
т. п. Пример ми опис телей процесс |
являются |
лок упр вления з д чей (ТСВ |
|||||||||||||||
— Task Control Block) в OS/360, упр вляющий |
лок процесс |
(РСВ — Process |
|||||||||||||||
Control Block) в OS/2, дескриптор процесс |
в UNIX, о ъект-процесс (object- |
||||||||||||||||
process) в Windows NT. |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Созд ние опис теля процесс зн менует со ой появление в системе еще |
|||||||||||||||||
одно о претендент н |
вычислительные ресурсы. Н чин я с это о момент |
при |
|||||||||||||||
р спределении ресурсов ОС должн |
приним ть во |
вним ние |
потре ности |
||||||||||||||
ново о процесс . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Созд ние |
процесс |
включ ет |
з |
рузку |
кодов |
и |
д нных |
исполняемой |
|||||||||
про р ммы д нно о процесс с диск в опер тивную п мять. |
|
|
|
|
|||||||||||||
При |
упр влении процесс ми |
опер ционн я систем |
использует дв |
||||||||||||||
основных тип |
информ ционных структур: |
дескриптор процесс |
|
и контекст |
|||||||||||||
процесс . |
Дескриптор |
процесс |
содержит |
т кую информ цию |
о процессе, |
||||||||||||
котор я |
нео ходим |
ядру в течение |
все о |
жизненно о |
цикл |
процесс |
|||||||||||
нез висимо |
от |
то о, |
н ходится |
он |
в |
ктивном или п ссивном |
состоянии, |
||||||||||
н ходится |
о р з |
процесс |
в опер тивной |
п мяти или |
вы ружен н |
диск. |
|||||||||||
(О р зом процесс |
н зыв ется совокупность е о кодов и д нных.) |
|
|
|
|||||||||||||
Дескрипторы отдельных процессов о ъединены в список, о р зующий |
|||||||||||||||||
т лицу процессов. П мять для т |
лицы процессов отводится дин мически в |
||||||||||||||||
о л сти ядр . Н |
|
основ нии информ ции, содерж щейся в т |
лице процессов, |
||||||||||||||
опер ционн я |
систем |
осуществляет |
пл ниров ние |
и |
синхрониз цию |
||||||||||||
процессов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дескриптор содержит следующую информ цию:
состояние процесс ;
р сположение о р з процесс в опер тивной п мяти и н диске (о р зом
процесс н зыв ется совокупность е о кодов и д нных);
|
зн чение отдельных сост вляющих приоритет , т кже о е о ито овом |
зн чении — ло льном приоритете; |
|
|
идентифик тор пользов теля, созд вше о процесс; |
|
информ ция о родственных процесс х; |
|
информ ция о со ытиях, осуществления которых ожид ет д нный процесс; |
|
уник льный идентифик тор процесс ; |
|
о л сть сохр нения ре истров; |
|
ук з тели выд нных процессу ресурсов. |
Контекст процесс содержит менее опер тивную, но олее о ъемную ч сть информ ции о процессе, нео ходимую для возо новления выполнения
процесс с прерв нно о мест :
|
содержимое ре истров процессор и про р ммно о счетчик ; |
|
коды оши ок выполняемых процессором системных вызовов; |
|
информ цию о о всех открытых д нным процессом ф йл х и |
нез вершенных опер циях ввод -вывод ; |
|
|
режим р оты процессор . |
5.5 Планирование и диспетчеризация потоков
Н протяжении существов ния процесс выполнение е о потоков может
ыть мно окр тно прерв но и продолжено. (В системе, не поддержив ющей потоки, все ск з нное ниже о пл ниров нии и диспетчериз ции относится к
процессу в целом.) |
|
|
|
Переход от выполнения одно о поток |
к дру ому осуществляется в |
||
результ те пл ниров ния и диспетчериз ции. Р |
от по определению то о, |
в |
|
к кой момент нео ходимо прерв ть выполнение текуще о |
ктивно о поток |
и |
|
к кому потоку предост вить возможность |
выполняться, н зыв ется |
||
пл ниров нием. Пл ниров ние потоков осуществляется н |
основе информ ции, |
хр нящейся в опис телях процессов и потоков. При пл ниров нии мо ут приним ться во вним ние приоритет потоков, время их ожид ния в очереди,
н копленное время выполнения, интенсивность о р щений к вводу-выводу и дру ие ф кторы. ОС пл нирует выполнение потоков нез висимо от то о,
прин длеж т ли они одному или р зным процесс м. Т к, н пример, после
выполнения поток некоторо о процесс ОС может вы р ть для выполнения дру ой поток то о же процесс или же н зн чить к выполнению поток дру о о процесс .
Пл ниров ние потоков, по существу, включ ет в се я решение двух
з д ч:
определение момент времени для смены текуще о ктивно о поток ;
вы ор для выполнения поток из очереди отовых потоков.
Существует множество р зличных л оритмов пл ниров ния потоков, |
|||
по-своему реш ющих к ждую из |
приведенных выше з д ч. Ал оритмы |
||
пл ниров ния мо ут преследов ть р зличные |
цели и о еспечив ть р зное |
||
к чество мультипро р ммиров ния. |
Н пример, |
в одном случ е вы ир ется |
|
т кой л оритм |
пл ниров ния, при |
котором |
р нтируется, что ни один |
поток/процесс не |
удет з ним ть процессор дольше определенно о времени, в |
дру ом случ е целью является м ксим льно |
ыстрое выполнение «коротких» |
||||||||||||
з д ч, |
в |
третьем случ е |
— преимущественное |
пр во з нять |
процессор |
||||||||
получ ют потоки интер ктивных приложений. |
менно осо енности ре лиз ции |
||||||||||||
пл ниров ния |
потоков |
в |
н и ольшей |
степени |
определяют |
специфику |
|||||||
опер ционной |
системы, |
в ч стности, является |
ли он |
системой п кетной |
|||||||||
о р отки, системой р зделения времени или системой ре льно о времени. |
|||||||||||||
|
В |
ольшинстве |
опер ционных систем |
универс льно о |
н зн чения |
||||||||
пл ниров ние |
осуществляется |
дин мически |
(on-line), то есть решения |
||||||||||
приним ются во время р оты системы н |
основе |
н лиз |
текущей ситу ции. |
||||||||||
ОС р |
от ет в условиях неопределенности — потоки и процессы появляются в |
||||||||||||
случ йные |
моменты |
времени |
и |
т кже |
непредск зуемо з верш ются. |
||||||||
Дин мические пл нировщики мо ут |
и ко приспос |
лив ться к изменяющейся |
ситу ции и не используют ник ких предположений о мультипро р ммной смеси. Для то о что ы опер тивно н йти в условиях т кой неопределенности оптим льный в некотором смысле порядок выполнения з д ч, опер ционн я систем должн з тр чив ть зн чительные усилия.
Дру ой тип пл ниров ния — ст тический — может ыть использов н в специ лизиров нных систем х, в которых весь н ор одновременно выполняемых з д ч определен з р нее, н пример в систем х ре льно о времени. Пл нировщик н зыв ется ст тическим (или предв рительным
пл нировщиком), если он приним ет решения о пл ниров нии не во время
р оты системы, |
з р нее (off-line). Соотношение между дин мическим и |
||||||||||
ст тическим пл нировщик ми |
н ло ично соотношению между диспетчером |
||||||||||
железной доро и, |
который |
пропуск ет |
поезд |
стро о |
по |
предв рительно |
|||||
сост вленному р спис нию, и ре улировщиком н |
перекрестке втомо ильных |
||||||||||
доро , |
не |
осн щенном |
светофор ми, |
который |
реш ет, |
к кую |
м шину |
||||
ост новить, |
к кую пропустить, в з висимости от ситу ции н |
перекрестке. |
|||||||||
|
Результ том |
р оты |
ст тическо о |
пл нировщик |
является |
т лиц , |
|||||
н зыв ем я |
р спис нием, |
в |
которой ук зыв ется, к кому |
потоку/процессу, |
|||||||
ко д |
и н к кое время должен |
ыть предост влен процессор. Для построения |
р спис ния пл нировщику нужны к к можно олее полные предв рительные зн ния о х р ктеристик х н ор з д ч, н пример о м ксим льном времени
выполнения к ждой з д чи, о р ничениях предшествов ния, о р ничениях по вз имному исключению, предельным срок м и т. д.
После то о к к |
р спис ние |
отово, оно |
может использов ться |
|
опер ционной системой для переключения потоков и процессов. |
При этом |
|||
н кл дные р сходы ОС н |
исполнение р спис ния ок зыв ются зн чительно |
|||
меньшими, чем при дин мическом |
пл ниров нии, |
и сводятся |
лишь к |
|
диспетчериз ции потоков/процессов. |
|
|
|
Диспетчериз ция з ключ ется в ре лиз ции н йденно о в результ те
пл ниров ния (дин мическо о или ст тистическо о) решения, то есть в переключении процессор с одно о поток н дру ой. Прежде чем прерв ть
выполнение поток , ОС з помин ет е о контекст, с тем что ы впоследствии использов ть эту информ цию для последующе о возо новления выполнения
д нно о поток . Контекст отр ж ет, во-первых, состояние |
пп р туры |
компьютер в момент прерыв ния поток : зн чение счетчик |
ком нд, |