Распределение ресурсов ВС
ОС должна решать задачу распределения машинных ресурсов между задачами пользователей. При этом, с одной стороны, надо обращать внимание на ввод в действие и оптимальную загрузку каждого ресурса, а с другой - следить за тем, чтобы программа пользователя получила требуемые ресурсы в течение приемлемого времени ожидания.
Выделение процессора
Принципиально выделяют следующие стратегии выделения процессора:
·
LIFO: программа с высшим приоритетом, прерванная последней, продолжается первой;
· FIFO: программа дольше всех ожидающая продолжения выполнения первой продолжает выполняться;
· смешанные формы FIFO-и LIFO-стратегий.
Для управления выделением процессора ОС ведет учет соответствующих данных о готовых к счету задачах. Возможность ведения такого учета состоит в наличии очередей ожидания, в которые заносятся готовые для счета программы. Часто там содержатся и приоритеты заданий или же для каждого приоритета имеется своя очередь, и ОС работает с несколькими очередями. Приоритет задания может изменяться в течение времени выполнения задания.
Длительность активной фазы программы может определяться одним из следующих способов:
· неограниченное выполнение,
· выделение времени программам по кругу,
· концепция прерывания.
Если программа не выполняется полностью за один прием, а выполнение разбивается на многие активные фазы, то нужно принять особые меры для запоминания информации, необходимой для продолжения выполнения этой программы. Совокупность всей необходимой для этого информации (программный код, файлы, данные о необходимых ресурсах) назовем контекстом процесса. При прерывании программы контекст процесса заносится в память, так что готовая к счету программа может быть идентифицирована адресом соответствующего ей контекста процесса.
Тем самым в очередь ожидания нужно заносить только эти адреса. Если же в системе есть только один процессор, то имеется лишь видимость параллельного выполнения программ, фактически они выполняются последовательно и с перекрытием во времени. Поэтому говорят о квазипараллельной обработке.
Управление оперативной памятью
Одним из самых дорогих и дефицитных ресурсов ЭВМ является оперативная память. Правда, стоимость элементов, из которых она строится, постоянно снижается, а новейшие технологии, обеспечивающие высокую степень интеграции элементов, позволяют иметь в распоряжении оперативного память все большей емкости. И тем не менее неясное выделение памяти для готовых к выполнению программ является решающей предпосылкой для получения ОС с хорошими эксплуатационными свойствами. Сюда входят следующие задачи:
1. разбиение оперативной памяти на отрезки и их распределение между программами пользователей таким образом, чтобы готовые к выполнению программы были приведены в состояние, позволяющее продолжить их обработку;
2. защита отдельных отрезков памяти от неправомерного доступа к ним из других программ пользователей.
При управлении памятью возникают следующие проблемы:
1. области памяти, необходимые для разных контекстов процессов, имеют различные размеры, которые к тому же могут изменятся по ходу выполнения программ;
2. часто объем оперативной памяти оказывается недостаточным для размещения всех данных в пользовательских программах,
3. наборы данных, содержательно связанные друг с другом должны быть объединены и организационно.
Обычными методами управления памятью, которые в значительной мере решают эти проблемы, являются:
· сегментация,
· страничный обмен.
При сегментации оперативная память разбивается на много частичных отрезков.
Контекст процесса также может охватывать многие сегменты. Сегменты управляются с помощью дескрипторов.
Часто физическая память оказывается не столь большого обьема, чтобы в ней разместить все необходимые системе сегменты. Поэтому оперативная память разбивается на отрезки одинаковой длины, называемые страницами. Часть этих страниц удерживается в оперативной памяти, а остальные размещаются во внешней. В случае необходимости содержимое страниц из внешней памяти переносится в оперативную, и наоборот.
Выделение устройств ввода/вывода
В противоположность центральному процессору, устройства ввода/вывода в основном не воспринимают активно относящиеся к ним указания, хранимые в памяти. Эти устройства активизируются процессором ввода/вывода с помощью регистров команд. Если последовательность команд запомнена в регистрах устройства, то взводится особый регистр (флаг); этим действием активизируется устройство ввода/вывода, которое автономно выполняет запомненную последовательность команд. После этого (путем установки соответствующего регистра) выдается сигнал об окончании выполнения заказа и устройство снова становится пассивным.
Технически это реализуется тем, что память соединена как с процессором, так и с другими устройствами, каналами ввода/вывода. Как и процессор, каналы ввода/вывода самостоятельно работают с памятью - после того, как будет выдана стартовая команда для ввода/вывода и номера канала и устройства. По окончании выполнения заказа на ввод/вывод канал выдает соответствующий сигнал процессору, после чего процессор может выдать каналу новый заказ.
Некоторые устройства ввода/вывода могут одновременно применяться многими пользователями, другие же на определенное время отдаются в исключительное распоряжение одному пользователю. Эта характеристика устройств ввода/вывода существенно определяет их вовлечение в ход работы ОС.
Распределение ресурсов в мультипрограммном режиме
Ресурсы машины в ОС не могут распределяться независимо друг от друга, поскольку отдельные запрашиваемые ресурсы обычно находятся в многообразных отношениях друг к другу.
Обратим внимание, что пользовательские программы предъявляют к ВС самые различные требования:
· программы с интенсивным счетом требуют, прежде всего, процессорного времени;
· программы с большими объемами используемых данных требуют, прежде всего, оперативной и внешней памяти;
· программы с интенсивным вводом/выводом, прежде всего, запрашивают устройства ввода/вывода;
· всякого рода управляющие программы, прежде всего, нуждаются в слябах системы и тем самым, соответственно, в каналах, памяти и процессоре.
При мультипрограммном режиме перед ОС возникают дополнительные проблемы:
· замещение при выполнении отдельных программ для разрешения конфликтов при запросах на ресурсы;
· справедливое распределение ресурсов;
· минимизация организационных затрат;
· минимизация времени переключения с задачи на задачу при прерываниях;
· регулирование прав доступа к наборам данных. В таких случаях могут возникнуть и технические проблемы:
· если в системе будет обрабатываться одновременно слишком много программ пользователей, то взаимное вытеснение программ из памяти может привести почти к застою в работе системы;
· если в системе одновременно обрабатывается слишком мало программ, то определенные устройства иногда будут недостаточно загружены.
Хорошая ОС функционирует с достаточно полной загрузкой, но без перегрузок. ОС при выполнении своих управляющих функций не должна сама использовать слишком много ресурсов (времени процессора, места в памяти).
Выделение ресурсов в режиме диалога
По сравнению с пакетным режимом, диалоговый режим ведет к дополнительным требованиям к ОС и распределению ресурсов. Здесь перед ОС стоит задача обслужить каждого пользователя за минимальное время ожидания ответа. В частности, ОС должна управлять всем потоком ввода/вывода - это касается и передачи информации между памятью и устройствами ввода/вывода.
В режиме диалога пользователи работают с дисплеями - устройствами, на экран которых информация выдается в наглядной форме в виде текстов и графических изображений. В принципе дисплей в диалоговом режиме может работать в одном из следующих режимов:
· полудуплексном: попеременно осуществляется то ввод, то вывод;
· полностью дуплексном: одновременно может идти и ввод, и вывод.
В квазимногопрограммном режиме с простыми дисплеями каждый введенный или выведенный знак или слово вызывает прерывание, что ведет к значительной загрузке процессора (на обработку прерываний). Если использовать более мощные дисплеи и каналы, то процессор может быть существенно разгружен.
В диалоговом режиме ОС дополнительно к ее классическим функциям решает и следующие задачи:
· объединяет введенные знаки в последовательности знаков и соединяет их в команды;
· предписывает ввод/вывод отдельным программам пользователей и дисплеям;
· выдает информацию на экран как эхо ввода и как истинный вывод;
· управляет данными пользователей
Обьединение вводимых с терминала знаков, работа каналов и процессора могут осуществлятся многообразными способами, так что короткое время реакции обусловливает большую нагрузку на процессор. Этот недостаток может быть частично устранен подключением к ЭВМ специальных процессоров ввода/вывода.
Содержание раздела