Планиране на ниско ниво


Средствата на това ниво определят кой от готовите процеси да бъде избран за изпълнение и за какъв интервал от време процесът да разполага с процесора, след което предоставят процесора на избрания процес. За разлика от планирането на високо ниво, което се изпълнява еднократно от гледна точка на всяко задание (съответно иегова стъпка), планирането на ниско ниво се изпълнява постоянно - един процес може да получи процесора многократно.
Ново разпределение на процесора е принципно възможно, когато: изпълняваният процес доброволно се отказва от продължаването на своята работа (изпълнил се е или се е самоблокирал, например пред входно-изходна операция) или се блокира от системен механизъм; в резултат на настьпило събитие блокиран процес е преминал в състояние на готовност; процесът е изменил приоритета си (в приоритетните системи) или е постъпил по-високоприоритетен процес; изменен е броят на процесорите (ако е многопроцесорна система).
За да не се допуске монополизиране на процесора от потребителските програми, в някои ОС е предвиден механизъм за отнемане на процесора. ОС установява часовник или интервален таймер, за да се генерира прекъсване в определен момент (или след изтичане на интервал от време), след което се избира нов процес за изпълнение. Тези прекъсвания са важен източник за блокиране, пробуждане (разблокиране) и гарантират времето за отговор на интерактивния потребител, предпазват системата от зацикляне на потребителска програма, позволяват на процесите да реагират на събития, зависещи от времето. Процеси, които работят периодично, също зависят от прекъсванията по време. За управлението на зависещите от времето задачи е удобно да се организира списък на процесите, блокирани пред ресурса „време" и подредени по времето за пробуждане.
Структура на планиращата програма
В повечето ОС горните функции се изпълняват от един модул, наречен програма за планиране на ниско ниво, програма за планиране на процесите, програма за планиране на процесора и др. Обаче в някои системи (например за реално време) планиращите функции са реализирани на две или три нива, като се прави разлика между планиране и диспечиране. На най-ниското ниво (най-често извикваното) се разполага кратка програма-диспечер, която само взема избран процес от опашката и му предоставя процесора. При това тя превключва контекста, превключва режима на процесора и предава управлението в програмата на новия процес, възобновявайки изпълнението му. На следващото ниво е програма за краткосрочно планиране, която се извиква, за да включи готов процес в опашката след евентуално анализиране на състоянието на процеса На най-високото ниво е програма за дългосрочно планиране, която се извиква най-рядко и която прави сложни изменения в състоянията на процесите (например изчисление на приоритета).
По-често се използват две нива, като планиращата програма включва функциите на горните две нива, а диспечерът превключва процесора.
Възможни са два варианта на използване на планираща програма. Първият от тях, известен под името споделяна планираща програма, предполага поместване на програмата (и ядрото) в адресното пространство на всички процеси и изпълнението и в състава на произволен процес. Извикването на планиращата програма става чрез обръщане към подпрограма, което е косвен резултат от изпълнение на операция на ядрото. Този метод позволява планиране, независещо от броя на процесите в системата. Освен това вески процес може да използва собствена стратегия за планиране.
Алтернативният метод използва централизирана планираща програма, единна за всички процеси и вградена в ядрото. Тя осъществява общесистемно делене на времето на процесора. Концептуално планиращата програма може да се разглежда като отделен процес, комуто се предана управлението всеки път, когато процес се блокира или пробужда.
Интересна ситуация възниква, когато няма никакви готови процеси. Едно решение е планиращата програма да цикли, докато някакъв процес не стане готов (след настъпване на прекъсване). В приоритетните системи обикновено съществува „празен" цикличен процес с най-нисък приоритет. В някои процесори е предвидено състояние „очакване на прекъсване".
Критерии за производителност
При планирането на процесора могат да се отчитат редица показатели за производителност като: добро използване на ресурсите и по-специално на процесора; висока пропускателна способност (брой завършени процеси за единица време); малко време за чакане (в опашката на готовите процеси); разумно време за престой (сума от времената, които процес прекарва в опашката на готовите процеси, в опашката за памет, в изпълнение от процесора и на входно-изходни операции, т.е. интервала време от постъпването до завършването на процеса); време за отговор (при интерактивните системи вместо време за престой е no-важно времето от въвеждане на заявка до първи отговор). Допълнително ограничение е, че нито едно задание не трябва да чака безкрайно дълго за изпълнение.
След като бъде избран критерий за сравнение на различните дисциплини за планиране, обикновено се търси неговата оптимизация. Желателно е да се получат максимално използване на процесора и максимална пропускателна способност, както и да се минимизират времената за чакане, престой и отговор. Обикновено се имат предвид средните стойкости (за процес) или общите средни стойности (за всички процеси). Трябва да се отбележи, че не винаги е важна средната стойност. Например в интерактивните системи (като тези с времеделене) е no-важно да се минимизира дисперсията на времето за отговор вместо неговата средна стойност, т.е. системата да има предсказуемо време за отговор. Оценката може да се извърши чрез теорията на опашките, аналитично или чрез симулация.
Приоритети и изместване
Статични и динамични приоритети. Обикновено дисциплините за планиране в средните и големи ОС използват приоритети (приоритетни нива), които дават статичната или динамичната стойност на' относителната важност на процесите. Статичните приоритети се определят при създаването на процесите и остават постоянны през времето на съществуването им. Те се определят по различии начини: процесът получава приоритета на пораждащото го задание (използва се т.нар. външен приоритет, избран от потребителя); приоритетът се изчислява въз основа на очакваните заявки за ресурси (обем памет, процесорно време, входно-изходни устройства) - тук може да се включи и външният приоритет; приоритетът се определя чрез оценка на времето за изпълнение на заданията (отдава се предпочитание на кратките задания); приоритетът се основава на типа на процеса, независимо от заеманите от него ресурси (интерактивен, пакетен, за реално време).
Времето за реакция, както и производителността на компютьра, могат да се управляват no-точно, когато приоритетите на процесите могат да се изменят по време на съществуването им, като се отчита тяхното поведение в системата. Тази черта е особено ценна за системите с времеделене, Процесорното време, получено от процеса последния път, ресурсите, намиращи се на разположение на процеса в даден момент, общото време на чакане, обемът на последните входно-изходни операции, общото време на престой в системата и др., могат да бъдат взети предвид при изчисляването на динамичните приоритети. Тъй като тези характеристики се менят постоянно, приоритетите на процесите могат да бъдат многократно изчислявани по време на съществуването му.
Може да се въведе и понятието «купени приоритети». ОС може да предоставя преимуществено обслужване за потребители, които се нуждаят от срочно изпълнение на заданията, разбира се, с допълнително заплащане.
Много системни процеси се изпълняват подобно на потребителските задания. За някои от тях са необходими специални привилегии. Затова правилата за планиране трябва да отчитат съществуването на привилегировани процеси.
Изместване. Говори се за дисциплина за планиране без изместване (nonpreemptive scheduling), когато не може да се отнеме процесор от изпълняван процес. В противен случай дисциплината е с изместване (preemptive).
Между тези две крайности лежи избирателното изместване. Например с вески процес може да се свърже двойка битове, които определят: 1) дали процесът може да измести друг процес, и 2) дали процесът може да бъде изместен от друг процес.
Изместването е един от начините за гарантиране, че важни процеси ще получат незабавно внимание. Например в системите за реално време пропадането на важен сигнал може да доведе до катастрофални последствия. В интерактивните системи то гарантира приемливо време за отговор.
От друга страна, планирането без изместване е просто за реализация и е подходящо в специализирани системи, където процес-родител контролира изпълнението на децата си и може да чака тяхното пълно завършване.
Дисциплини за планиране
Те включват начина за избор на процес от опашката на готовите процеси и за определяне на интервала от време, през който процесът разполага с процесора. Съществуват много алгоритми за планиране. Тук ще бъдат разгледани най-известните класове от дисциплини, обхващащи по-голямата част от проблемите на планиране на процесите и които могат да се обобщят за много от проблемите за разпределението на другите ресурси.
Първи дошъл - първи обслужен (FCFS, FIFO). Това е най-простата дисциплина (без изместване), при която процесорът се предоставя на процесите в реда на постъпването им в опашката на готовите процеси. Този принцип може да се смята за справедлив, но от друга страна, дългите процеси заставят кратките да чакат, т.е. по-важните да чакат по-маловажните. Възможно е да се получи ефектът на конвоя, където много процеси чакат един голям да освободи процесора, което води до по-ниско използване на процесор и устройства, в сравнение с обратния случай (кратките да са първи). При тази дисциплина производителността често е ниска, а среднего време за чакане най-общо не е минимално и може да варира значително. Не се препоръчва за интерактивни системи, тъй като не може да гарантира приемливо време за отговор. В съвременните ОС този принцип рядко се използва сам - по-често се комбинира с други дисциплини.
Най-краткото задание-първо (SJF). Дисциплината е известна още като най-краткият процес - следващ (SPN), т.е. процесът с най-краткото предполагаемо време за обработка е следващият избран. Тази дисциплина снижава в сравнение с FCFS общото средно време за чакане, като средното време за чакане на кратките процеси е по-малко, отколкото на дългите процеси, но това се постига с голяма цена. Дисперсията на времето за чакане нараства, оттук намалява предсказуемостта на обслужването (за много потребители предсказуемостта е почти толкова важна, колкото и скоростта на изпълнение). Тъй като се отдава предпочитание на кратките процеси, те завършват максимално бързо, от което се намалява броят на чакащите процеси в опашката, оттук и времето за чакане на дългите процеси не се увеличава значително.
Дисциплината SJF се реализира без изместване. Възможна е реализация с изместване, като изпълняваният процес се прекъсва вески път, когато в опашката на готовите процеси се появи по-кратьк процес (нов или деблокиран). От това още повече печелят кратките процеси. Но от друга страна, е неразумно да се отнема процесорът от почти завършил процес, заради друг с по-малка обща заявка за време, но изискващ повече време за завършване.
Очевиден проблем е точната оценка на времето за изпълнение. Обикновено се разчита на информацията от потребителя. За да не злоупотребяват потребителите с малки оценки, вземат се мерки, като допълнително заплащане за просрочено време или замразяване на заданието.
Алгоритъмът SJF е подходящ за планиране на пакетни задания, особено на високо ниво, като показва оптималност, когато всички задания едновременно се намират в системата. Той не е удобен за планиране на ниско ниво (особено на интерактивни процеси), тьй като се базира на потребителската оценка на времето за изпълнение (обикновено неточна).
Рискът с дисциплината SJF е възможността от безкрайно отлагане на по-дълги процеси, когато има постоянен приток на no-кратки процеси. От друга страна, липсата на изместване може да препятства изпълнението на някои процеси. Това я прави не особено желана за времеделене.
Най-кратко оставащо време (SRT). По-разумно процесорът може да се разпределя по най-кратко оставащо време. „Оставащо време" е разликата между времето, заявено от потребителя и времето, което вече е използвано от процеса (измерва се от системата с часовник). При SRT кратките процеси още повече са облагодетелствани за сметка на дългите. По-дългите задания даже ще имат по-дълго време за чакане и по-голяма дисперсия в сравнение с SJF.
Тази дисциплина се смята за аналог на SJF, но с изместване. Може да се покаже, че SRT теоретично осигурява минималното възможно общо средно време за чакане. Възможно е обаче поради по-големите средни разходи, свързани с дисциплината, в някои случаи по-добри показатели да има SJF.
Най-високият приоритет - първи (HPF). Процесорът се предоставя на процеса с най-висок приоритет. Планирането може да се реализира с или без изместване. При реализацията на правилото HPF трябва да се реши въз основа на какви характеристики ще се определя приоритетът, как ще се организира опашката на готовите процеси (при постъпване на нов процес ще се преподрежда ли по приоритети или не), ще се използва ли изместване на процесите. Дисциплината SJF може да се разглежда като йзползваща приоритет, който е обратнопропорционален на предполагаемото време за обслужване.
Друга стратегия, използваща информацията, получена по време на пребиваването на процеса в системата, се дава от правилата на Клейнрок. В тях се прилага линейно нарастващ приоритет. При влизане в системата процесът получава някакъв приоритет, който нараства с коефициент а по време на чакане в опашката на готовите процеси и с коефициент b по време на изпълнение. В зависимост от избора на а и b се получават различии правила. Ако 0 < а <= b, опашката се обслужва в ред FCFS. Ако 0 > b >= а, получава се ред LCFS. Могат да се измислят много варианти, например а и b да зависят от външния приоритет, т.е. от загубите, който потребителите смятат за приемливи. Могат да се изберат и нелинейни функции. Може да се направи така, че приоритетът да намалява по линеен закон с времето. Когато достигне някое максимално време, приоритетът скача до някаква голяма стойност. Това благоприятства кратките процеси, като при това се спазва условието, че нито един процес няма да чака безкрайно дълго. По подобен начин може да се допълни правилото SJF, така че дългите процеси след известно време в система получават допълнителен приоритет.
Следваща дисциплина, съкращаваща средното време на чакане, предоставя no-висок приоритет на процеси, който с голяма вероятност използват малко процесорно време. Например това могат да са процесите с интензивен вход/ изход. Такава интензивност лесно се определя, тъй като процесът се блокира по време на входа/изхода. Тогава опашката може да бъде подредена по нарастване на интервалите от време от момента на последната команда за вход/изход, т.е. предимство се дава на процеси с голям обем на входно-изходните операции. Така се натоварва входно-изходната система, тъй като подобни процеси лесно получават процесора. Използването на подобна опашка не позволява да се отчитат и други фактори. Затова, когато се иска да се предостави висок приоритет на процеси с интензивен вход/изход, се прилагат дисциплини с повече опашки.
Интересна дисциплина, приложена например в IBМ 360, ЕС ЕИМ, UNIVAC, използва т.нар. политическо планиране. Потребителският процес получава определено число услуги, зависещи от „класа", към който принадлежи процеса. Приоритетьт на процеса се изменя като функция на разликата между услугата, обещана на потребителя, и услугата, която фактически получава. Реализацията на функцията може да е статична или динамична. Например в IBM 360 (ЕС ЕИМ) се използва статична функция, която разпределя потребителите по класове, изхождайки от заявките за ресурси. В UNIVAC 1100 потребителите се преместват по приоритетните нива в зависимост от изразходваното от тях време и използването на приоритетните ресурси.
Главният проблем с приоритетните дисциплини е безкрайното отлагане (вече дискутирано в гл. III). Процесите с нисък приоритет е възможно да чакат неопределено дълго за процесора. Подобии процеси могат да се изпълнят, когато системата е свободна или, ако тя се повреди, те могат да се загубят. Друго решение е стареенето, където приоритетите се повишават с времето.
Накрая трябва да се посочи, че правилото HPF дава желаните резултати, осигурявайки добро обслужване на повечето процеси. Обаче, подобна дисциплина е неприемлива в някои ОС, например с времеделене, тъй като процесите с нисък приоритет са заставени да чакат дълго.
Кръгова (циклична) дисциплина (RR). Този планиращ алгоритъм е специално разработен за системите с времеделене. Първият процес от опашката на готовите процеси получава процесора за фиксиран квант от време с продължителност k единици процесорно време, след което отива (ако не се самоблокира) накрая на опашката. После процесорът се разпределя на следващия процес и т.н. Опашката е от тип FCFS - новите процеси се записват накрая на опашката, а алгоритъмът е с изместване. Тази форма на обслужване облагодетелства кратките процеси (те завършват по-бързо), но без прекомерно ощетяване на дългите процеси. Поради разходи по превключването на контекста общото средне време за чакане може да е по-дълго в сравнение с FCFS. Но, ако дисперсията на времената за изпълнение на процесите е голяма, общото средно време за чакане може да е по-малко.
Важни параметри са дължината на опашката (определя скоростта на придвижване на процесите) и продължителността на кванта, от които зависи производителността. При големи стойности на кванта изпълнението на процес може да се забави - при поява или при деблокиране на процеси, или да се ускори - при блокиране на процеси. С нарастването на кванта се увеличава и времето за чакане на следващ квант. Горните ефекти са неприемливи за интерактивните системи. В екстремния случай, когато квантьт е много голям, дисциплината фактически се изражда в FCFS. С намаляването на кванта се подобрява обслужването на кратките процеси. Но ако квантът от време е много кратък, времето за превключването на контекста нараства и може да превиши полезното време.
Най-добро общо средно време за престой (време за отговор) може да се получи, ако повечето процеси свършват поредното си изчисление (след което например заявяват входно-изходна операция) в рамките на един квант. Очевидно е, че стойността на кванта е различна в различните системи, а зависи и от натоварването на системата. Затова се избира приемлива стойност на кванта -обикновено тя лежи в интервала от 10 до 300 ms.
Съществуват много разновидности на дисциплината RR. В ОС, работещи с много потребители в режим на времеделене, е важно времето за отговор. То може да се осигури например, като планиращата програма поддържа постоянно време на пълното обхождане на опашката на готовите процеси (понякога се казва, че дисциплината е ориентирана към цикъл). Времето за цикъл на опашката се избира равно на максималното допустимо време за отговор, а продължителността на кванта се изчислява динамично в началото на всеки кръг на обхождане на опашката, като се раздели времето на цикъла с броя на процесите. Новопостъпващите процеси се задържат до завършването на цикъла, след което се записват в опашката. Вариантно решение е постъпващите процеси да се записват в друга опашка, която започва да се изпълнява след приключване на цикъла на първата.
Друга дисциплина използва отместване, при което дължината на кванта зависи от външния приоритет на процеса (могат да се приложат и други съставни на приоритета - интензивност на входа/изхода, очаквано време за обслужване, разпределение на ресурсите) или дисциплини, използващи правилата на Клейнрок и др.
В някои системи се отчита следният проблем. Ако процес се блокира поради входно-изходна операция, след завършването й къде трябва да се включи - в началото или в края на опашката? Ако процесът се записва в началото, входно-изходните устройства максимално се натоварват, но ако процес използва бързи устройства, той ще монополизира процесора. С включването му в края това се предотвратява, но се снижава използването на периферните устройства. Един начин за справедливо решение е да се отчита колко е действителната дължина на използвания квант и в зависимост от нея да се включва отпред или отзад в опашката.
Дисциплини с няколко опашки. Друг клас алгоритми може да се получи за ситуации, в които процесите могат лесно да се класифицират в групи. Например, процесите могат да се разделят на интерактивни (водещи) и пакетни (фонови). Тези два типа имат различии изисквания към времената за отговор. Също така системните процеси могат да бъдат в отделна група с най-висок приоритет. Реализацията се свежда до разбиване на опашката на готовите процеси на отделни опашки за всеки клас. След като процес се запише в определена опашка, той не може да я сменя. Всяка опашка има собствен алгоритъм за планиране - RR, FCFS. Допълнително планиране трябва да има между опашките - обикновено те имат фиксиран приоритет и се избира процес за изпълнение от непразна опашка с най-висок приоритет. Друга възможност е да се дели времето между опашките, т.е. всяка опашка получава порция процесорно време, което се разпределя между процесите в опашката.
В съвременните системи, които работят в няколко режима, някои процеси могат динамично да променят опашките.
Опашки с обратна връзка (FB). Това е един от най-съвършените алгоритми за планиране, използвани в момента. При този клас планиращи алгоритми се използват п опашки (подопашки), като всяка се обслужва по следния начин. Нов процес, който постъпва в опашката на готовите процеси, попада в първата опашка. След като получи квант процесорно време, той попада във втората опашка, след още един квант в третата и т.н. Опашките работят по правилото FCFS. Ако попадне в опашката с най-голям номер, процесът остава в нея до окончателното си завършване. Времето на процесора се планира така, че той винаги обслужва непразна опашка с най-малък номер. Новопостъпилият процес неявно получава висок приоритет и се изпълнява подред в течение на толкова кванта време, колкото успее да получи до идването на следващия процес, но не повече от предидущия. Изпълняваният процес се измества, ако постъпи нов процес в опашка с по-малък номер. В много системи квантът от време се увеличава с нарастването на номера на опашката.
Дисциплината позволява добро обслужване на кратките и на ограничените по вход/изход задания (с интензивен вход/изход), което я прави удобна за обслужване на интерактивни потребители, независимо дали има в системата пакетни задания. Действително, процес с интензивен вход/изход постъпва в опашката с най-висок приоритет, бързо получава процесора и в повечето случаи успява да заяви входно-изходна операция още по време на първия квант (след което излиза от опашката, получил действително приоритетно обслужване). Така се осигурява добро натоварване на периферните устройства и малко време за отговор. Подобно е положението с кратките процеси, тъй като те се обслужват, докато се намират във високо приоритетните опашки и бързо получават процесора.
Какво е положението с дългите задания, ограничени по процесор (с дълги изчисления)? Първоначално те ще получават процесора, намирайки се в по-високо приоритетните опашки. Преминавайки в нископриоритетните опашки, те ще получават все по-бавно процесора (но с по-голям квант), тъй като приоритет имат новопостьпващите процеси (особено ограничените по вход/ изход). Накрая могат да попаднат в последната опашка, където ще стоят докато не се изпълнят.
Описаният механизъм позволява динамично да се определи големината на процесите, като се изхожда от нуждата им за процесорно време,(оттук и да се разделят в категории). Възможно е вески път, когато процес излезе от опашките, да се отбележи в коя опашка е бил и при постъпване отново в системата опашки да се помести направо в същата опашка. По този начин той няма да пречи на кратките или на ограничените по вход/изход, включени в по-високо приоритетните опашки. Планиращата програма използва евристичното правило: поведението на процеса в близкою минало служи за определяне на поведението му в близко бъдеще (процесът изисква допълнително обслужване с продължителност най-малко такава, каквато вече е получил).
Възможна е и no-сложна класификация, като се реагира на изменението на характера на процеса. Например, вместо да използва интензивни изчисления, процесът започва да използва интензивно входа/изхода (при което ще освобождава предварително процесора). След като установи този факт, планиращата програма ще позволи на процеса да се придвижва в опашка с по-висок приоритет всеки път, когато доброволно освободи процесора, преди изтичане на кванта му.
Съществуват много други варианти на дисциплината FB. Един начин да се намали броят на опашките е, вместо да мени опашката след получаването на всеки квант, процесът да преминава през всяка опашка определен брой пъти, след което да постъпи в следващата, на по-ниско приоритетно ниво, опашка. При това опашките, подредени по правилото FB, се обслужват по правилото RR вътре във всяка опашка, по което се разпределя и времето на процесора между опашките. Възможно е да се използват както простата, така и по-сложните кръгови дисциплини, които отчитат приоритета на процесите. Изборът се определя от различните изисквания, на които трябва да отговаря обслужването на процесите, като преимуществено обслужване на кратките задания, баланс в обслужването на кратките и дългите задания, натоварване на различните ресурси и др. Например като се разделят опашките на водещи и фонови, може да се организира смес от интерактивни и пакетни задания, при което пакетните задания се разполагат в опашките с no-горен номер. Трябва да се отбележи, че в системите за реално време и в информационните системи, интервалът за обслужване може да бъде определен така, че всяка заявка да се обработи за един интервал от време. Правилата за преместване в подопашките понякога са постоянни, но могат и да бъдат параметризирани.
Опашките с обратна връзка са пример за възможностите за реализация на адаптивни механизми, реагиращи на измененията в поведението на системата. Както беше посочено, основната идея е да се изграждат прогнози за бъдещето въз основа на информацията от предишните етапи на обработка на заданията.Тази идея е намерила приложение при реализацията на динамичните стратегии за управление на ресурсите.
Гаранции за обслужване. По-строги изисквания към системата, отколкото просто гарантирано завършване на процесите, могат да бъдат завършване в указан срок или в указан интервал от време. Подобии стратегии са частен случай на стратегиите с отдаване на предпочитание на привилегировани потребители.
Подобно планиране може да се реализира лесно, ако опашката се подреди в реда на нарастване на ограниченията им по време и им се отделя необходимото време. Основният недостатък е, че един процес може да бъде обслужван за чужда сметка по-бързо, отколкото му е необходимо. Този метод е удобен за приложение в системите за реално време, където има точни срокове за завършване.
Друг подход е, вместо процес да се изпълнява без изместване, процесорът да му се предоставя многократно в продължение на някакво време. Гарантирано обслужване може да се реализира по следните начини:
- Да се отделя минимална част от процесорното време на клас процеси, ако дори един от тях е готов (например 10% от вески 10 ms на процеси за реално време, 40% от вески 20 ms - на интерактивните и т.н).
- Да се отделя минимална част от процесорното време на конкретен готов процес. Тук може да се изхожда от платените приоритети.
- Да се отделя толкова процесорно време на процес, колкото му трябва, за да изпълни необходимите действия в срок. Този начин е приложим за пакетни процеси.
С помощта на първия начин могат да се осигурят другите два. Вторият е частен случай на първия, като класът включва само един процес. Третият се свежда до втория, отделяйки на процес процент от времето, равно на отношението на заявеното време към разликата между времето на появяването на процеса в системата и времето, когато процесът трябва да завърши, отчитайки при това времето на блокирано състояние. ОС TENEX използва първия начин, а ЕХЕС8 за Univac - третия.

Коментари: