Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 19
Текст из файла (страница 19)
Задачи реального времени, имеющие приоритеты от 16 до 31, — это высокоприоритетные потоки, используемые программами,п,,г-пятчеризация задач с использованием динамических приоритетов69итическими по времени выполнения, то есть требующими немедленного внимания системы (по терминологии Microsoft).Диспетчер задач просматривает очереди, начиная с самой приоритетной. При этомли очередь пустая, то есть в ней нет готовых к выполнению задач с таким приоритетом, то осуществляется переход к следующей очереди. Следовательно, еслит ь задачи, требующие процессор немедленно, они будут обслужены в первуюесочередь.
Для собственно системных модулей, функционирующих в статусе задачи, зарезервирована очередь с номером 0.Большинство задач в системе относятся к классу переменного приоритета с уровнями приоритета (номером очереди) от 1 до 15. Эти очереди используются задачами с переменным приоритетом (variable priority), так как диспетчер задач дляоптимизации отклика системы корректирует их приоритеты по мере выполнения. Диспетчер приостанавливает исполнение текущей задачи, после того как таизрасходует свой квант времени. При этом если прерванная задача — это потокпеременного приоритета, то диспетчер задач понижает приоритет этого потокавыполнения на единицу и перемещает в другую очередь.
Таким образом, приоритет задачи, выполняющей много вычислений, постепенно понижается (до значения его базового приоритета). С другой стороны, диспетчер повышает приоритет задачи после ее освобождения из состояния ожидания. Обычно добавкак приоритету задачи определяется кодом исполнительной системы, находящимся вне ядра операционной системы, однако величина этой добавки зависитот типа события, которого ожидала заблокированная задача.
Так, например,поток, ожидавший ввода очередного байта с клавиатуры, получает большуюдобавку к значению своего приоритета, чем поток ввода-вывода, работавшийс дисковым накопителем. Однако в любом случае значение приоритета не может достигнуть 16.В операционной системе OS/2 схема динамической приоритетной диспетчеризации несколько иная, хоть и похожа1. В OS/2 также имеется четыре класса задач.И для каждого класса задач имеется своя группа приоритетов с интервалом значений от 0 до 31. Итого, 128 различных уровней и, соответственно, 128 возможныхочередей готовых к выполнению задач (потоков).Задачи, имеющие самые высокие значения приоритета, называются критическими по времени (time critical).
В этот класс входят задачи, которые мы в обиходеназываем задачами реального времени, то есть для них должен быть обязательнопредоставлен определенный минимум процессорного времени. Наиболее частовстречающимися задачами этого класса являются задачи коммуникаций (например, задача управления последовательным портом, на который приходят биты покоммутируемой линии с подключенным модемом, или задачи управления сетевым оборудованием). Если такие задачи не получат управление в нужный моментвремени, то сеанс связи может прерваться.Как известно, одно время компания Microsoft принимала активное участие в разработке OS/2 совместно с IBM. Поэтому после прекращения совместных работ над этой операционной системой иначале нового проекта многие решения из OS/2 были унаследованы в варианте OS/2 ver.
3.0, названной впоследствии Windows NT.70Глава 2. Управление задачамиСледующий класс задач имеет название приоритетного. Поскольку к этому классу относят задачи, которые выполняют по отношению к остальным задачам функции сервера (о модели клиент-сервер, по которой строятся современные операционные системы с микроядерной архитектурой, см. главы 9 и 10), то его еще иногданазывают серверным. Приоритет таких задач должен быть выше, поскольку этопозволяет гарантировать, что запрос на некоторую функцию со стороны обычныхзадач выполнится сразу, а не будет дожидаться, пока до него дойдет очередь нафоне других пользовательских приложений.Большинство задач относят к обычному классу, его еще называют регулярным(regular), или стандартным.
По умолчанию система программирования порождает задачу, относящуюся именно к этому классу.Наконец, существует еще класс фоновых задач, называемый в OS/2 остаточным.Программы этого класса получают процессорное время только тогда, когда нет задачиз других классов, требующих процессор. В качестве примера такой задачи можнопривести программу обновления индексного файла, используемого при поискефайлов, или программу проверки электронной почты.Внутри каждого из вышеописанных классов задачи, имеющие одинаковый уровень приоритета, выполняются в соответствии с дисциплиной RR. Переход от одного потока к другому происходит либо по окончании отпущенного ему квантавремени, либо по системному прерыванию, передающему управление задаче с более высоким приоритетом (таким образом система вытесняет задачи с более низким приоритетом для выполнения задач с более высоким приоритетом и можетобеспечить быструю реакцию на важные события).OS/2 самостоятельно изменяет приоритет выполняющихся программ независимоот уровня, установленного самим приложением.
Этот механизм называется повышением приоритета (priority boost). Операционная система изменяет приоритетзадачи в трех случаях [26].Q Повышение приоритета активной задачи (foreground boost). Приоритет задачиавтоматически повышается, когда она становится активной. Это снижает время реакции активного приложения на действия пользователя по сравнению сфоновыми программами.Q Повышение приоритета ввода-вывода (Input/Output boost). По завершенииоперации ввода-вывода задача получает самый высокий уровень приоритета еекласса.
Таким образом обеспечивается завершение всех незаконченных операций ввода-вывода.•Повышение приоритета «забытой» задачи (starvation boost). Если задача не получает управление в течение достаточно долгого времени (этот промежуток времени задает оператор MAXWAIT в файле CONFIG.SYS1), диспетчер задач OS/2 временно присваивает ей уровень приоритета, не превышающий критический.В результате переключение на такую «забытую» программу происходит быстрее. После выполнения приложения в течение одного кванта времени его приСтрока MAXWAIT - 1 означает, что приоритет задачи при переключении на нее будет поднят домаксимального не позже чем через одну секунду.Кпитрольные вопросы и задачи71оритет вновь снижается до остаточного.
В сильно загруженных системах этотмеханизм позволяет программам с остаточным приоритетом работать хотя быв краткие интервалы времени. В противном случае они вообще никогда бы неполучили управление.ели нет необходимости использовать метод динамического изменения приориета, то с помощью оператора PRI0PITY = ABSOLUTE в файле CONFIG.SYS можно ввестиисциплину абсолютных приоритетов; по умолчанию оператор Р RI0PITY имеет знаение DYNAMIC.онтрольные вопросы и задачиПеречислите и поясните основные функции операционных систем, которыесвязаны с управлением задачами.В чем заключается основное различие между планированием процессов и диспетчеризацией задач?Что такое стратегия обслуживания? Перечислите известные вам стратегии обслуживания.Какие дисциплины диспетчеризации задач вы знаете? Поясните их основныеидеи, перечислите достоинства и недостатки.5.
Расскажите, какие дисциплины диспетчеризации следует отнести к вытесняющим, а какие — к не вытесняющим.Как можно реализовать механизм разделения времени, если диспетчер задачработает только по принципу предоставления процессорного времени задаче смаксимальным приоритетом?Что такое «гарантия обслуживания»? Как ее можно реализовать?8. Опишите механизм динамической диспетчеризации, реализованный в UNIXсистемах.Сравните механизмы диспетчеризации задач в операционных системах WindowsNT и OS/2. В чем они похожи друг на друга и в чем заключаются основныеразличия?78Глава 3.
Управление памятью в операционных системахмент не нужно сохранить во внешней памяти в его текущем состоянии) обращается к операционной системе с указанием, какой сегмент должен быть загружен в память следующим; либо он возвращает управление главному сегменту задачи, и ужетот обращается к операционной системе с указанием, какой сегмент сохранить (еслиэто нужно), а какой сегмент загрузить в оперативную память, и вновь отдает управление одному из сегментов, располагающихся в памяти. Простейшие схемы сегментирования предполагают, что в памяти в каждый конкретный момент времениможет располагаться только один сегмент (вместе с главным модулем). Более сложные схемы, используемые в больших вычислительных системах, позволяют располагать в памяти несколько сегментов.
В некоторых вычислительных комплексах могли существовать отдельно сегменты кода и сегменты данных. Сегменты кода,как правило, не претерпевают изменений в процессе своего исполнения, поэтомупри загрузке нового сегмента кода на место отработавшего последний можно несохранять во внешней памяти, в отличие от сегментов данных, которые сохранятьнеобходимо.Первоначально программисты сами должны были включать в тексты своих программ соответствующие обращения к операционной системе (их называют системными вызовами) и тщательно планировать, какие сегменты могут находитьсяв оперативной памяти одновременно, чтобы их адресные пространства не пересекались.
Однако с некоторых пор такого рода обращения к операционной системесистемы программирования стали подставлять в код программы сами, автоматически, если в том возникает необходимость. Так, в известной и популярной в недалеком прошлом системе программирования Turbo Pascal программист простоуказывал, что данный модуль является оверлейным. И при обращении к немуиз основной программы модуль загружался в память и получал управление. Всеадреса определялись системой программирования автоматически, обращенияк DOS для загрузки оверлеев тоже генерировались системой Turbo Pascal.Распределение оперативной памяти в MS DOSКак известно, MS DOS 1 — это однопрограммная операционная система для персонального компьютера типа IBM PC. В ней, конечно, можно организовать запускрезидентных, или TSR-задач2, в результате которого в памяти будет находиться неодна программа, но в целом система MS DOS предназначена для выполнения только одного вычислительного процесса.