Функции ОС
· прием от пользователя (оператора) заданий или команд, сформулированных на соответствующих языках, и их обработка;
· загрузка в ОП программ и их исполнение;
· инициация программы (передача ей управления);
· прием и исполнение программных запросов на запуск, приостановку, остановку других программ; организация взаимодействия между задачами;
· идентификация всех программ и данных;
· обеспечение работы системы управления файлами и/или систем управления БД;
· обеспечение режима мультипрограммирования (многозадачности);
· планирование и диспетчеризация задач;
· обеспечение функций по организации и управлению операциями ввода/вывода;
· удовлетворение жестким ограничениям на время ответа в режиме реального времени (для соответствующих ОС);
· управление памятью, организация виртуальной памяти;
· организация механизмов обмена сообщениями и данными между выполняющимися программами;
· защита одной программы от влияния другой; обеспечение сохранности данных;
· аутентификация, авторизация и другие средства обеспечения безопасности;
· предоставление услуг на случай частичного сбоя системы;
· обеспечение работы систем программирования;
· параллельное исполнение нескольких задач.
Функции ОС автономного компьютера обычно группируются в соответствии с типами локальных ресурсов, которыми управляет ОС. Такие группы называют подсистемами.
ü подсистема управления процессами,
ü подсистема управления памятью,
ü подсистема управления файлами,
ü подсистема управления внешними устройствами,
ü подсистема пользовательского интерфейса,
ü подсистема защиты данных и администрирования.
Замечание. Часто под ОС обычно понимается то ПО, которое запускается в режиме ядра (привилегированном режиме, режиме супервизора).
Операционные системы различаются особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими другими свойствами.
Приведем классификация ОС по нескольким наиболее основным признакам.
Особенности алгоритмов управления ресурсами. От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей сетевой ОС в целом. Поэтому, характеризуя ОС, приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера.
Например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на
ü многозадачные и однозадачные,
ü многопользовательские и однопользовательские,
ü на системы, поддерживающие многонитевую обработку и не поддерживающие ее,
ü на многопроцессорные и однопроцессорные системы.
Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
· однозадачные (например, MS-DOS, MSX);
· многозадачные (мультизадачные) (OC EC, OS/2, UNIX, Windows 95).
Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем. Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся на:
· однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);
· многопользовательские (UNIX, Windows NT).
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
· невытесняющая многозадачность (NetWare, Windows 3.x);
· вытесняющая многозадачность (Windows NT, OS/2, UNIX).
При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Поддержка многонитевости. Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Многопроцессорная обработка. Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки — мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
Обратим внимание, что нами были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов — процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами — подсистем управления памятью, файлами, устройствами ввода-вывода.
Особенности областей использования операционных систем
Многозадачные ОС подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности:
- системы пакетной обработки (например, OC EC);
- системы разделения времени (UNIX, VMS);
- системы реального времени (QNX, RT/11).
Системы пакетной обработки предназначены для решения задач в основном вычислительного характера, не требующих быстрого получения результатов.
Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, то есть решение максимального числа задач в единицу времени.
Схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины (например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом). Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается «выгодное» задание.
Следовательно, в таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени. В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказывается от процессора, например, из-за необходимости выполнить операцию ввода-вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки — изоляцию пользователя-программиста от процесса выполнения его задач.
Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой.
В системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину.
Системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая «выгодна» системе, и, кроме того, увеличивается время работы, так как используется частое переключение процессора с задачи на задачу.
Критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка или технологическими процессами, такими, как гальваническая линия, доменный процесс и т.п.
Существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа, управляющая объектом, в противном случае может произойти авария: спутник выйдет из зоны видимости, экспериментальные данные, поступающие с датчиков, будут потеряны, толщина гальванического покрытия не будет соответствовать норме.
Таким образом, критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы — реактивностью. Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ.
Некоторые операционные системы могут совмещать в себе свойства систем разных типов, например, часть задач может выполняться в режиме пакетной обработки, а часть — в режиме реального времени или в режиме разделения времени. В таких случаях режим пакетной обработки часто называют фоновым режимом.
Особенности архитектуры (структуры) операционных систем
Главной особенностью структурной организации ОС является способ построения ядра системы. По способом построения ядра ОС подразделяются на монолитные и микроядерные. Ввиду особой важности данных подходов рассмотрим их подробнее.
Напомним необходимые основные моменты.
Микропроцессоры Intel x 86/ Pentium аппаратно поддерживают 4 уровня привилегий (режима): 0..3.
Большинство ОС поддерживают двухуровневую систему привилегий: привилегированный режим (режим ядра, пространство ядра) и пользовательский режим (пространство пользователя). (Например, Windows NT, UNIX)
В режиме ядра ( kernel mode ) выполняются все разрешенные инструкции, в ходе выполнения доступна вся оперативная память и любые регистры. На время выполнения кода ОС микропроцессор переключается в режим ядра.
В пользовательском режиме ( user mode ) доступ к регистрам и памяти ограничен. Приложению не будет позволено работать с памятью за пределами набора адресов, установленного ОС, или обращаться напрямую к регистрам устройств.
Под архитектурой ОС обычно понимают структурную организацию ОС на основе программных модулей.
Современные ОС представляют собой хорошо структурированные модульные системы.
Единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Наиболее общим подходом к структуризации ОС является подразделение модулей две группы:
Þ модули, выполняющие основные функции ОС — ядро ОС;
Þ модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют базовые функции ОС
· управление устройствами ввода-вывода.
Функции, входящие в состав ядра можно разделить на два класса.
1 класс. Функции для решения внутрисистемных задач организации вычислительного процесса (переключение контекстов процессов, загрузка/выгрузка страниц, обработка прерываний). Эти функции недоступны для приложений.
2 класс . Функции для поддержки приложений (доступны приложениям). Эти функции создают для приложений так называемую прикладную программную среду и образуют интерфейс прикладного программирования — API . Приложения обращаются к ядру с запросами — системными вызовами. Функции API обслуживают системные вызовы — предоставляют доступ к ресурсам системы в удобной и компактной форме, без указания деталей их физического расположения.
Функции модулей ядра — наиболее часто используемые функции ОС Þ Скорость выполнения этих функций определяет производительность всей системы в целом Þ Все (большинство) модули ядра являются резидентными.
Вспомогательные модули ОС
Остальные модули ОС выполняют полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования, дефрагментации диска и т.п. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур и фугкций.
Обычно вспомогательные модули подразделяются на следующие группы:
· утилиты — программы, которые решают отдельные задачи управления и сопровождения компьютерной системы (сжатие, дефрагментация … продолжить. );
· библиотеки процедур и функций различного назначения (библиотека математических функций, библиотека функций ввода-вывода и т.д.);
· программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор, некоторые игры (какие, например, поставляются в составе ОС. );
· системные обрабатывающие программы — текстовые и графические редакторы, компиляторы, компоновщики, отладчики (Замечание. Чаще эти программы являются частью систем программирования).
Обратим внимание, вспомогательные модули ОС обращаются к функциям ядра, как и обычные приложения, посредством системных вызовов.
Вспомогательные модули, в отличие от модулей ядра, являются транзитными.
Обратим внимание на то, что многие модули ОС оформлены как обычные приложения.Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Некоторая программа может су щ ествовать определенное время как пользовательское приложение, а потом стать частью ОС (например, Web -браузер компании Microsoft — сначала поставлялся как отдельное приложение, затем стал частью ОС Windows , затем по решению суда снова превратился (уже?) в самостоятельное приложение).
Для того, чтобы многозадачная ОС могла выполнять функции защиты приложений от влияния друг друга и защиты самой себя от приложений, для нее на аппаратном уровне обеспечиваются определенные привилегии. Подразумевается, что ОС или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.
Привилегии ОС обеспечиваюся тем, что выполнение некоторых инструкций в пользовательском режиме запрещается. Например, выполнение инструкции доступа к памяти для приложения разрешается, если происходит обращение к области памяти, отведенной данному приложению, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями.
Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро — та, часть ОС, которая работает в привилегированном режиме.