Назначение и функции ОС.
В процессе работы ЭВМ выполняется множество различных действий: ввод программы, написанной на некотором исходном языке, запись введенной программы на некоторый накопитель, трансляция ее в объектное представление, редактирование оттранслированной программы, при котором происходит сборка программы, то есть устанавливаются все необходимые связи между отдельными подпрограммами. Полученный после редактирования загрузочный модуль либо исполняется, либо записывается на внешний носитель данных. В процессе выполнения программы может потребоваться ввод или вывод данных. Все вышеописанные действия образуют либо одну общую технологическую цепочку, либо несколько независимых (автономных) цепочек. В общем случае такие цепочки выполняются на машине одновременно.
Для организации выполнения всего набора задач в соответствии с требуемой для каждого из них технологией и выделением необходимых для этого ресурсов требуется соответствующая система управления (ОС).
ОС - это упорядоченная последовательность управляющих и служебных программ совместно с необходимыми информационными массивами, осуществляющая управление всеми ресурсами вычислительного комплекса для обеспечения работы вычислительной системы. Под эффективностью понимается мера соответствия вычислительной системы своему назначению. Основное назначение ОС - это управление ресурсами компьютера. ОС реализует различные функции, поэтому существуют различные классификационные схемы функций ОС. Рассмотрим одну из них рисунок 1. Разделить функции управления, контроля и планирования довольно сложно, так как они взаимосвязаны. Под этой группой функций понимается организация работы компьютера, а под функциями интерфейсом понимается организация работы пользователя.
Управление устройствами осуществляется специальными программами называемыми драйверами. Эти программы обычно включаются в комплект поставки ОС. Драйверы организованы специальным образом и пользователь не знает об этой организации, ему известно логическое имя и формат команд управления. Драйверы разрабатываются системными программистами на языке низкого уровня, а пользователю на этапе генерации ОС необходимо лишь указать перечень устройств. Существуют задачи, когда необходимо использование специализированной аппаратуры для которой разрабатываются специальные драйверы. Существует несколько подходов к организации управления такими устройствами:
· Включить в код программы коды управления устройством;
· Создание резидентных программ;
· Разработка полноценного драйвера.
Под управлением ФС организация данных на внешних носителях информации. Каждая ОС имеет собственную ФС обычно не совместимую с другими. Это связано с тем, что фирмы разработчики ОС ищут пути повышения эффективности использования внешней памяти. Управление программами подразумевает организацию работы исполняемых модулей В разных ОС эти функции одинаковы. Под управлением памятью понимается организация эффективного использования как внешней, так и оперативной памяти. В общем случае, состав функций ОС зависит от типа и назначения ОС.
Рисунок 1. Функции ОС
Требования, предъявляемые к ОС
Главным требованием, предъявляемым к операционной системе, является способность выполнения основных функций: эффективного управления ресурсами и обеспечения удобного интерфейса для пользователя и прикладных программ. Современная ОС должна реализовывать мультипрограммную обработку, виртуальную память, свопинг, поддерживать многооконный интерфейс и т. д. Кроме этих функциональных требований к операционным системам предъявляются не менее важные рыночные требования. К этим требованиям относятся:
Расширяемость
· Код должен быть написан таким образом, чтобы можно было легко внести дополнения и изменения, если это потребуется, и не нарушить целостность системы.
Аппаратная часть компьютера устаревает за несколько лет, полезная жизнь операционных систем может измеряться десятилетиями. Поэтому операционные системы всегда изменяются со временем и представляют собой приобретение ею новых свойств. Например, поддержка новых устройств, возможность связи с сетями нового типа, поддержка многообещающих технологий,, использование более чем одного процессора. Сохранение целостности кода, какие бы изменения не вносились в операционную систему, является главной целью разработки.
Расширяемость может достигаться за счет модульной структуры ОС, при которой программы строятся из набора отдельных модулей, взаимодействующих только через функциональный интерфейс. Новые компоненты могут быть добавлены в операционную систему модульным путем, они выполняют свою работу, используя интерфейсы, поддерживаемые существующими компонентами.
Использование объектов для представления системных ресурсов также улучшает расширяемость системы. Объекты - это абстрактные типы данных, над которыми можно производить только те действия, которые предусмотрены специальным набором объектных функций. Объекты позволяют единообразно управлять системными ресурсами. Добавление новых объектов не разрушает существующие объекты и не требует изменений существующего кода.
Средства вызова удаленных процедур (RPC) также дают возможность расширить функциональные возможности ОС. Новые программные процедуры могут немедленно поступить в распоряжение прикладных программ.
Некоторые ОС для улучшения расширяемости поддерживают загружаемые драйверы, которые могут быть добавлены в систему во время ее работы. Новые файловые системы и устройства могут поддерживаться путем написания драйвера устройства и драйвера файловой системы и загрузки его в систему.
Переносимость
· Код должен легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы (которая включает наряду с типом процессора и способ организации всей аппаратуры компьютера) одного типа на аппаратную платформу другого типа.
Требование переносимости кода тесно связано с расширяемостью. Расширяемость позволяет улучшать операционную систему, в то время как переносимость дает возможность перемещать всю систему на машину, базирующуюся на другом процессоре или аппаратной платформе, делая при этом по возможности небольшие изменения в коде. Вопрос не в том, может ли быть система перенесена, а в том, насколько легко можно это сделать. Написание переносимой ОС аналогично написанию любого переносимого кода - нужно следовать некоторым правилам.
Во-первых, большая часть кода должна быть написана на языке, который имеется на всех машинах. Это означает, что код должен быть написан на языке высокого уровня, предпочтительно стандартизованном, например, на языке С. Программа, написанная на ассемблере, не является переносимой, если только вы не собираетесь переносить ее на машину, обладающую командной совместимостью с вашей.
Во-вторых, следует учесть, в какое физическое окружение программа должна быть перенесена. Различная аппаратура требует различных решений при создании ОС. Например, ОС, построенная на 32-битовых адресах, не может быть перенесена на машину с 16-битовыми адресами (разве что с огромными трудностями).
В-третьих, важно минимизировать те части кода, которые непосредственно взаимодействуют с аппаратными средствами.
В-четвертых, если аппаратно зависимый код не может быть полностью исключен, то он должен быть изолирован в нескольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно-зависимую структуру в программно-задаваемые данные абстрактного типа. Другие модули системы будут работать с этими данными, а не с аппаратурой, используя набор некоторых функций. Когда ОС переносится, то изменяются только эти данные и функции, которые ими манипулируют.
Для легкого переноса ОС при ее разработке должны быть соблюдены следующие требования:
· Переносимый язык высокого уровня. Большинство переносимых ОС написано на языке С. Непереносимый код должен быть тщательно изолирован внутри тех компонентов, где он используется.
· Изоляция процессора. Некоторые низкоуровневые части ОС должны иметь доступ к процессорно-зависимым структурам данных и регистрам. Однако код, который делает это, должен содержаться в небольших модулях, которые могут быть заменены аналогичными модулями для других процессоров.
· Изоляция платформы. Зависимость от платформы заключается в различиях между рабочими станциями разных производителей, построенными на одном и том же процессоре. Должен быть введен программный уровень, абстрагирующий аппаратуру (кэши, контроллеры прерываний ввода-вывода и т. п.) вместе со слоем низкоуровневых программ таким образом, чтобы высокоуровневый код не нуждался в изменении при переносе с одной платформы на другую.
Совместимость
· ОС должна иметь средства для выполнения прикладных программ, написанных для других операционных систем. Кроме того, пользовательский интерфейс должен быть совместим с существующими системами и стандартами.
Необходимо разделять вопросы двоичной совместимости и совместимости на уровне исходных текстов приложений. Двоичная совместимость достигается в том случае, когда можно взять исполняемую программу и запустить ее на выполнение на другой ОС. Для этого необходимы: совместимость на уровне команд процессора, совместимость на уровне системных вызовов и даже на уровне библиотечных вызовов, если они являются динамически связываемыми.
Совместимость на уровне исходных текстов требует наличия соответствующего компилятора в составе программного обеспечения, а также совместимости на уровне библиотек и системных вызовов. При этом необходима перекомпиляция имеющихся исходных текстов в новый выполняемый модуль.
Совместимость на уровне исходных текстов важна в основном для разработчиков приложений, в распоряжении которых эти исходные тексты всегда имеются. Но для конечных пользователей практическое значение имеет только двоичная совместимость.
Обладает ли новая ОС двоичной совместимостью или совместимостью исходных текстов с существующими системами, зависит от многих факторов. Самый главный из них - архитектура процессора, на котором работает новая ОС. Если процессор, на который переносится ОС, использует тот же набор команд и тот же диапазон адресов, тогда двоичная совместимость может быть достигнута достаточно просто.
Безопасность
· ОС должна обладать средствами защиты ресурсов одних пользователей от других.
Обеспечение защиты информации от несанкционированного доступа является обязательной функцией сетевых операционных систем. В большинстве популярных систем гарантируется степень безопасности данных, соответствующая уровню С2 в системе стандартов США.
Основы стандартов в области безопасности были заложены " Критериями оценки надежных компьютерных систем ". Этот документ, изданный в США в 1983 году (Оранжевая Книга).
В соответствии с требованиями Оранжевой книги безопасной считается такая система, которая "посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации".
Иерархия уровней безопасности, приведенная в Оранжевой Книге, помечает низший уровень безопасности как D, а высший - как А.
· В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов.
· Основными свойствами, характерными для С-систем, являются: наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. Уровень С делится на 2 подуровня: уровень С1, обеспечивающий защиту данных от ошибок пользователей, но не от действий злоумышленников, и более строгий уровень С2. На уровне С2 должны присутствовать средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе. Средства учета и наблюдения (auditing) - обеспечивают возможность обнаружить и зафиксировать события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы. Защита памяти - заключается в том, что память инициализируется перед тем, как повторно используется. На этом уровне система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по записям в журнале.
· Системы уровня В основаны на помеченных данных и распределении пользователей по категориям, то есть реализуют мандатный контроль доступа. Каждому пользователю присваивается рейтинг защиты, и он может получать доступ к данным только в соответствии с этим рейтингом. Этот уровень в отличие от уровня С защищает систему от ошибочного поведения пользователя.
· Уровень А является самым высоким уровнем безопасности, он требует в дополнение ко всем требованиям уровня В выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности.
Надежность и отказоустойчивость
· Система должна быть защищена как от внутренних, так и от внешних ошибок, сбоев и отказов. Ее действия должны быть всегда предсказуемыми, а приложения не должны быть в состоянии наносить вред ОС.
Производительность.
· Система должна обладать настолько хорошим быстродействием и временем реакции, насколько это позволяет аппаратная платформа.
Режимы обслуживания.
В процессе развития вычислительной техники происходило и происходит постоянное совершенствование аппаратных средств вычислительных систем и эволюция ОС. Основной причиной такой эволюции является совершенствование способов (режимов) организации вычислительного процесса, при этом функционирование вычислительной системы может быть рассмотрено как обслуживание пользователя.
1.Режим индивидуального пользования.
Вычислительная система полностью предоставляется в распоряжение пользователя, по крайней мере, на время решения его задачи. Пользователь имеет непосредственный доступ к вычислительной системе, используя пульт управления или устройство ввода-вывода данных. После получения результатов или истечения отведенного для пользователя времени он должен зарегистрировать свой уход с машины, после чего его сменяет другой пользователь со своей программой. В каждый момент рабочего времени машина используется для решения только одной прикладной программы, отсюда и название. Режим индивидуального пользования удобен пользователю, но плохо использует оборудование вычислительной системы из-за простоев, вызванных чередованием фаз: первая фаза-работа вычислительной сети выдача результата, вторая- обдумывание пользователем результата и вод нового задания, при этом во второй фазе вычислительная система ничего не делает и процент ее использования чуть больше 50%.
2. Режим однопрограммной пакетной обработки.
Пользователь не имеет непосредственного доступа к вычислительной сети. Подготовленные заранее программы пользователь передает обслуживающему персоналу вычислительной системы. Собранные от нескольких пользователей программы накапливаются в пакет на магнитных дисках или лентах (пакет-это совокупность отдельных программ и данных, разделенных специальными метками на магнитном носителе). Затем, в соответствии с расписанием, оператор устанавливает носитель с пакетом на соответствующий накопитель, и специальная программа из состава ОС последовательно считывает программы и данные из пакета, после чего запускает их на выполнение. Результаты работы выводятся на другой накопитель, составляя очередь (пакет) выходных результатов. Управляющая программа должна фиксировать время, затраченное на выполнение каждой программы из пакета, а также реагировать на определенные ситуации по управлению пользовательскими программами. Ситуации могут быть как штатные (предусмотренные), например, останов программы в ожидании смены магнитной ленты, так и нештатные, к примеру, зацикливание некоторой программы из пакета. Таким образом, управляющая программа выполняет внутрисистемные операции управления, которые ранее (в режиме 1) выполнял пользователь. Дополнительно эта программа автоматически переключает машину на использование программ из пакета по вышеописанной схеме, при этом каждая программа, получившая доступ к процессору, обслуживается до конца. Рассматриваемая управляющая система автоматизирует операции оператора по организации работы ЭВМ при обработке на ней некоторой последовательности программ и может быть названа простейшей ОС.
Применение такого режима позволило улучшить эксплуатационных характеристики ЭВМ, прежде всего путем повышения процента использования оборудования. Однако этот режим обладает двумя существенными недостатками: значительное увеличение интервала времени между моментами передачи пользователями программ оператору на выполнение и получением результатов (чем больше пакет, тем больше интервал времени, а в среднем 2-4 часа); во время выполнения некоторой программы может потребоваться передача данных из оперативной памяти в накопитель и обратно, а процессор во время выполнения таких обменов простаивает и продолжит обработку только после завершения обмена, то есть наиболее дорогостоящее и высокоскоростное оборудование используется нерационально.
3. Режим мультипрограммной пакетной обработки.
Стремление устранить недостаток однопрограммного пакетного режима привело к дальнейшей эволюции ЭВМ и ОС, к мультипрограммным вычислительным системам. Основной функцией таких систем является размещение в оперативной памяти не одной, а нескольких пользовательских программ. Рассмотрим пример.
Пусть в оперативную память загружены три программы А,Б и В. Временные диаграммы их выполнения в однопрограммном и мультипрограммном режимах представлены ниже.
| |||||||
| |||||||
На диаграммах интервалы времени, необходимые для ввода-вывода обозначены tBB(А), tBB(Б) и tBB(В). Время выполнения всех трех программ (А, Б и В) в пакетном однопрограммном режиме равно Т(А)+Т(Б)+Т(В), то есть программы выполняются последовательно друг за другом. Рассмотрим выполнение программ в многопрограммном режиме.
Допустим, что процессор начинает обслуживание с программы А в момент t 0.В момент t 1 программе А требуются данные, находящиеся на одном из внешних устройств. В этот момент выполнение программы А приостанавливается и начинает выполняться операция ввода-вывода, которая будет завершена через время tBB(А) в момент t 4.Одновременно (параллельно) с операцией ввода-вывода процессор переключается на выполнение программы Б. В момент времени t 2 программе Б потребовалось выдать промежуточные данные на одно из внешних устройств. Происходит приостановка выполнения процессором программы Б, и начинает выполняться операция ввода-вывода, которая будет завершена через время tBB(Б) в момент времени t 7.Далее одновременно с этой операцией ввода-вывода процессор переключается на выполнение программы В. В момент времени t 3 происходит приостановка выполнения программы В, и начинает выполняться операция ввода-вывода, которая будет завершена за время tBB(Б). После завершения операции ввода-вывода для программы А в момент t 4 свободный к этому моменту процессор вновь начинает выполнять программу А до ее завершения в момент времени t 6 ..Так как операция ввода-вывода программы В завершилась ранее (в момент t 5), то процессор переключается на продолжение программы В; закончив ее выполнение (в момент t 8), процессор переходит к выполнению программы Б, операция ввода-вывода для которой закончилась в момент t 7 . Таким образом, выполнение всех трех программ закончилось в момент t 9, причем величина t 9 – t 0 значительно меньше суммы Т (А)+Т (Б)+Т (В) в однопрограммном режиме. Однако время выполнения программ Б и В увеличилось по сравнению с однопрограммным режимом на величины t 6 – t 5и t 8 – t 7 соответственно (на схеме эти фрагменты обозначены). Эти временные задержки возникли из-за занятости процессора обслуживанием других программ при готовности программ Б и В к продолжению выполнения. При выполнении в пакетном режиме наличие этих задержек не имеет существенного значения, так как они практически не влияют на время получения пользователем результатов счета. Основным достоинством многопрограммного пакетного режима является значительное уменьшение времени простоя процессора.
Реализация рассматриваемой идеи многопрограммной обработки потребовала изменения, как аппаратных, так и программных средств:
1) реализован механизм прерывания;
2) в состав ЭВМ включены новые устройства – каналы ввода-вывода, каждый из которых управляет обменом данными между оперативной памятью и некоторым набором внешних устройств (на схеме эти устройства обозначены). Канал осуществляет все операции ввода-вывода, не используя средств процессора (на схеме:
операции ввода-вывода с использованием средств процессора,
операции через канал ввода-вывода);
3) организация функционирования ЭВМ реализуется с помощью комплекса взаимосвязанных управляющих программ, то есть ОС, ставшей неотъемлемой частью мультипроцессорных ЭВМ.
Пакетная обработка как способ повышения эффективности использования ресурсов вычислительной системы актуальна тогда, когда стоимость единицы времени вычислительной системы достаточно высока, и следовательно цена простоев может достигать значительных величин. Дальнейшая эволюция ОС была направлена на устранение недостатка пакетного режима, то есть на минимизацию времени ожидания пользователем результатов выполнения своей программы.
4. Режим коллективного пользования.
Это такая форма обслуживания, при которой возможен одновременный доступ нескольких независимых пользователей к вычислительным ресурсам мощной вычислительной системы. Каждому пользователю предоставляется терминал, с помощью которого он устанавливает связь с системой коллективного пользования. Системы коллективного пользования с однородными запросами (обработка которых занимает примерно одно и то же время) реализуют режим «запрос-ответ» (например, справочный экран на вокзале).В этом режиме ОС работает также как в мультипрограммном. Но, в отличие от пакетного режима, очередь программ, ожидающих выполнения, формируется динамически: по каждому вопросу от терминала соответствующая программа обработки этого запроса попадает в очередь, которую покидает после выполнения. Такой режим обслуживания позволил сократить время ожидания пользователя, но если некоторый пользователь вводит запрос, требующий длительной обработки, то время ожидания других пользователей может возрасти до недопустимых величин. С целью устранения этого недостатка появился режим квантования времени: режим основан на многозадачной обработке; при этом каждой готовой к выполнению программе выделяется для исполнения на процессоре фиксированный, заранее определенный интервал времени (квант). Программа, получившая квант времени, может завершить свою работу в течение этого интервала (тогда она покидает очередь), либо по истечению выделенного кванта времени программа не выполнена до конца (тогда она прерывается и перемещается в конец очереди других готовых к выполнению программ). Такое циклическое обслуживание, основанное на детерминированной схеме прерывания, гарантирует, что всем программам будет выделяться процессорное время «справедливо», то есть никто не сможет монополизировать процессор. Дальнейшее развитие ОС получили при создании многомашинных, мультипроцессорных вычислительных систем, а также локальных и глобальных вычислительных сетей.
Основные принципы построения ОС.
Каждая ОС является уникальной и сложной программной системой. Однако в основу разработки каждой из них положены некоторые общие принципы.
1.Частотный принцип.
Этот принцип основан на выделении в алгоритмах программ действий (в обрабатываемых массивах данных) примерно равных по частоте использования. Для программ и данных, которые часто используются, обеспечиваются условия их быстрого выполнения и быстрого доступа для данных.
2. Принцип модуля.
Под модулем понимается функциональный элемент системы, который: а) оформлен по определенным правилам системы (правила – язык, способ передачи параметров и т.д.); б)имеет средство сопряжения с подобными элементами этой или другой системы. По определению предполагается легкий способ его замены на другой. При построении ОС большое значение имеют параллельно используемые или reentry (реентерабельные) модули. Каждый такой модуль может параллельно (одновременно) использоваться несколькими программами при их исполнении.
Пусть некоторая программа А в процессе своего выполнения обратилась к модулю С. Во время выполнения модуля С произошло прерывание от внешнего устройства, и началась обработка этого прерывания программой В, которая имеет приоритет больше, чем у программы А и С. В ходе выполнения программа В также обратилась к модулю С. Если модуль С не реентерабельный, то такая ситуация недопустима, так как состояния внутренних рабочих переменных в модуле С соответствует выполнению обращения от программы А на момент прерывания t 1, поэтому при повторном вхождении в незавершенный модуль С в момент t 2 текущее состояние рабочих ячеек будет потеряно. Реентерабельность, то есть обеспечение повторной входимости в модуль, достигается различными способами, в основе которых лежит отделение кода от данных, то есть внутренних переменных. При каждом обращении к модулю ему предоставляется отдельная область памяти под внутренние переменные. Разработка реентерабельных программ требует применения специальных приемов программирования.
3. Принцип функциональной избирательности (вытекает из 1-го и 2-го).
В ОС выделяется часть наиболее важных модулей, которые наиболее часто используются и являются основой системы. Эту часть системы называют ядром ОС. Программы, входящие в состав ядра, постоянно находятся в оперативной памяти, доступны для использования в любой момент и называются ОЗУ-резедентными. Остальные системные программы постоянно хранятся на магнитных дисках, называются транзитными и загружаются в оперативную память только при необходимости их выполнения, а при недостатке оперативной памяти могут перекрывать друг друга.
4. Принцип генерируемости.
Этот принцип определяет такой способ исходного представления ОС, который позволял бы настраивать ее под конкретную конфигурацию ЭВМ и конкретный набор прикладных программ, управлением выполнения которых она должна заниматься.
5. Принцип функциональной избыточности.
Этот принцип обеспечивает возможность выполнения одной и той же функциональной операции различными средствами.
6. Принцип «по умолчанию».
Применяется он для упрощения процедуры генерации ОС и для работы с готовой (генерированной) ОС. Он основан на хранении в системе некоторых констант, определяющих параметры и характеристики системы. Значения этих констант используются системой как заданные, если пользователь, оператор или администратор забудут или сознательно не изменят эти значения. Использование этого принципа позволяет сократить число параметров, устанавливаемых пользователем в процессе работы системы.
7. Принцип перемещаемости.
Этот принцип предусматривает построение модулей ОС, исполнение которых не зависит от места расположения в оперативной памяти. Настройка программы модуля на конкретные места (адреса) оперативной памяти, заключающаяся в определении физических адресов, используемых в настойке адресных частей команд, проводится каждый раз при загрузке модуля.
8. Принцип защиты.
Этот принцип определяет необходимость создания средств, ограждающих программы и данные пользователей от искажения, которое может возникнуть из-за нежелательного влияния программ друг на друга, а также влияния пользователей на ОС. Защита программ должна гарантироваться как при их использовании, так и в режиме хранения.