2.1. Иерархическая структура
Многие реально существующие операционные системы разработаны и реализованы на основе иерархической структуры. Пример подобной структуры приведен на рис.1. Каждый слой, или уровень, в структуре может использовать функции, предоставляемые ему более низким уровнем, как если бы они являлись частью реальной машины.
Рис. 1. Пример системы с иерархической структурой
У иерархической структуры много преимуществ. Системные программы на каждом уровне могут использовать относительно простые функции и интерфейсы, предоставляемые более низкими уровнями. Программисту нет необходимости вникать с то, как они в действительности реализуются, Операционная система может быть создана и отлажена по уровням, начиная с нулевого. Это сильно снижает сложность каждой части системы и намного упрощает реализацию заданий и их отладку. Иерархические системы различаются правилами передачи управления с одного уровня на другой. В строгой иерархии каждый уровень может обращаться только к уровню, находящемуся непосредственно под ним. Преимущество этого подхода заключается в простоте использования: каждый уровень взаимодействует только с одним интерфейсом. Однако такое ограничение может привести к потере эффективности, так как возрастает число вызовов, которые нужно сделать для достижения внутреннего уровня. В прозрачной иерархии каждый уровень может связываться непосредственно с интерфейсом любого более низкого уровня. 2.3. Виртуальные машины Виртуальные машины можно рассматривать как перенесение принципов мультипрограммирования на самый нижний уровень операционной системы.
ОС1 - мультипрограммная, поддерживающая одновременно работу трех пользователей; ОС2 – однопрограммная; ОС3 – операционная система, которая в этот момент тестируется. Есть также программа пользователя (П5), предназначенная для работы в режиме супервизора в качестве автономной программы, не находится под управлением операционной системы. Все три операционные системы плюс автономный пользователь фактически работают на одной реальной машине. Однако они имеют дело не с ней, а с монитором виртуальной машины (МВМ), благодаря которому у каждого пользователя создается впечатление, что он работает на автономной машине. Таким образом, в то время как обычные пользователи обслуживаются традиционным способом, имеется возможность отлаживать новые операционные системы. Если тестируемая система или автономный пользователь разрушили систему, то это отразится лишь на их виртуальных машинах. Другие пользователи реальной машины могут спокойно продолжать свою работу. Практически монитор виртуальной машины представляет собой завершенную, хотя и простую операционную систему реальной машины. Другие операционные системы и автономные пользователи являются “пользователями” реальной операционной системы (МВМ). Таким образом, монитор виртуальной машины призван осуществлять все самые существенные машинно-зависимые функции. Монитор виртуальной машины сохраняет для каждой машины информацию о состоянии и распределяет реальный центральный процессор между различными виртуальными машинами; это не что иное, как выполнение функции планирования процессов. Монитор виртуальной машины выделяет каждой виртуальной машине самостоятельную виртуальную память и несколько виртуальных каналов ввода-вывода. Наиболее очевидные преимущества виртуальных машин – это гибкость и удобство. Чтобы удовлетворить нужды различных пользователей, одновременно могут работать разные операционные системы. В то время как производится тестирование операционных систем или программ автономных пользователей, машина по-прежнему остается доступной и для обычных пользователей. Недостатком является значительная сложность системы, моделирующая работу каждой виртуальной машины. 2.3. МУЛЬТИПРОЦЕССОРНЫЕ СИСТЕМЫ Операционная система мультипроцессорной машины должна выполнять функции, аналогичные функциям однопроцессорных систем. Конечно, некоторые из них могут нуждаться в изменениях. Например, планировщик процессов может выделить пользовательским заданиям более одного центрального процесса, поэтому в активном состоянии может находиться сразу несколько процессов. Каждый процессор имеет свою собственную память, устройства ввода-вывода и другие ресурсы. Вдобавок на каждом процессоре функционирует его собственная операционная система. Процессоры соединяются линиями связи. Посылка по ним запроса является единственным способом получения доступа одного процессора к ресурсам другого. Подобная организация, часто называемая мультипроцессорной системой со слабо связанными процессорами, очень похожа на сеть из однопроцессорных систем. Мультипроцессорные системы со слабо связанными процессорами относительно просты, потому что каждый ресурс выделяется какому-нибудь одному процессору. Это означает, что все управление ресурсами и другие функции операционной системы осуществляются одним главным процессором. Процессоры взаимодействуют либо через непосредственно линии связи, либо через рабочие области совместно используемой памяти. Наиболее важной проблемой в мультипроцессорных системах типа главный-подчиненный несбалансированность использования ресурсов. Например, главный процессор может быть перегружен запросами от служб операционной системы, и это станет причиной длительных простоев подчиненных процессоров. Вдобавок любая неисправность в аппаратуре главного процессора вызывает останов всей системы. Всего этого можно избежать, разрешив любому процессору выполнять любую функцию, которая будет затребована операционной системой или программой пользователя. Этот подход, называемый симметричной обработкой, демонстрируется на рис.4б. С его помощью ликвидируются потенциально слабые места в системе типа главный-подчиненный, так как все процессоры имеют возможность выполнять один и тот же набор функций. Вдобавок неисправность одного процессора необязательно вызовет выход из строя всей системы.В симметричных мультипроцессорных системах различные части операционной системы могут выполняться одновременно разными процессорами. Из-за этого разработка подобных систем может оказаться значительно сложнее и труднее по сравнению с рассмотренными выше. Симметричные мультипроцессорные системы должны иметь средства, с помощью которых осуществляется управление доступом к структурам данных и к критическим таблицам операционной системы. 3. ОСНОВНЫЕ ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ Главная задача операционных систем – упростить общение пользователей с электронно-вычислительной машиной (ЭВМ). Не менее важной задачей операционной системы является создание удобного интерфейса не только с пользователями, но и с такими элементами системного программного обеспечения, как трансляторы, загрузчики, мониторы. Системное программное обеспечение является надстройкой над базовыми аппаратными средами и делает работу пользователя с машиной более удобной. Например, обеспечивая максимальную производительность ЭВМ, операционная система осуществляет достаточно сложный процесс управления ее ресурсами, все нюансы которой скрыты от пользователя. Основные функции операционной системы могут быть изображены, как на рис.5. Взаимодействие с программистами, операторами и так далее осуществляется через интерфейс пользователя, который поддерживается операционной системой. Именно его мы имеем в виду при ответе на вопрос: “Какого характера операционная система?” Если интерфейс предусматривает наличие некоторого языка управления, то, запуск программы может быть осуществлен по команде RUN P.Для выполнения часто встречающихся задач операционные системы предоставляют программам определенный набор услуг. Например, для чтения из файла некоторого набора данных программа Р может использовать стандартную сервисную программу. Последняя вызывается командой типа read (f), с помощью которой задается и имя файла. Всю заботу об осуществлении ввода-вывода, производимого на машинном уровне, возьмет на себя операционная система.Предполагается, что функции операционной системы реализованы только программным обеспечением. Однако многие из них могут быть представлены программно-аппаратными средствами (firmware), состоящими из набора микропрограмм.
3.1. ТИПЫ ОПЕРАЦИОННЫХ СИСТЕМ
Один из способов классификации связан с количеством пользователей, одновременно обслуживаемых системой. Назовем однопрограммной систему, которая обеспечивает работу одного пользователя. Это самый старый тип операционных систем. Сейчас его можно встретить на микрокомпьютерах и персональных ЭВМ. Мультипрограммная система позволяет одновременно выполнять несколько заданий пользователей, управляя при этом распределением процессора между ними. Для того чтобы задания не мешали друг другу, операционная система создает для них соответствующее операционное окружение. Мультипроцессорная система схожа с мультипрограммной с той разницей, что в первой возможно использование более чем одного центрального процессора. Основная цель мультипрограммирования – увеличение производительности вычислительной системы между несколькими заданиями. Например, одно задание может занимать процессор, в то время как другое – ожидать завершения операции ввода-вывода. Другой способ классификации операционных систем основан на типе доступа, представляемого интерфейсом пользователя. В случае систем с пакетной обработкой в качестве задания выступает последовательность управляющих операторов, записанная на машинных носителях (например, на перфокартах или диске). За исключением смены дисков или лент, осуществляемой операторами, всю заботу о считывании и выполнении заданий берут на себя операционные системы. Порядок, в котором выполняются задания, может быть выбран несколькими способами. Диалоговый или интерактивный доступ некоторого числа пользователей обеспечивается системами разделения времени. Операционная система исполняет директивы пользователей по мере того, как они вводятся, стараясь дать ответ на каждую команду пользователя за разумно короткое время. Для обработки внешних сигналов, поступающих, например, с различных датчиков, и быстрого ответа на них используются системы реального времени. К ним относятся операционные системы, работающие на ЭВМ, которые управляют процессами, в которых время является критическим параметром (например, ядерная реакция или полет космического корабля). Вообще говоря, мультипрограммные системы пакетной обработки призваны сделать использование ЭВМ более эффективным. Основной задачей систем разделения времени должно считаться обеспечение хорошего времени ответа пользователям, работающим в диалоговом режиме. Возможно, при этом придется примириться с использованием машины с меньшей эффективностью. Системы реального времени должны обеспечивать гарантированное время ответа на внешние события, для которых время является критическим параметром. Довольно часто эти функции реализуются в одной системе. Например, интерактивный режим, а другие вдобавок поддерживают обслуживание процессов реального времени.
3.2. ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ
Интерфейс пользователя, предоставляемый операционной системой, предназначен для обеспечения нужд различных групп людей, имеющих дело с ЭВМ. Например, для работы на переносной ЭВМ с простой операционной системой пользователю предоставляется набор команд, посредством которых он может получать доступ к системным программам (трансляторам, редакторам, загрузчикам), осуществлять управление внешними файлами. Подобный командный язык достаточно прост в использовании; обычно имеется возможность в диалоге с машиной получить подсказку или просмотреть меню, содержащее варианты команд. В более сложных системах может существовать несколько различных языков общения с операционной системой. Непрофессиональным программистам предоставляется возможность работать с ЭВМ на простом языке директив (command language). Профессиональными программистами может применяться мощный и сложный язык, часто называемый языком управления заданиями (job control language). Кроме того, обычно существует специальный язык, при помощи которого осуществляется взаимодействие операторов и ЭВМ. Такой интерфейс оператора позволяет запускать и останавливать задания, управлять внешними действиями. Например, оператору может быть сообщено о необходимости установить ленту или диск. Разработка интерфейса пользователя обычно не влечет за собой сложных технических задач. Между тем его создание чрезвычайно важно, так как он эксплуатируется большинством пользователей. В идеале интерфейс пользователя должен быть разработан таким образом, чтобы отвечать требованиям всевозможных типов пользователей и в то же время учитывать цели и задачи вычислительной системы. Для поддержки интерфейса пользователя операционная система должна иметь также стандартные сервисные программы. В случае персональной ЭВМ это могут быть программы для управления вводом с клавиатуры и выводом на дисплей, в более сложных системах – средства сопряжения с работающими в режиме разделения времени удаленными терминалами, считывателями с перфокарт и печатающими устройствами. Возможно также наличие интерфейса между локальной системой и другими ЭВМ, объединенными в сеть. Как часть интерфейса оператора, многие операционные системы ведут накопление статистики активности системы; она может использовать для анализа производительности и обнаружения ошибок.
3.3. ОПЕРАЦИОННОЕ ОКРУЖЕНИЕ
Одной из наиболее важных функций операционной системы является поддержка операционного окружения пользовательских задач. Оно состоит из ряда стандартных сервисных программ, которые могут быть использованы в процессе выполнения задачи и предоставлять средства для управления ресурсами вычислительной системы, выделяя их пользователю по мере надобности. В качестве примера услуг, предоставляемых операционным окружением, рассмотрим функцию ввода-вывода. Почти все операционные системы имеют стандартные программы, помогающие в осуществлении таких операций. Предположим, что программа работает на УУМ под управлением однопрограммной системы. Чтобы прочитать байт без помощи операционной системы, программа должна содержать цикл, в котором анализируется состояние устройства и выполняется команда RD. Обнаружение и исправление ошибок также возложено на саму программу. Наличие поддержки со стороны операционной системы сильно облегчает задачу. Программа пользователя может просто инициализировать стандартную сервисную программу, задав устройство, которое должно быть использовано. За всеми нюансами, такими как опрос состояния и подсчет переданных байтов, проследит операционная система. Она же примет необходимые меры по исправлению ошибок. Стандартная сервисная программа, подобная описанной выше, может восприниматься как расширение базовой машины. Типичная операционная система содержит много подобных программ. Вместе взятые, они составляют расширенную машину, которая и используется во время выполнения программы. Программам не нужно опускаться до уровня базовых аппаратных средств, поскольку все функции и возможности предоставляет расширенная машина. Она проще в использовании, чем реальная. Это касается, например, нюансов выполнения операций ввода-вывода. Есть и другие преимущества. Например, операции ввода-вывода на расширенной машине менее подвержены ошибкам, чем на реальной, так как за обнаружением и исправлением ошибок следит операционная система. Иногда расширенную машину называют виртуальной. Однако термин “виртуальная машина” может иметь и другой смысл. Операционное окружение мультипрограммных операционных систем содержит также программы, которые управляют ресурсами ЭВМ, выделяя их по необходимости заданиям пользователей. Например, оперативная память распределяется между заданиями одновременно находящимися в решении, центральный процессор предоставляется заданиям, согласно заранее выбранной стратегии. За исключением конкретных запросов операционной системе заданиям пользователя нет необходимости иметь дело с управлением ресурсами. Благодаря операционному окружению каждое задание выполняется как бы на отдельной расширенной машине, хотя в действительности базовая машина может быть определена между несколькими пользователями. В некоторых системах программы пользователей могут вызывать функции операционных систем, обращаясь непосредственно к фиксированным областям памяти. В документации по операционным системам для пользователей дается описание областей, предназначенных для данных, и входных точек вместе с их реальными адресами. Иногда возможно наличие в памяти одной точки входа для всех сервисных программ, нужный тип обслуживания может быть определен при помощи кода запроса. Способ запроса связи с операционной системой при помощи обращения к фиксированной области памяти используется в микрокомпьютерах и персональных ЭВМ. Однако этот метод неудобен и часто является источником ошибок; кроме того, он может предоставить пользователю возможность обойти средства защиты, встроенные в операционную систему. В более развитых системах пользователи запрашивают функции операционных систем в основном при помощи специальных машинных команд, таких как вызов супервизора (SVC-Super Visor Call). Выполнение команды SVC вызывает прерывание, в результате которого управление передается сервисной стандартной программе операционной системы. Код, которым сопровождается команда SVC, определяет тип запроса. Как правило, в машине любое прерывание вызывает перевод центрального процессора из режима пользователя в режим супервизора. В режиме супервизора могут быть использованы все команды и средства машины. Многие части операционной системы работают в этом режиме. При этом в режиме пользователя недопустимо выполнение некоторых команд. К таким командам могут относиться, например, функции ввода-вывода, установка флагов защиты или переключение центрального процессора из одного режима в другой. Ограничения, накладываемые на использование привилегированных команд, заставляют программу пользователя обращаться к услугам операционного окружения. Таким образом, вместо непосредственного использования функций базового аппаратного обеспечения программы должны иметь дело с интерфейсом расширенной машины. Ограничения также не дают программам пользователей вмешиваться случайно или намеренно в функции управления ресурсами, осуществляемые операционной системой. Привилегированные команды, равно как режим пользователя/супервизора (или эквивалентные ему), необходимы практически для всех систем, поддерживающим работу более чем одного пользователя.
4. МАШИННО-ЗАВИСИМЫЕ СВОЙСТВА ОПЕРАЦИОННЫХ СИСТЕМ Одной из наиболее важных функций операционных систем является управление ресурсами ЭВМ, на которой она работает. Многие ресурсы имеют непосредственное отношение к аппаратным устройствам, таким как центральная оперативная память, каналы ввода-вывода и центральный процессор. Таким образом, многие функции операционной системы тесно связаны с архитектурой машины. Рассмотрим, например, машину УУМ. У нее маленькая оперативная память, отсутствуют каналы ввода-вывода, прерывания, нет команд вызова супервизора. Такая машина может быть удобна в качестве персональной ЭВМ; на ней нет смысла работать нескольким пользователям. Таким образом, операционная система для стандартной машины УУМ однопользовательской с простыми средствами общения с пользователем и минимальным набором функций операционного окружения. ЭВМ УУМ/ДС, наоборот, имеет гораздо большую оперативную память, каналы ввода-вывода и обладает многими другими свойствами, отсутствующими у стандартной машины УУМ. На УУМ/ДС хорошо иметь мультипрограммную операционную систему. Она позволит распределить между несколькими одновременно работающими пользователями доступные им ресурсы расширенной машины, а также лучше использовать усовершенствованные программные средства. Конечно, разделение вычислительной системы между несколькими пользователями создает много проблем, подобных распределению ресурсов. Все они должны быть решены операционной системой. В дополнение к этому операционная система должна осуществлять поддержку более развитых функций аппаратуры, таких как прерывание и канальный ввод-вывод.
4.1. ОБРАБОТКА ПРЕРЫВАНИЙ
Прерывание (interrupt) – это сигнал, заставляющий ЭВМ менять обычный порядок исполнения потока команд. Возникновение подобных сигналов обусловлено такими событиями, как завершение операций ввода-вывода, истечение заранее заданного интервала вывода или попытка деления на нуль. Рис.6. дает представление о последовательности событий, происходящих в ответ на прерывание. Предположим, что в момент поступления от некоторого источника сигнала прерывания, программа А находится в решении. В результате управление автоматически передается на блок обработки прерываний (блок ОП, а также обработчик прерываний), который обычно является частью операционной системы. Этот блок предназначен для выполнения некоторых действий в ответ на условие, вызвавшее прерывание. После завершения обработки управление может быть передано в ту точку программы А, где ее выполнение было прервано. В только что описанной последовательности событий возникновение и обработка прерывания может быть совершенно не связано с программой А. Например, оно может быть вызвано завершением операции ввода-вывода, выданной другой программой. В общем случае невозможно предсказать, когда и по какой причине программа А будет прервана. Другими словами, по отношению к ней прерывания возникают асинхронно. За сохранением текущего состояния машины во время прерывания программы А, а также за его восстановлением, когда А будет продолжена, следят аппаратные и программные средства. Благодаря этому в случае прерывания ничто, за исключением времени, не влияет на ее выполнение. На самом деле для А даже не существует способа узнать, имело место прерывание или нет. На рис.7. приведены четыре класса прерываний для ЭВМ УУМ/ДС. SVC-прерывание (классI) возникает выполнении центральным процессором команды вызова супервизора. Эта команда используется для вызова функций операционной системы. Программное прерывание (классII) возникает при появлении некоторой ситуации, такой как деление на нуль, или при попытке выполнить неправильную машинную команду и, возможно, в процессе работы программы. Прерывание по таймеру (классIII) вызывается интервальным таймером центрального процессора. При этом таймер содержит регистр, которому может быть присвоено определенное начальное значение посредством привилегированной команды STI. Значение этого регистра автоматически уменьшается на единицу после использования каждой миллисекунды времени центрального процессора. Когда это значение становится равным нулю, происходит прерывание по таймеру. Подобный интервальный таймер используется операционной системой для определения времени, в течение которого программа пользователя может оставаться под управлением машины. Прерывание по вводу-выводу (классIV) вызывается каналами или устройствами ввода-вывода. Причиной многих таких прерываний является завершение некоторой операции ввода-вывода; однако они могут также оповещать о возникновении различных ошибочных ситуаций. Когда происходит прерывание, состояние центрального процессора сохраняется, а управление передается стандартной программе обработки прерываний. Каждому классу прерываний на УУМ/ДС присвоен определенный приоритет прерываний. Если используется система приоритетов, то программа обработки прерываний сама может быть прервана. Каким образом происходит вложенное прерывание показано на рис.8. По прерыванию по вводу-выводу состояние программы А, выполняющейся в этот момент на центральном процессоре, сохраняется, а управление передается обработчику прерываний по вводу-выводу. Во время его работы происходит новое прерывание – уже по таймеру, в результате чего управление передается обработчику прерываний по таймеру. По завершении этого прерывания при помощи команды LPS из рабочей области прерывания по таймеру восстанавливается состояние центрального процессора. В результате управление снова передается обработчику прерываний по вводу-выводу.
4.2. ПЛАНИРОВАНИЕ ПРОЦЕССОВ
Процессом (process), или заданием (task), часто называется программа, находящаяся в решении. Планирование процессов – это управление распределение ресурсов центрального процессора между различными конкурирующими процессами путем передачи или управления согласно некоторой стратегии планирования. Процесс создается, когда выполнение задания пользователя начинается и уничтожается, когда задание завершается. Во время своего существования процесс может находиться в трех состояниях. Процесс активен (running), когда он использует центральный процессор для выполнения своих команд. Процесс блокирован (blocked), если его выполнение может быть продолжено только после наступления некоторого ожидаемого им события. Процессы, которые не блокированы и не активны, называются находящимися в состоянии готовности (ready). Этим процессам будет передано управление после того как, текущий активный процесс его отдаст. В любой момент времени активным может быть только один процесс. При передаче управления процессу пользователя операционная система устанавливает интервальный таймер. Тем самым задается квант времени, являющийся максимальным количеством времени центрального процессора, на который процесс получает управление. Выбор процесса и передачу на него управления часто называется диспетчеризацией. Часть операционной системой, выполняющая эту функцию, называется диспетчером (dispatcher). Может оказаться, что активный процесс, не использовав полностью предоставленного ему кванта времени, будет ожидать наступления некоторого события, например, завершение операции ввода-вывода. В этом случае активный процесс блокируется, а какой-то новый процесс активизируется. Когда же ожидаемое событие наступает, соответствующий заблокированный процесс переводится в состояние готовности и может снова стать кандидатом на обслуживание. Операции ожидания события и оповещение о том, что событие наступило, реализуется при помощи сервисных запросов операционной системе.
4.3. ОБСЛУЖИВАНИЕ ВВОДА-ВЫВОДА
На типичной ЭВМ, такой как УУМ, ввод-вывод осуществляется побайтно. Для более совершенных ЭВМ, таких как УУМ/ДС, для отслеживания всех деталей передачи данных и управления вводом-выводом используются каналы ввода-вывода. Последовательность операций, которые должен выполнять канал, задается канальной программой, состоящей из канальных команд. Для осуществления операции ввода-вывода центральный процессор выполняет команду ввода-вывода STAR I/O (SIO), в которой задается номер канала и начальный адрес канальной программы. Затем канал выполняет указанную операцию ввода-вывода без дальнейшего вмешательства центрального процессора. По завершении своей программы канал генерирует прерывание по вводу-выводу. Одновременно могут работать несколько каналов, каждый из которых выполняет свою собственную канальную программу; таким образом, в одно и то же время могут осуществляться несколько различных операций ввода-вывода. Каждый канал работает независимо от центрального процессора, поэтому, пока выполняются операции ввода, центральный процессор может продолжать вычисления. Операционная система типа УУМ/ДС вовлекается в процесс ввода-вывода в нескольких случаях. Система должна принять запросы на ввод-вывод от пользовательских программ и сообщить им, когда операции будут выполнены. Она может также управлять работой каналов ввода-вывода и обрабатывать генерируемые или прерывания.
4.4. УПРАВЛЕНИЕ РЕАЛЬНОЙ ПАМЯТЬЮ Любая операционная система, поддерживающая одновременную работу более одного пользователя, должна обладать механизмом разделения центральной памяти между совместно выполняющимися процессами. Многие мультипрограммные системы разбивают память на разделы ( partitions) с выделением каждому процессу своего раздела. Размер и расположение разделов могут быть либо заранее заданы (разделы фиксированного размера), либо назначаться динамически в процессе выполнения заданий (разделы переменного размера). При использовании разделов переменного размера нет надобности выбирать размер раздела заранее, однако операционная система, которая отслеживает какие области памяти уже распределены, а какие свободны, приходится проделывать большую работу. Обычно это делается системой при помощи поддерживаемого списка свободных областей. Этот список просматривается при выделении нового раздела, который размещается либо в первой (первое подходящее размещение), либо в наименьшей (наиболее подходящее размещение) подходящей для него свободной области. Когда раздел освобождается, отведенная ему память объединяется со всеми смежными свободными областями и заносится в список.Вне зависимости от используемого способа создания разделов необходимо, чтобы операционная система и аппаратные средства обеспечивали защиту памяти. При выполнении задания в одном разделе недопустимо, чтобы оно изменяло ячейки памяти другого раздела или операционной системы. В некоторых системах разрешено чтение данных из любой области памяти, а запись – только внутри отведенного заданию раздела. В других системах и чтение и запись допускается только в пределах собственного раздела задания.
4.5. УПРАВЛЕНИЕ ВИРТУАЛЬНОЙ ПАМЯТЬЮ Виртуальным (virtual) называется ресурс, который пользовательской программе представляется обладающим свойствами отличными от тех, что он в действительности имеет. Программе разрешено использовать большую виртуальную память, называемую иногда виртуальным адресным пространством. Его объем может даже превосходить всю доступную реальную память на ЭВМ. Содержимое виртуальной памяти, используемой программой, храниться на некотором внешнем устройстве (внешней памяти). По необходимости части этой виртуальной памяти отображаются в реальную память. Ни о внешней памяти, ни о ее отображении в реальную память программа ничего не знает. Она написана так, как будто бы виртуальная память существует в действительности.
5. МАШИННО – НЕЗАВИСИМЫЕ СВОЙСТВА ОПЕРАЦИОННЫХ СИСТЕМ
Функция управления файлами, осуществляемая операционной системой, является промежуточным звеном между программой пользователя и супервизором ввода-вывода .Программа пользователя на логическом уровне с помощью имен файлов, ключей и т.п. делает запросы, например, “прочитать следующую запись из файла F”. Программа управления файлами реализует метод доступа транслируя логические запросы в физические запросы на ввод-вывод (т.е. канальные программы), и передает их супервизору, действующему при управлении операцией ввода-вывода.Чтобы перевести логические программные запросы в канальные программы, система управления файлами должна иметь информацию о расположении и структуре файлов. Эту информацию она получает из структуры данных, называемой каталогом, и файловых информационных таблиц. В действительности термины, используемые для обозначения подобных структур, также как и их форматы и содержание, в разных операционных системах различны. Каталог устанавливает соответствие логических имен файлов с их физическим местонахождением и может предоставить о файлах некоторую общую информацию. В файловой информационной таблице содержится дополнительная информация, например, об организации файлов, длине записи и форматах, о способе индексирования если оно имеется. Чтобы начать работу с файлом, система просматривает каталог и определяет местонахождение соответствующей файловой информационной таблицы. Система также может содержать буфера для размещения в них блоков файлов, которые будут прочитаны или записаны. Эта процедура называется открытием файла. После окончания работы с файлом, буферные и другие рабочие области и указатели уничтожаются. Такая процедура называется закрытием файла. Одной из наиболее важных функций управления файлами является автоматическое выполнение операций буферизации и объединения в блоки читаемых и записываемых файлов. Программы управления файлами выполняют также много других функций: распределение пространства на внешних запоминающих устройствах, реализацию правил управления доступом файлам и их использованием.
5.2. ПЛАНИРОВАНИЕ ЗАДАНИЙ
Планирование заданий – это выбор заданий пользователей для выполнения. В однопрограммной системе оно сводится к определению порядка выполнения заданий. В мультипрограммной системе планировщик определяет порядок входа заданий в решение.
Двухуровневая процедура вводится в целях ограничения уровня мультипрограммирования, то есть, числа заданий пользователей, между которыми происходит разделение центрального процессора и других системных ресурсов. Это необходимо для поддержания эффективной работы мультипрогаммной системы. Вся система планирования обычно базируется на системе приоритетов, предназначенных для достижения определенных целей. Первой целью может быть, например, получение максимальной пропускной способности системы, то есть выполнение наибольшей вычислительной работы за кратчайшее время. Другая задача – получение наименьшего времени прохождения, то есть времени между загрузкой задания пользователем и завершением его выполнения. Как правило, чаще всего используется две стратегии планирования заданий: первып пришел – первым обслужен (FCFS – First Come-First Served) и кратчайшее задание – первым (SJF – Shortest Job First). Стратегия FCFS стремится обслужить все задания одинаково, минимизируя тем самым время прохождения; SJF обеспечивает снижение среднего времени прохождения, так как короткие задания могут вынужденно ожидать обслуживания в течении долгого времени.
5.3. РАСПРЕДЕЛЕНИЕ РЕСУРСОВ
Операционная система может управлять такими ресурсами, как центральная память, каналы ввода-вывода и центральный процессор. Эти ресурсы используются всеми заданиями пользователей; распределение осуществляется системой автоматически. Операционная система в ответ на запрос управления ресурсом проверяет назначен ли он какому-нибудь другому процессу или нет. Если ресурс свободен, то управление передается запрашивающему процессу. Если ресурс занят, то система переводит запрашивающий процесс в заблокированное состояние, в котором он находится до тех пор, пока ресурс не станет доступным.
5.4. ЗАЩИТА
Во всякой операционной системе, обслуживающей одного или нескольких пользователей, должны существовать средства, обеспечивающие защиту отдельного пользователя от возможных несанкционированных действий других. Один из наиболее часто используемых способов идентификации – системные пароли. В большинстве систем пользователю для запуска задания необходимо ввести секретный пароль или зарегестрироваться с помощью интерактивного терминала. В некоторых системах имеется главная таблица паролей, используемая операционной системой для проверки паролей, получаемых от пользователей; однако она является потенциально уязвимым местом всей системы защиты. Идентефикация и авторизация пользователя за интерактивным терминалом произведены правильно. Предполагаем, что вычислительная система осуществляет соответствующий контроль доступа и имеет средства обеспечения безопасности на физическом уровне. Предполагается, что и сам терминал на физическом уровне защищен. Однако линии связи между вычислительной системой и терминалом защитить бывает сложно или вообще невозможно. Это означает, что любая информация из файла F, передаваемая терминалу уязвима. Обычно проблемы такого рода решаются с помощью шифровки данных. Информация, которая должна быть передана по незащищенным линиям связи, зашифровывается, когда она находится в пределах средств защиты. Переданная информация расшифровывается уже под защитой соответствующих средств получателя. Эффективность любой защиты всецело зависит от правильности и защищенности ее самой.
6.ПРИМЕРЫ РЕАЛИЗАЦИЙ ОПЕРАЦИОННЫХ СИСТЕМ 6.1. UCSD Pascal Система UCSD Pascal – это операционная система для мини-ЭВМ. Написана она почти целиком на языке Паскаль и функционирует на псевдо-машине или Р-машине. Таким образом, она может работать на любой ЭВМ, где реализован соответствующий интерпретатор. Сама по себе система UCSD Pascal относительно проста. Поскольку она предназначена для поддержания работы одного пользователя на мини-ЭВМ, для ее реализации не требуется применения сложных средств. Одной из наиболее интересных частей системы UCSD Pascal является ее интерфейс с пользователями, имеющий древовидную структуру. На каждом уровне дерева системой выдается строка-подсказка (prompt-line), часто называемая меню (menu). Она содержит список команд, которые может ввести пользователь. По каждой из них выбирается соответствующая ветвь, и пользователь переводится на более низкий уровень дерева. Затем выдается новая строка-подсказка, содержащая команды, которые можно ввести уже на этом уровне. На самом нижнем уровне система запрашивает у пользователя при необходимости дополнительную информацию и выполняет команду. Например, когда система загружена впервые, ею выдается строка-подсказка вида: Команды: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug.
По команде Е пользователь переводится на оди уровень вниз и попадает в редактор (Editor), где выдается новая строка-подсказка. Она может иметь вид:
Редактор: A(djst, C(py, D(lete, F(ind, I(nsrt, J(mp, R(eplace, Q(uit, X(chng, Z(ap.
По команде I система запрашивает у пользователя вводимый текст. По команде Q пользователь выходит из Редактора и возвращается к корню дерева (начальной строке-подсказке). На самом внешнем уровне имеющиеся команды обеспечивают простой доступ к наиболее важным функциям системы. Редактор позволяет пользователю ввести текст и отредактировать любой заданный текстовый или системный рабочий файл. В программе Файлер имеются команды для управления файлами на диске. Это, например, команды выдачи справочной информации, копирования и создания новых файлов. По команде R(un внешнего уровня система начинает выполнение программы из текущего рабочего файла. По X(ecute система запрашивает имя файла и выполняет содержащуюся в нем программу. По D(ebug программа из текущего файла выполняется под управлением системного Отладчика, который вызывается в случае ошибки или по достижении контрольной точки, заданной пользователем. В системе имеется также ряд вспомогательных программ. К ним относятся, например,такие, посредством которых производится настройка системы на кокретную аппаратную кофигурацию, создаются самозагружающиеся программы, выполняются операции форматирования диска, не предусмотренные в Файлере. Вспомогательные программы запускаются на внешнем уровне мпри помощи команды X(ecute. Операционной системой UCSD Pascal программы пользователей обеспечиваются набором лишь основных сервисных функций. В соответствии с нуждами программ, написанных на Паскале в системе реализовано динамическое распределение памяти. Тем самым имеется возможность в случае надобности преназначить содержимое основной памяти. Поддержка параллельности работы минимальна. Большая часть активности системы, включая операции ввода-вывода, синхронизирована. Это означает, например, что операция READ приводит к тому, что программе пользователя приходится ждать завершения физической операции ввоа-вывода; в это время ни одно другое задание не может быть выполнено.
6.2. UNIX
Операционная система UNIX первоначально была разработана в Bell Laboratories для семейства ЭВМ DEC PDP-11. С тех пор она была реализована на многих других машинах, от больших ЭВМ до микропроцессоров. Сейчас существует несколько версий UNIX. Интерфейс пользователя в системе UNIX реализован программой, называемой оболочкой (shell). Это интерпретатор командных строк, воспринимающий строки, вводимые пользователем, в качестве запросов на выполнение других программ. В функции оболочки входит также замена параметров, выполнение команд, основанных на замене символьных строк, а также передача управления в пределах последовательности команд. Оболочка может помочь и в обеспечении защиты системы: пользователяи индивидуальной командной оболочки может быть запрещено вызывать не предусмотренные для них программы системы UNIX. В системе UNIX процессам разрешено создавать другие процессы, независимо претендующие на системные ресурсы. Системный вызов fork приводит к разбиению на два выполняющихся независимо: родительский процесс и порожденный процесс. В UNIX имеются средства, обеспечивающие синхронизацию процессов, при помощи которых родительский процесс может ожидать завершения работы порожденного процесса, а также получать информацию о его состоянии. Процессы в UNIX могут связываться непосредственно друг с другом через логические межпроцессорные каналы, называемые транспортерами (pipes). Для передачи сообщений между процессами используются обыкновенные запросы на чтение и запись. Несколько процессов при помощи транспортерев могут связываться в линейную структуру и образовывать конвейер (pipeline), в который выход одного процессора является входом другого. UNIX поддерживает иерархическую файловую систему. Для файлов пользователя имеются каталоги с древовидной структурой; система имеет несколько каталогов для своих нужд. Все файлы имеют одинаковый статус. Файл не принадлежит какому-то одному определенному каталогу. Самое необычное свойство файловой системы UNIX – существование специальных файлов. Каждому устройству ввода-вывода, поддерживаемому UNIX, соответствует по крайней мере один такой файл. Специальные файлы читаются и пишутся также, как и обычные, содержащиеся на диске. Однако запрос на чтение и запись специальных файлов вызывает запуск соответствующего устройства. Это делает файлы ввода-вывода и устройства ввода-вывода очень похожими.
6.3. NOS NOS – операционная система, предназначенная, для использования на ЭВМ серии CDC CYBER и 6000. Это мультипрграммные машины, имеющие один или два центральных процессора и до двадцати периферийных процессоров (ПП). ЦП и ПП работают с общей центральной памятью; таким образом, NOS является примером мультипроцессорной системы с сильно связанными процессорами. Однако к каналам и устройствам ввода-вывода центральный процессор не имеет прямого доступа. Этот доступ обеспечивается периферийным процессором. Используя специальные аппаратные команды периферийные процессоры могут запускать и останавливать центральный процессор. Под управлением NOS центральный процессор используется практически только для выполнения программ пользователей. Периферийные процессоры осуществляются ввод-вывод и большую часть функций операционные системы; однако определяется системная работа, если это может быть сделано с большой эффективностью, выполняется на центральном процессоре. Каждому периферийному процессору в центральной памяти отведен блок из 8-ми слоев, через который осуществляется связь с системой.
6.4. VAX- VMS VAX- VMS- это многоцелевая операционная система, предназначенная для использования на ЭВМ серии VAX. Под ее управлением можно работать в трех режимах: пакетном, разделения времени и реального времени. Неотъемлемой частью VAX является виртуальной память, а управлению ею- одним из наиболее интересных свойств операционной системы VAX- VMS.Вся виртуальная память состоит из 232 байт делится на адресное пространство системы и адресное пространство процессов размером 223 байт каждый. Адресное пространство системы распределяется между всеми процессами. Однако каждый процесс пользователя имеет и свое собственное адресное пространство. Оно в свою очередь делится на программную область и область управления. В первой из них находится программа, выполняемая процессом в текущий момент. Вторая отведена под системные стеки и прочую информацию, используемую операционной системой. Виртуальная память состоит из 512- байтовых страниц. Существует системная таблица страниц, которая содержит по одному входу для каждой страницы адресного пространства системы. По нему можно судить, загружен соответствующий ей страничный кадр или нет. Начальный адрес и длина таблицы задаются в двух специальных регистрах. Адресное пространство процесса, описывается двумя таблицами страниц: одной для программной области, другой для области управления. Таблицы распологаются в адресном пространстве системы и сами могут участвовать в страничных операциях. Программы управления памятью также используют таблицу, содержащую информацию о сотстоянии всех страничных кадров в памяти, всех виртуальных страниц в системе и об их размещении. По страничному пребыванию активизируются системная программа, называемая pager. Она выбирает подходящий страничный кадр и переписывает требуемую виртуальную страницу в память. Для каждого процесса число страниц, одновременно находящихся в памяти, ограничено. Когда достигается их предельное число, pager выбирает страницу для выталкивания из памяти. Максимальное число страниц для каждого процесса устанавливается динамически и зависит от частоты происходящих в нем страничных прерываний. Измененные страницы, выталкиваемые из памяти, не переносятся во внешнюю память сразу. Вместо этого они заносится в так называемый список измененных страниц. Чтобы минимизировать накладные расходы, связанные со станичным обменом, pager пытается записать страницы кластерами (то есть по несколько страниц за одну операцию записи). Если страница из этого списка запрашивается до того, как она в действительности записана, то для восстановления не требуется выполнения какого- либо физического ввода- вывода. Аналогично измененные страницы. Выбранные для откачки, заносятся в список свободных страниц. Другая программа операционной системы, называемая swapper, используется для перемещения в память из нее рабочих множеств целых процессов. Задача swapper – держать в памяти активные процессы с наивысшим приоритетом, чтобы они могли участвовать в планировании. Функция планирования процессов в VAX- VMS основана на 32 уровней системе приоритетов. Каждый процесс в системе определен блоком управления процесса и своим заголовком. Блок управления процессом содержит кластеры флагов событий, которые могут быть использованы процессами для связи и координации их действий. Для синхронизации взаимодействующих процессов при использовании ими разделяемых ресурсов в VAX- VMS имеются средства блокировки. Поддержка операции ввода- вывода осуществляется двумя уровнями: службой организации ведения записей (СОВЗ) и системным сервисом ввода- вывода. Оба типа поддержки ввода- вывода для создания очередей и выполнения физических операции ввода- вывода используют одни и теже системные программы более низкого уровня.
6.5. VM- 370 VM- 370 операционная система для IBM 370, поддерживающая работу многих виртуальных машин. Каждому пользователю кажется, что он имеет дело с самой System 370, включая и каналы ввода- вывода.Система VM- 370 состоит из двух основных компонентов: управляющий программы (УП) и диалоговой мониторной системы (ДМС). УП является распорядителем ресурсов системы. В УП также имеются команды, помогающие в управлении и отладке операционной системы на виртуальной машине. Они позволяют выполнять такие действия, как чтение содержимого виртуальной памяти и установка контрольных точек. ДМС обеспечивает интерактивную поддержку единственного пользователя на одном терминале. Работа со многими терминалами осуществляется благодаря тому, что УП имеют возможность поддержать функционирование многих виртуальных машин с ДМС на каждой из них.В определенных моделях System 370 и соответствующих процессорах имеются специальные средства, предназначенные для использования с VM –370. Они позволяют аппаратно управлять некоторыми наиболее часто выполняемыми УП функциями. В результате достигается значительное увеличение производительности виртуальной машины.Среди всех системных программ, с которыми приходится иметь дело пользователям компьютеров, операционные системы занимают особое место. Операционная система управляет компьютером, запускает программы, обеспечивает защиту данных, выполняет различные сервисные функции по запросам пользователя и программ. Каждая программа пользуется услугами операционной системы, а потому может работать только под управлением той операционной системы, которая обеспечивает для нее эти услуги. Таким образом, выбор операционной системы очень важен, так как он определяет, с какими программами вы можете работать на своем компьютере. От выбора операционной системы зависит также производительность вашей работы, степень защиты данных, необходимые средства и так далее. |