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

Планиране в пакетните системи
Планирането на високо ниво (планирането на заданията) е свързано предимно с пакетния режим на работа. То се изпълнява от системен механизъм, който избира задание от множеството постъпили в системата задания, създава процес за неговото изпълнение и го записва в опашката за обслужване от процесора (т.е. заданията стават процеси или групи от процеси).
Програмата за системен вход чете пакета задания от системното устройство (чрез входния спулинг) и формира вътрешна системна опашка от задания. Едновременно с четенето се интерпретират операторите на езика за управление и се създават съответни управляващи блокове и таблици. Те служат за изходна информация при планирането. Програмата за системен вход може да изпълнява и други действия - например в много ОС тя преобразува входния поток в някаква вътрешна форма, като модифицира или разширява заданията въз основа на зададените в описанията им системни процедури.
 Програмата за планиране на високо ниво преглежда опашката и избира задание за изпълнение, като отчита текущото състояние и свойствата на наличите процеси в системата и съпоставя характеристиките на заданията в опашката.
Планиращата програма управлява нивото на мултипрограмиране (броя на процесите в паметта). Когато то е стабилно, средните скорости на пристигане и завършване на заданията са еднакви. Също така е важно да се направи удачен подбор на заданията, за да бъде мултипрограмната смес балансирана и да се натоварват всички компоненти на системата, например да има смес от ограничени по вход/изход и по процесор (т.е. с интензивен вход/изход и с интензивни изчисления) процеси.
Избор на задание. Решението за избор се взема съгласно възприетата в ОС дисциплина на обслужване, която се определя въз основа на някакви критерии, например отчитане на относителен приоритет, на зададените срокове за пускане и за завършване или пък заданията просто се обслужват по реда на постъпване. Възможно е да бъде създаден клас от високоприоритетни задания, които получават необходимите им ресурси преди останалите. Тук трябва да се определи кои задания да бъдат включени в класа. Например в много системи е възприето преимуществено обслужване на кратките задания - колкото е no-кратко едно задание, толкова no-добре трябва да бъде обслужено. Изобщо в основата на всяка приоритетна система може да лежи произволна характеристика, установявана програмно или апаратно. В други случаи приоритетни класове се определят въз основа на интензитета на използване на системните ресурси -процесор, входно-изходни устройства и т.н., или на общите изисквания за ресурси (обем памет, брой устройства и т.н.). Например в някои ранни системи се е препоръчвало да се дава висок приоритет на заданията, активно използващи входно-изходни устройства, а нисък - на заданията, активно използващи процесора. Недостатък на този подход е, че не отчита важността на заданието за потребителя. Известии са и други подходи за избор на дисциплина на обслужване. Често се дава и възможност за параметрично регулиране на дисциплината на обслужване. 
Отделяне на ресурси на етапа на планиране. Обикновено планиращата програма не се занимава с разпределението на процесорното време и каналите за данни, а разпределя входно-изходните устройства, файловете от данни, областите на паметта. Понякога от потребителите се изисква да опишат чрез езика за управление на заданията необходимите им ресурси, при което заданията не се стартират, докато не се освободят заявените за тяхното изпълнение ресурси. Описаният подход за работа означава, че функциите за планиране и разпределение на ресурси са обединени и, че разпределението на ресурси се извършва на етапа на предварителната обработка на заданията. Предимството на подхода е, че осигурява нормално обслужване на заданията през времето на цялостната им обработка. Негов недостатък е, че понякога заданията трябва дълго да чакат получаването на необходимите им ресурси. При това те могат да получат и ресурси, които в действителност не са им необходими. Получавайки ресурси, заданията обикновено ги задържат до окончателното си изпълнение, т.е. излишно се задържат свободни ресурси.
За да се ограничи възможното продължително задържане на заданията, чакащи ресурси, някои системи прилагат етапно разпределение на ресурси. Всички ресурси се разделят на класове и пред всеки клас се организира опашка. Ресурсите не се получават наведнъж, а постепенно, тъй като не е нужно всички ресурси да бъдат достъпни едновременно. На заданията се дават ресурси от даден клас, и след като ги получат, те се записват в опашката пред следващия клас. И този метод има недостатък - заданията могат да задържат ресурси, намирайки се в състоянйе на очакване в някоя от опашките.
Прилага се и друг начин за разпределение на ресурсите - въз основа на динамично изменение на приоритета на заданията. При него приоритетът на заданието се увеличава постепенно при всеки неуспешен опит да получи ресурс, т.е. когато заданието се разглежда, но не се избира. Може да се установи гранична стойност на приоритета и когато дадено задание я достигне, разпределението на ресурси се прекратява, докато не се обслужи заданието. Този метод предпазва от предаване на освобождаващите се ресурси на кратките задания и позволява да се натрупват ресурси. Освен това, възможно е да се въведе и друга, още по-висока стойност на приоритета, при достигането на която от някакво задание се предизвиква извеждане на други задания с цел да се освободят ресурси за потребител, който дълго е в състояние на очакване. Друг подобен подход прилага принципа, при който приоритетът се увеличава с времето. Повече подробности по тези въпроси са дадени в [9, 12, 13, 85, 88].
Отделяне на ресурси по време на изпълнение. Алтернативният принцип за разпределение предполага, че избраното задание получава ресурси едва след като се пусне за изпълнение. Необходимите ресурси се разпределят в резултат от изпълнението на съответни макрокоманди (системни извиквания). В случая работата на планиращата програма е да даде възможност на заданието да участва в спора за ресурси. По този начин системата може да преразпределя освобождаващите се ресурси динамично. Естествено, значително се усложняват функциите на системата, в частност на диспечера.
Комбинирани методи за разпределение на ресурси. Изпfлзват се и комбинирани методи - ресурсите се разделят на класове и се разпределят на различии етапи.
Единица програмна работа. С въпроса за разпределението на ресурсите е тясно свързан въпросът за принципната структура на единицата програмна работа. В някои ОС заданията се разделят на стъпки и ресурсите се разпределят на ниво стъпка вместо на ниво задание, за да се намали вероятният престой на ресурси. Например в ОС ЕС [6] стьпката отговаря на изпълнението на една програма и разпределението на ресурсите може да се осъществи както на ниво задание, така и на ниво стъпка.
Завършване на заданията. Обикновено планиращата програма изпълнява и функциите, свързани със завършването на заданието. Когато пакетен процес завърши, ресурсите му се освобождават, той се унищожава и управлението се предава на планиращата програма. Тя унищожава блоковете за управление на заданието, изважда го от опашката на заданията и формира изходна опашка с данните за печат. Заданието се привежда в състояние на завършване, където, преди да напусне системата, чака за печат на резултатите (изпълнява се от системния изход чрез спулинг). Програмата определя дали вече са се натрупали достатъчно ресурси, за да бъде избрано следващо задание (респ. стъпка на задание). Трябва да се отбележи, че в много ОС функциите на системния вход/ изход и планирането са обединени в един компонент.
И отново за терминологията. Срещат се наименования на планиращата програма, като програма за иницииране и за завършване, инициатор-терминатор, плановик и др., но читателяг трябва да бъде предпазлив относно термина и влаганото в него съдържание за конкретната ОС.
Планиране в системите с времеделене 
В интерактивните системи с времеделене заданията не се записват предварително във вътрешна опашка, откъдето да се избират за изпълнение от планиращата програма. В тези системи задачата на планиращата програма е относително проста - вески път, когато нов потребител иска да влезе в системата, тя взема решение относно неговото допускане и ако са налице необходимите ресурси, създава и привежда в състояние на готовност процес за осъществяване на диалогова връзка между потребителя и системата, В противен случай входът в системата просто се забранява. Понякога броят на потребителите се ограничава от физически ресурси, като обем на памет за съхраняване на информацията относно вески процес и свързания с него терминал. В други системи броят на потребителите нарочно се ограничава, за да не се влоши обслужването им. Ако трябва да се освободи място за нов потребител, възможно е да се вземе решение за извеждане от системата на процес на друг потребител, който се избира например въз основа на някакъв фиксиран приоритет или на базата на използваните от него ресурси (най-дълго е използвал процесора и т.н.). Въпреки че тези действия са аналогични на отделяне на ресурсите при създаването на пакетни процеси, в повечето ОС с времеделене те не се изпълняват от планиращата програма, а от отделна управляваща програма (супервайзор за времеделене, програма за управление на диалоговото (интерактивното) обслужване и др.).

Коментари: