Конспект установочных лекций по комплексному курсу Информатика, Теория информации

       

Основные аспекты операционных систем


Под вычислительной машиной (ЭВМ) понимается совокупность технологических устройств (аппаратура, «жесткое оборудование», “hardware”), таких как процессоры, память, шина и периферийные устройства, т. е. техническая система для переработки информации. Программирование на языке машины утомительно и чревато ошибками. Поэтому ЭВМ без специальной системы программ, которая поддерживает функционирование машины, для пользователя практически бесполезна. Программирование на чисто машинном уровне, без использования вспомогательных, весьма дорогостоящих программ, для пользователя было бы почти невозможно. Только наличие специальной поддерживающей программной системы, которая дает возможность пользователю проще организовать и реализовать свои индивидуальные применения, делает вычислительную машину работоспособным, непосредственно применимым инструментом. Семейство упомянутых системных программ называется операционной системой (ОС). Вычислительная машина, снабженная операционной системой, называется вычислительной системой (ВС). Конечно, даже для одной и той же ЭВМ можно создать и предоставить в распоряжение пользователей различные ОС. ОС (в широком смысле) понимается комплекс программ, функции которых определяют ВС с точки зрения пользователя. Работая на машине с ОС, пользователь не обращается непосредственно к машинным операциям. Скорее он дает запросы (задания) программам ОС, которые затем уже используют машинные операции. ОС, как правило, содержу себе большое семейство программ. Объем ядра достаточно простой ОС составляет примерно 100-500 Кбайт программного кода. Новейшие ОС могут иметь значительно больший объем.

ОС реализует, в частности, интерфейс с пользователем. С точки зрения пользователя, который не различает, да и не должен различать аппаратную и программную реализацию функций ВС, с помощью ОС возникает новая, «виртуальная» (воображаемая) машина. И чем точнее пользовательский интерфейс удовлетворяет потребности пользователя, тем проще и удобнее становится для него применение ЭВМ.
Такой «дружественный» интерфейс является особенно важной предпосылкой широкого применения ЭВМ пользователями, которые не имеют специальных знаний в области информатики.

Таким образом, при проектировании ОС очень важно точно определить требования к ОС и преимущественные цели для предстоящих применений ВС, чтобы затем на этой основе позаботиться о возможно более оптимальном поведении системы для пользователя. При этом, естественно, некоторые из поставленных целей, например дружественность по отношению к пользователю и эффективность, вступают в конфликт между собой. Здесь относительно поведения ОС для нахождения компромисса должны быть заданы определенные приоритеты, которые и дают решение при наличии противоречивых точек зрения. Этого можно также достичь с помощью параметров, которые позволяют приспособить ОС к желаниям пользователей.

Предлагаемый пользователю интерфейс должен через ОС опираться на заранее заданные машинные фикции. Здесь мы также говорим об интерфейсе - машинном интерфейсе. При этом ОС выполняет фикцию моста между двумя интерфейсами - пользователя и аппаратуры. Характеристика аппаратуры, так же как и требования интерфейса с пользователем, определяет внутреннюю структуру и специальные задачи ОС. И чем дальше расходятся фикции пользовательского и машинного интерфейсов, тем сложнее и дороже будет реализация ОС.

Проектирование и реализация ОС принадлежат к классическим задачам системного программирования. Другими задачами системного программирования являются реализации языков программирования - реализация компиляторов, интерпретаторов и общего окружения программирования, т. е. вспомогательных служебных программ, таких, как программы для конвертирования, форматирования, переноса, редактирования и т.д. В системном программировании используется ряд специфичных принципов и методик, с которыми мы кратко познакомимся в конце этой главы.

Без ОС вычислительная машина была бы для пользователя практически неприменима. Только ОС обеспечивает интерфейс для удобного общения пользователя с ЭВМ и доступа к ее функциям.


Поэтому ОС должна в зависимости от спектра применений ЭВМ справляться с решением различных задач.

Функции операционной системы

Все аппаратные и программные компоненты ВС обозначаются как средства производства ВС, которые необходимы для выполнения программ. ОС охватывает семейство программ, которые поддерживают запросы пользователя и его программ, соответственно этому делают возможным использование ресурсов системы и в этой связи управляют этими ресурсами и контролируют их использование. При этом задача ОС состоит в выделении ресурсов системы при оптимизации числа программ, выполняемых в единицу времени.



Эта задача охватывает комплекс управления и распределения ресурсов системы для:

·

длительного хранения данных и управления ими (внешняя память);

·         выполнения программ пользователей (процессор и оперативная память);

·         использования устройств ввода/вывода, включая устройства для дальней передачи данных (устройства ввода/вывода).

Для выполнения этих управляющих функций ОС должна иметь в своем распоряжении соответствующую информацию. Эта информация включает в себя как информацию об использовании ВС, например данные:

·         допустимых пользователях и их правах (управление пользователями)

·         выполняемых в данное время программах (управление процессами)

так и информацию о фактическом внутреннем распределении ресурсов системы такую как:

·         состояние процессора (управление процессором);

·         распределение оперативной памяти (управление оперативной памятью) и внешней памяти (управление внешней памятью),

·         конкретизация устройств ввода/вывода (управление устройствами).

Представление и организация этой информации, а также алгоритмы, которые на основе этой информации управляют распределением ресурсов, в значительной мере определяют внутреннюю структуру ОС, а также ее производительность и надежность.


Эта структура должна соответствовать как специфике ВС, так и требованиям пользователей. ОП грубо можно классифицировать по следующим характеристикам.

Режим обработки пользовательских программ, поступающих в ВС. Различают пакетный режим, режим диалога и режим реального времени (управление реальными процессами).

Наряду с этим на структуру ОС и ее функции существенное влияние оказывает число пользовательских программ, одновременно обрабатываемых системой, и в связи с этим говорят о режиме работы системы. Если ОС выполняет пользовательские программы строго одну после другой, т.е. в каждый момент времени в процессе обработки находится только одна программа, то говорят об одно- или моно- программном режиме работы системы. При этом каждая программа выполняется без ее прерываний в процессе вычислений. Впрочем, этот режим используется только в очень простых ОС, ориентированных на одного пользователя. Из соображений более полного использования ресурсов ВС и одновременного обслуживания многих пользователей ОС в большинстве случаев обрабатывают  одновременно  (параллельно)  несколько  программ (соответственно, запросов пользователей). Таким образом, если в один и тот же момент времени в процессе выполнения может находиться много программ, то говорят о много- или мульти-программном режиме работы системы.

На эксплуатационную ситуацию ВС существенно влияют вид желаемого использования ВС и число ее пользователей. В однопользовательском режиме ВС используется только одним пользователем. В этом случае достаточно однопрограммного режима работы ВС. Однако если и здесь желательно определенные запросы пользователя выполнять параллельно, т. е. наряду друг с дротом (типичный пример - печать результатов как фоновый процесс), то однопрограммного режима работы системы уже недостаточно даже в случае одного пользователя. В многопользовательском режиме многие пользователи одновременно применяют ВС. Если к тому же пользователи ведут диалог с ВС, то говорят о системе разделения времени (англ.


time sharing); в этом случае требуется мультипрограммный режим работы ВС. При этом программы пользователей (которые считаются упорядоченными и замкнутыми в кольцо) поочередно получают определенный квант процессорного времени. Функционирование системы разделения времени требует учета готовых к выполнению программ, и благодаря этому ОС осуществляет управление выполнением программ.

Разумеется, режим разделения времени влечет значительное усложнение ОС и порождает ряд специфичных вопросов и проблем. В частности, в этом случае на выделение ресурсов накладывается ряд ограничений, которые вытекают из имеющихся физических ограничений, например из ограниченной емкости оперативной памяти и быстродействия процессора. Они определяются также из заданных ограничений прав отдельных пользователей.

ОС для систем разделения времени, естественно, являются более сложными, чем однопрограммные ОС. Здесь возникают и совершенно новые требования, как, например, желание иметь системную поддержку для общения пользователей между собой. Часто многие ВС - как с одним, так и с несколькими рабочими местами - объединяют в сеть, так что система разделения времени возникает в форме вычислительной сети. При этом объединение в сеть производится так, что на каждой включаемой в сеть ВС  устанавливается своя собственная ОС, а затем эти ОС обмениваются сообщениями.

Наряду с режимами обработки (пакетный, диалоговый, реального времени) и числом пользователей (одно- или многопользовательская работа), на структуру ОС оказывает влияние и состав имеющейся в распоряжении аппаратуры. Если ЭВМ имеет только один процессор, то говорят об однопроцессорной системе, в противном случае - о много- или мультипроцессорной системе. В приводимом ниже примере рассматривается типичная однопроцессорная система, которая используется со схематичной ОС разделения времени. Если в ЭВМ имеется несколько процессоров, работающих одновременно, то это требует в ОС дополнительных мер для их управления и синхронизации.

Конкретная ситуация функционирования ОС характеризуется множеством задач, над выполнением которых работает ОС.


Отдельные задачи описываются обычно с помощью программ. При выполнении каждой из этих программ говорится о процессе. В частности, делаются различия между процессами пользователя и процессами системы.

Таким образом, часть задач, стоящих перед ОС, можно представить себе следующим образом. В системе имеется ряд готовых к выполнению программ. Каждая программа имеет в своем распоряжении определенные, фактически уже выделенные ей ресурсы (место памяти, процессор, устройство ввода/вывода и т.д.), и для каждой программы (каждого пользователя) определены ограничительные рамки для ресурсов, за которые программа не имеет права выходить. Тогда задача ОС состоит в таком распределении ресурсов системы, чтобы всегда существовал достаточный резерв для возможности удовлетворения поступающих в систему запросов.

В ОС при каждом запросе пользователя на ресурсы должно приниматься решение о том, может ли запрос удовлетворяться немедленно, или он должен быть отложен до тех пор, когда система придет в такое состояние, при котором запрос можно удовлетворить без опасности прийти в тупиковое состояние.

Наряду с целью избежания тупиков одна из важнейших целей ОС состоит в возможно большем удовлетворении запросов пользователей в единицу времени. Число запросов, обрабатываемых в единицу времени, называют пропускной способностью ВС. Распределение ресурсов в ОС охватывает следующие комплексы задач:

·         выделение процессорного времени при оптимальной пропускной способности (с целью достижения возможно более высокого темпа обработки запросов);

·         умелое перемещение программ, частей программ и данных между оперативной и внешней памятью;

·         управление устройствами ввода/вывода.

Одна из важнейших внутренних задач ОС - максимизация пропускной способности. Конечно, она ограничена производительностью ЭВМ, но внутри этих рамок ОС должна обеспечить оптимальность обработки.


Принципиально мы можем определить задачу ОС как проблему оптимизации.

Обратим, однако, внимание на то, что оптимизация обшей пропускной способности не подразумевает оптимальной обработки запроса отдельного пользователя. В целевую фикцию оптимизации можно включить как общую пропускного способность, так и обработку отдельных заданий пользователей.

При проектировании ОС следует обращать внимание на следующий принцип: если даже к ОС предъявляются требования, которые в рамках имеющихся аппаратных ограничений (емкость памяти, скорость вычислений и т. д.) не могут быть выполнены полностью, ОС не должна рассматривать это как катастрофу, а должна продолжать выполнять, по крайней мере, важнейшие, еще выполнимые запросы. Как раз при критических нагрузках и проявляются слабые и сильные стороны ОС.

 

Режимы обработки

По роду взаимодействия между пользователем и ВС различают следующие режимы:

·         пакетная обработка,

·         диалоговый режим,

·         управление процессами  (режим реального времени).

Часто эти режимы в какой-либо ВС присутствуют наряду с другими при мультипрограммной работе машины.

a)                  Пакетный режим

В пакетном режиме обрабатываются потоки пакетов (наборов) запросов.  Пользователь предварительно полностью декларирует все части своего пакета запросов - до того, как он будет введен в систему. После этого заданный пакет запросов обрабатывается ВС – без того,  чтобы пользователь мог как-либо влиять на этот процесс. Пакет запросов распадается на отдельные подразделы. Под термином раздел будем  понимать программную единицу, выраженную на языке программирования, которая содержит формулировки запросов и поддерживающие их данные для ОС. Последовательность разделов будем называть потоком разделов.

b)                  Диалоговый режим



В этом режиме пользователь передает ОС один запрос после другого в диалоге с системой. При обработке запросов пользователя, как правило, возникает дальнейший диалог в форме задания данных и вывода результатов. Таким образом, имеет место взаимодействие между пользователем и ОС. Составные части запроса могут формулироваться примерно в той же форме, что и  на языке программирования, т. е. путем ввода последовательности знаков, или же путем выбора из меню. Технически ввод может производится с помощью клавиатуры или со   следующих устройств:  светового пера,  мыши,   контактного экрана,   речевого ввода (ограниченно). Вывод в диалоге осуществляется с помощью печатающих устройств, экрана или других оптических и акустических сигналов. В диалоге могут использоваться различные уровни работы с ОС, такие как уровень команд. С помощью специальных команд можно переходить от одного уровня к другому.

Диалоговый режим требует особых свойств интерфейса между пользователем и системой. В идеальном случае пользователь должен иметь возможность легко вести диалог, лучше всего без использования дополнительных письменных инструкций. Это требует предоставления ему дополнительной информации (объяснение системных фикций и состояния системы в данный момент), а также помощи при выдаче сообщений об ошибках (диагностика ошибок и пути их устранения). Особое значение имеет простота и наглядность представления требуемой информации о текущем состоянии системы. Далее, все системные фикции должны возможно больше соответствовать ожиданиям и интуиции пользователя (англ. principle of least surprise). Это приводит в область эргономики программного оборудования, которая имеет своей целью по возможности простое и понятное оформление пользовательского интерфейса.

Ограниченность площади экрана дисплея требует особой техники работы с ним, такой, как разделение его на окна (англ. windows). При этом экран делится на несколько частей, на каждую из которых выдаются отдельные вырезки той или иной информации. При этом можно определить новые вырезки, перекрыть старые окна, снова их восстановить или погасить.



c)                  Управление процессами (режим реального времени - РРВ)

Если с помощью ЭВМ осуществляется управление каким-либо процессом или наблюдение за ним (управление дорожным движением пли наблюдение за ним, управление роботом и т. д.), то это предъявляет особые требования к ОС. В управлении процессами или наблюдением за ними особое значение приобретает время реакции системы. Чтобы обеспечить работу в реальном времени, соответствующие программы и, соответственно, языки программирования должны содержать зависящие от времени конструкты.

При управлении процессами ввода данных наряду с обычными средствами ввода используются сенсоры (акустические, оптические, осязательные и т. д.) с аналого-цифровыми преобразователями. Вывод наряду с обычными средствами производится с помощью управляющих устройств.

Не все ВС приспособлены для одновременного обслуживания многих пользователей в режиме диалога. Если ВС в каждый момент времени может обслуживать только одного пользователя, то говорят о ВС с одним рабочим местом или персональном компьютере (англ. PC - personal I computer), а также о рабочей станции (англ. workstation). При этом в простейшем случае в процессе выполнения находится единственная программа (однопрограммный режим).

Особое положение среди ОС, ориентированных на ведение диалога, занимают транзакционные системы (системы запросов и ответов), обеспечивающие работу сети удаленных устройств, которые оперируют с общими банками данных (например, бухгалтерская система банков, система резервирования авиабилетов и т. д.). При таких ОС часто функционирует только одна (сложная) пользовательская программа, в которую часто интегрированы функции ОС. Число имеющихся в распоряжении команд здесь сильно ограничено.

В диалоговом режиме ОС может реагировать на ошибочные исходные данные и на ошибочные ситуации в пользовательской программе и выдавать пользователю соответствующие сообщения об ошибках.


Пользователь тогда может принимать решение относительно своих дальнейших действий и давать системе соответствующие указания. В пакетном режиме такой возможности не существует - здесь вся обработка ошибок должна производиться самой системой, без участия пользователя. При этом здесь очень важны выдачи, которые позволяли бы пользователю по окончании выполнения программы провести обстоятельный анализ ошибок. Особенно опасны ошибки в пользовательских программах, предназначенных для управления процессами. При применении таких программ может возникнуть риск для жизни людей (наблюдение и управление самолетами, военные системы раннего предупреждения, системы наблюдения за важными функциями организма человека в больницах и т. д.) - в таких случаях ошибки в программах могут повлечь за собой катастрофические последствия. Поэтому в такого рода применениях при разработке программ требуется особая осторожность и внимание.                 

В целом справедливо, что ошибки в ОС особенно неприятны и дорогостоящи. Они могут вообще привести ВС в неработоспособное состояние, парализовать работу вычислительного предприятия, привести к потере или порче запомненной информации. Надежность ОС (а также компиляторов и интерпретаторов для применяемых языков программирования) является предпосылкой для надежности всей ВС, на которой выполняются программы пользователей. Все усилия при разработке пользовательских программ могут быть напрасными, если ненадежно системное окружение.

Простая ОС для пакетного режима

Чтобы точнее представить себе проблемы, возникающие при проектировании ОС, рассмотрим простую ЭВМ и обсудим требования к ОС. Обратим внимание, что в ВС:

·         также должны вводиться и программы самой ОС (начальный запуск системы);

·         должны выполняться и программы пользователей, и части ОС;

·         определенные программы ОС без внешнего воздействия никогда не завершаются.



Конфигурация ЭВМ образует распределенную систему взаимодействующих единиц (устройств). Мы можем единицы оборудования моделировать как систему взаимодействующих,  параллельно  выполняющихся программ. Поведение процессора передается процедурой, которая соответствует вводу программы, ее размещению в сегменте памяти, выполнению этой программы и выдаче результатов ее работы, которые размешаются в сегменте памяти. Это моделирование ВС, конечно, представляет собой сильное упрощение. Тем не менее при таком подходе принципиальная структура ОС в общих чертах становится соке понятной.

Удобнее ввести в рассмотрение специализированный достаточно простой процессор в виде канала ввода/вывода, который по заказу (центрального) процессора осуществляет передачу между памятью и периферийными устройствами. Наличие канала ввода/вывода разгружает процессор, так как ему теперь не нужно управлять передачей каждого знака или слова по отдельности. В этом представлении канал, предъявленный программой, является активной компонентой, которая подает заказы от процессора и самостоятельно их выполняет. Действия процессора и канала протекают параллельно. В то время как канал обрабатывает заказ, процессор мог бы обратиться к другим задачам. Для этого для канала должна быть предусмотрена соответствующая аппаратура.

Теперь мы обратимся к упрощенному рассмотрению вопросов эффективности. Процессор в случае необходимости ждет окончания выполнения заказа на чтение или запись. Тем самым одновременные запись и чтение исключены. Если процессор выполняет программу пользователя, находящуюся в области памяти, то периферийные устройства не заняты. Никакая из трех компонент ЭВМ - процессор, принтер и ввод - не загружены оптимально. Возникающий отсюда недостаток становится все более заметным с возрастающей разницей в быстродействии между отдельными устройствами ЭВМ.

Этот пример, при всем его упрощении, делает ясным сложность структуры ОС. Если мы хотим иметь эффективные версии, то мы должны смириться с тем, что структура ОС становится еще сложнее.



Простая ОС для мультипрограммной системы

Чтобы лучше использовать все устройства ВС» мы должны в системе одновременно хранить и выполнять многие пользовательские программы. Тогда в эффективной версии ОС ввод, вычисление и печать могут осуществляться так, что всегда в обработке находятся три пользовательские программы:

·         программа  печатает,

·         программа  вычисляет,

·         программа  вводит.

Разумеется, по меньшей мере, три программы должны одновременно находиться в системе и потому храниться в памяти. Для этого память мы делим на три подобласти 0, 1 и 2. Мы также используем по одному каналу для обработки заказов на ввод и вывод. Фазы чтения, вычисления и печати представляются различными программами, распадаются на отдельные шаги и выполняются одна наряду с другой (т. е. параллельно). Конечно, и в этой версии ОС загрузка отдельных устройств остается еще очень плохой, т. е. не достигает оптимального их использования. Если выполняются пользовательские программы с сильно различающимися временами для осуществления ввода, счета и вывода, то другие устройства будут простаивать, хотя позднее следующая программа может интенсивно использовать как раз эти устройства.

Поэтому рассмотрим другую простую ОС, которая обеспечивает более полную загрузку устройств. Она допускает большее число заказов в системе, чтобы иметь запас заказов для каждого из устройств. Для этого ОС работает стремя очередями заказов: очередь свободных областей памяти; очередь областей памяти с программами, готовыми к счету;    очередь областей памяти с программами, готовыми к печати. К подобной ОС, необходимо сделать следующие замечания:

1.      Если операции упорядочения заменить другими операциями упорядочения в очереди ожидания, то получится другой порядок выполнения. Можно также ввести приоритеты, чтобы установить последовательность процессов в очереди ожидания.



2.      От выбора величины  времени  для счета зависит, как долго должен ожидать канал, пока он сможет получить новый заказ.

3.      Программы не получают определенных областей памяти постоянной длины.

4.      С помощью вмешательства человека оператор ЭВМ может манипулировать очередью ожидания (например, определенные области памяти, содержащие пользовательские программы, исключить из очереди программ, желающих печатать или считать, и добавить эти области в очередь свободных областей памяти).

Чтобы достичь оптимальной загрузки устройств, в современных ОС единственный процессор предоставляется по очереди многим программам, так что выполнение одной программы разбивается на последовательность ее активных фаз. Для выбора программы, которой предоставляется процессор, и для определения выделяемого интервала времени существуют различные способы действий. Мы говорим о стратегии расписания»

Для мультипрограммных ЭВМ в стратегии расписания должно быть установлено:

·         когда должно быть прервано выполнение программы,

·         по какой стратегии должна выбираться для выполнения одна из ожидающих программ.

Если каждая программа по мере надобности получает один и тот же квант времени, то говорят о системе разделения времени. Однако выделение процессора может также управляться сигналами от периферийных устройств. Эти сигналы осуществляют прерывание выполнения пользовательской программы. Такая организация обработки заказов - при достаточно большом числе пользовательских программ в системе - обеспечивает весьма полную  загрузку всех устройств ЭВМ.

В реальных ОС не всегда выполняется только одна программа, а по некоторому правоту каждой из программ, имеющихся в системе, по очереди выделяется определенный короткий интервал (квант) времени процессора для ее выполнения. Это особенно удобно при интерактивном использовании ВС многими пользователями.



Выбор готовой к выполнению программы может производиться в соответствии с определенными приоритетами, при учете состояния системы. При этом могут использоваться статические приоритеты, которые не изменяются в течение всего времени выполнения программ, или же динамические приоритеты, которые в процессе выполнения программ изменяются по тем или иным соображениям. ОС работают с приоритетами по определенной стратегии, причем эти приоритеты могут изменяться даже благодаря действиям оператора ЭВМ.

Если в системе находится много пользовательских программ, то некоторая часть ОС, управляющая ходом процесса и называемая диспетчером  (англ. Scheduler, dispatcher), решает, какая из программ в первую очередь должна быть выбрана для исполнения. Простейшая стратегия заключается в том, что программы для исполнения выбираются в порядке их поступления в систему, и каждая программа выполняется до тех пор, пока не возникнет прерывание (например» вследствие заказа из этой программы на ввод/вывод), и программа продолжает выполняться, как только это становится возможным. Конечно, такой способ действий не всегда отвечает ожиданиям пользователей. Часто скорее ожидается, что программа с коротким временем ее выполнения, которая может быть распознана ОС по заданному при программе требуемом времени на ее выполнение, будет снабжена более высоким приоритетом.

Промежуток времени между вводом задания в систему и завершением его выполнения назовем временем пребывания (в системе), а среднюю его продолжительность на задание - средним временем пребывания.

В течение времени пребывания какого-либо задания в системе, с одной стороны, производится выполнение некоторых из находящихся в системе заданий, если они еще не завершены, а с другой стороны, в систему поступают новые задания и добавляются к имеющимся в ней заданиям.

Производительность (англ. Performance ) ВС может быть описана и оценена статистическими средствами, и на нее всегда слезет смотреть с учетом специфики применений. При этом определяются некоторые коэффициенты, характеризующие нагрузку и производительность.

Конечно, средние значения дают лишь очень грубое представление о времени обработки, загрузке системы и ее поведении. Чтобы получить более точные высказывания о свойствах ОС при различных нагрузках на нее, наряду с аналитическим рассмотрением применяют также моделирование. Путем измерения загрузок отдельных компонент системы можно установить, какие части ЭВМ перегружены и тем самым образуют узкие ее места. Отсюда можно попытаться соответствующим образом модифицировать ОС (по-другому установить ее параметры) для достижения равномерной загруженности отдельных частей системы.


Содержание раздела