Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 16
Текст из файла (страница 16)
Диспетчер задач сравнивал заказанное время и время выполнения и в случае превышения указанной оценки потребности в данном ресурсе ставил данное задание не в начало, а в конец очереди. Еще в некоторых операционных системах в таких случаях использовалась система штрафов, при которойв случае превышения заказанного машинного времени оплата вычислительных ресурсов осуществлялась уже по другим расценкам.Дисциплина обслуживания SJN предполагает, что имеется только одна очередьзаданий, готовых к выполнению. Задания, которые в процессе своего исполнениябыли временно заблокированы (например, ожидали завершения операций вводавывода), вновь попадали в конец очереди готовых к выполнению наравне с вновьпоступающими.
Это приводило к тому, что задания, которым требовалось очень 1немного времени для своего завершения, вынуждены были ожидать процессорнаравне с длительными работами, что не всегда хорошо.Для устранения этого недостатка и была предложена дисциплина SRT (ShortestRemaining Time) — следующим будет выполняться задание, которому осталосьменьше всего выполняться на процессоре.Все эти три дисциплины обслуживания могут использоваться для пакетных режимов обработки, когда пользователю не нужно ждать реакции системы — он просто сдает свое задание и через несколько часов получает результаты вычислений.Для интерактивных же вычислений желательно прежде всего обеспечить приемлемое время реакции системы. Если же система является мультитерминальной, |то помимо малого времени реакции системы на запрос пользователя желательно,чтобы она обеспечивала и равенство в обслуживании.
Можно сказать, что стратегия обслуживания, согласно которой главным является равенство обслуживанияпри приемлемом времени обслуживания, является главной для систем разделения времени. Кстати, UNIX-системы реализуют дисциплины обслуживания, соответствующие именно этой стратегии.Если же это однопользовательская система, но с возможностью мультипрограммной обработки, то желательно, чтобы те программы, с которыми непосредственно I59рпанирование и диспетчеризация процессов и задачоаботает пользователь, имели лучшее время реакции, нежели фоновые задания.При этом желательно, чтобы некоторые приложения, выполняясь без непосредственного участия пользователя (например, программа получения электроннойпочты, использующая модем и коммутируемые линии для передачи данных), темне менее, гарантированно получали необходимую им долю процессорного времени.Для решения перечисленных проблем используется дисциплина обслуживания,называемая карусельной (Round Robin, RR), и приоритетные методы обслуживания.Дисциплина обслуживания RR предполагает, что каждая задача получает процессорное время порциями или, как говорят, квантами времени (time slice) q.
Послеокончания кванта времени q задача снимается с процессора, и он передается следующей задаче. Снятая задача ставится в конец очереди задач, готовых к выполнению. Эту дисциплину обслуживания иллюстрирует рис. 2.3. Для оптимальной работы системы необходимо правильно выбрать закон, по которому кванты временивыделяются задачам.Выполненные задачи•Очередь готовых к исполнению задачНовые задачиРис. 2.3. Карусельная дисциплина диспетчеризацииВеличина кванта времени q выбирается как компромисс между приемлемым временем реакции системы на запросы пользователей (с тем, чтобы их простейшие запросы не вызывали длительного ожидания) и накладными расходами на частую сменуКонтекста задач.
Очевидно, что при прерываниях операционная система вынужденавыполнять большой объем работы, связанной со сменой контекста. Она должна сохранить достаточно большой объем информации о текущем (прерываемом) процессе, поставить дескриптор снятой задачи в очередь, занести в рабочие регистры процессора соответствующие значения для той задачи, которая теперь будет выполняться(ее дескриптор расположен первым в очереди готовых к исполнению задач). ЕслиВеличина q велика, то при увеличении очереди готовых к выполнению задач реакция системы станет медленной.
Если же величина q мала, то относительная доля60Глава 2. Управление задачаминакладных расходов на переключения контекста между исполняющимися задачамиувеличится, и это ухудшит производительность системы.»В некоторых операционных системах есть возможность указывать в явном видевеличину кванта времени или диапазон возможных значений, тогда система будетстараться выбирать оптимальное значение сама. Например, в операционной системе OS/2 в файле CONFIG.SYS есть возможность с помощью оператора TIMESLICEуказать минимальное и максимальное значения для кванта q. Так, например, строка TIMESLICE=32,256 указывает, что минимальное значение равно 32 мс, а максимальное — 256. Если некоторая задача прервана, поскольку израсходован выделенный ей квант времени q, то следующий выделенный ей интервал будет увеличенна время, равное одному периоду таймера (около 32 мс), и так до тех пор, покаквант времени не станет равным максимальному значению, указанному в операторе TIMESLICE.
Этот метод позволяет OS/2 уменьшить накладные расходы на переключение задач в том случае, если несколько задач параллельно выполняютдлительные вычисления. Следует заметить, что диспетчеризация задач в этой операционной системе реализована, пожалуй, наилучшим образом с точки зрения реакции системы и эффективности использования процессорного времени.Дисциплина карусельной диспетчеризации более всего подходит для случая, когдавсе задачи имеют одинаковые права на использование ресурсов центрального процессора.
Однако как мы знаем, равенства в жизни гораздо меньше, чем неравенства.Одни задачи всегда нужно решать в первую очередь, тогда как остальные могут подождать. Это можно реализовать за счет того, что одной задаче мы (или диспетчерзадач) присваиваем один приоритет, а другой задаче — другой. Задачи в очереди будутрасполагаться в соответствии с их приоритетами.
Формирует очередь диспетчер задач. Процессор в первую очередь будет предоставляться задаче с самым высокимприоритетом, и только если ее потребности в процессоре удовлетворены или онапопала в состояние ожидания некоторого события, диспетчер может предоставитьего следующей задаче. Многие дисциплины диспетчеризации по-разному используют основную идею карусельной диспетчеризации и механизм приоритетов.Дисциплина диспетчеризации RR — это одна из самых распространенных дисциплин. Однако бывают ситуации, когда операционная система не поддерживает в явном виде дисциплину карусельной диспетчеризации.
Например, в некоторых операционных системах реального времени используется диспетчер задач, работающийпо принципу абсолютных приоритетов (процессор предоставляется задаче с максимальным приоритетом, а при равенстве приоритетов он действует по принципуочередности) [7, 11]. Другими словами, причиной снятия задачи с выполненияможет быть только появление задачи с более высоким приоритетом. Поэтому еслинужно организовать обслуживание задач таким образом, чтобы все они получалипроцессорное время равномерно и равноправно, то системный оператор может саморганизовать эту дисциплину.
Для этого достаточно всем пользовательским задачам присвоить одинаковые приоритеты и создать одну высокоприоритетную задачу, которая не должна ничего делать, но которая, тем не менее, будет по таймеру(через указанные интервалы времени) планироваться на выполнение. Благодарявысокому приоритету этой задачи текущее приложение будет сниматься с выполнения и ставиться в конец очереди, а поскольку этой высокоприоритетной задачесамом деле ничего делать не надо, то она тут же освободит процессор, и из очеареди готовности будет взята следующая задача.В своей простейшей реализации дисциплина карусельной диспетчеризации предотагает, что все задачи имеют одинаковый приоритет. Если же необходимо ввести механизм приоритетного обслуживания, то это, как правило, делается за счеторганизации нескольких очередей.
Процессорное время предоставляется в первуюочередь тем задачам, которые стоят в самой привилегированной очереди. Если онапустая, то диспетчер задач начинает просматривать остальные очереди. Именнопо такому алгоритму действует диспетчер задач в операционных системах OS/2,Windows 9x, Windows NT/2000/XP и многих других. Отличия в основном заключаются в количестве очередей и в правилах, касающихся перемещения задач изодной очереди в другую.Известные дисциплины диспетчеризации (мы здесь рассмотрели только основные) могут применять или не применять еще одно правило, касающееся перераспределения процессора между выполняющимися задачами.Есть дисциплины, в которых процессор принудительно может быть отобран у текущей задачи. Такие дисциплины обслуживания называют вытесняющими, поскольку одна задача вытесняется другой.
Другими словами, возможно принудительное перераспределение процессорного времени между выполняющимисязадачами. Оно осуществляется самой операционной системой, отбирающей периодически процессор у выполняющейся задачи.А есть дисциплины диспетчеризации, в которых ничто не может отобрать у задачипроцессор, пока она сама его не освободит. Освобождение процессора в этом случае, как правило, связано с тем, что задача попадает в состояние ожидания некоторого события.Итак, диспетчеризация без перераспределения процессорного времени, то есть невытесняющая (non-preemptive multitasking), или кооперативная, многозадачность(cooperative multitasking), — это такой способ диспетчеризации задач, при котором активная задача выполняется до тех пор, пока она сама, что называется «пособственной инициативе», не отдаст управление диспетчеру задач для того, чтобытот выбрал из очереди другой, готовый к выполнению процесс или поток.