Понятие операционных систем. Основные принципы построения операционных систем К основным принципам построения операционных систем относят

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


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


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


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


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


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


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


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


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


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


Принцип виртуализации Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «идеальной» по характеристикам машине и, следовательно, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности. Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «идеальной» по характеристикам машине и, следовательно, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности. Одним из аспектов виртуализации является организация возможности выполнения в данной ОС приложений, которые разрабатывались для других ОС. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой воз­можности. Одним из аспектов виртуализации является организация возможности выполнения в данной ОС приложений, которые разрабатывались для других ОС. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой воз­можности.


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


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


Принцип совместимости Совместимость на уровне исходных текстов требует наличия соответствующего транслятора в составе системного программного обеспечения, а также совместимости на уровне библиотек и системных вызовов. При этом необходима перекомпиляция имеющихся исходных текстов в новый выполняемый модуль. Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, программу для ПК типа IBM PC желательно выполнить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непонятны. Выходом в таких случаях является использование так называемых прикладных сред или эмуляторов. Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование стандарта POSIX позволяет создавать программы в стиле UNIX, которые впоследствии могут легко переноситься из одной системы в другую.


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


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


Принцип мобильности (переносимости) 2. 2.Важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппаратными средствами. Зависимость от аппаратуры может иметь много форм. Некоторые очевидные формы зависимости включают прямое манипулирование реги­страми и другими аппаратными средствами Если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в не­скольких хорошо локализуемых модулях. Аппаратно- зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно- зависимую структуру в программно задаваемые данные абстрактного типа. Введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения. Введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения.


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


Принцип обеспечения безопасности вычислений Безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Иерархия уровней безопасности, приведенная в стандартах, помечает низший уровень безопасности как D, а высший как А. В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов.


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


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


Принцип обеспечения безопасности вычислений Уровень А является самым высоким уровнем безопасности, он требует в дополнение ко всем требованиям уровня В выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности. А-уровень безопасности занимает своими управляющими меха­низмами до 90 % процессорного времени. Более безопасные системы не только снижают эффективность, но и существенно ограничивают число доступных прикладных пакетов, которые соответствующим образом могут выполняться в подобной системе. Например, для ОС Solaris (версия UNIX) есть несколько тысяч приложений, а для ее аналога В-уровня только около ста.


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


Микроядерные операционные системы Микроядро включает только те функции, которые требуются для определения набора абстрактных сред обработки для прикладных программ и для организации совместной работы приложений в обеспечении сервисов и в действии клиентами и серверами. В результате микроядро обеспечивает только пять различных типов сервисов: управление виртуальной памятью; задания и потоки; межпроцессные коммуникации (IPC - inter-process communication, межпроцессные коммуникации); управление поддержкой ввода/вывода и прерываниями; сервисы набора хоста (host - главный компьютер. Сейчас этим термином обозначают любой компьютер, имеющий IP- адрес) и процессора.


Микроядерные операционные системы Наиболее ярким представителем микроядерных ОС является ОС реального времени QNX. Микроядро QNX поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и сетевые службы нижнего уровня. Микроядро может быть целиком размещено во внутреннем кэше даже таких процессоров, как Intel 486. Разные версии этой ОС имели и различные объемы ядер от 8 до 46 Кбайт. Чтобы построить минимальную систему QNX, требуется добавить к микроядру менеджер процессов, который создает процессы, управляет процессами и памятью процессов. Чтобы ОС QNX была применима не только во встроенных и бездисковых системах, нужно добавить файловую систему и менеджер устройств.


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


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


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




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


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


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


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


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


Предсказуемость ОСРВ Поведение ОС должно быть известно и достаточно точно прогнозируемо. Времена выполнения системных вызовов и временные характеристики поведения системы в различных обстоятельствах должны быть известны разработчику. Поэтому создатель ОСРВ должен приводить следующие характеристики: латентную задержку прерывания (то есть время от момента прерывания до момента запуска задачи): она должна быть предсказуема и согласована с требованиями приложения. Эта величина зависит от числа одновременно «висящих» прерываний; максимальное время выполнения каждого системного вызова. Оно должно быть предсказуемо и не зависимо от числа объектов в системе; максимальное время маскирования прерываний драйверами и ОС.

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

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

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

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

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

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

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

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

1.Единообразная по логике работы память (виртуальная) практически неогра­ниченного объема. Организация работы с информацией в такой памяти производится в терминах обработки данных (в терминах работы с сегментами данных на уровне выбранного пользователем языка программи­рования);

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

3. Произвольное количество внешних устройств (виртуальных), способных ра­ботать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуаль­ного процессора, который инициирует работу этих устройств;

4. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допус­тимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответст­вующей системы управления файлами. Предусмотрено расширение инфор­мационных структур данных, хранимых на виртуальных устройствах.

Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «иде­альной», и, следовательно, чем больше ее архитек­турно-логические характеристики отличны от реально существующих, тем боль­ше степень виртуальности у полученной пользователем машины. Одним из аспектов виртуализации является организация возможности выполне­ния в данной ОС приложений, которые разрабатывались для других ОС. Други­ми словами, речь идет об организации нескольких операционных сред. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой воз­можности.

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

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

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

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

Принцип обеспечения безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользова­телем всех системных ресурсов. Обеспечение защиты информации от несанкци-онированного доступа является обязательной функцией операционных систем. В соответствии со стандартами Национального центра компьютерной безопасности США (NCSC – National Computer Security Center) безопасной считается систе­ма, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полно­мочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Иерархия уровней безопасности отмечает низ­ший уровень безопасности как D , а высший – как А . В класс D попадают системы, оценка которых выявила их несоответствие требо­ваниям всех других классов. Основными свойствами, характерными для систем класса (уровня) С , являются наличие подсистемы учета событий, связанных с безопасностью, и избирательный кон­троль доступа. На уровне С должны присутствовать:

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

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

в) средства учета и наблюдения, обеспечивающие возможность обна­ружить и зафиксировать важные события, связанные с безопас-ностью, или любые попытки получить доступ или удалить системные ресурсы;

г) защита памяти, заключающаяся в том, что память инициализи-руется перед тем, как повторно используется.

На этом уровне система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по записям в журнале, составленным средствами наблюдения и аудита. Системы уровня В основаны на помеченных данных и распределении пользо­вателей по категориям, то есть реализуют мандатный контроль доступа. Каждо­му пользователю присваивается рейтинг защиты, и он может получать доступ к данным только в соответствии с этим рейтингом. Этот уровень в отличие от уровня С защищает систему от ошибочного поведения пользователя. Уровень А является самым высоким уровнем безопасности и в допол­нение ко всем требованиям уровня В требует выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности.

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

Таблица 1. Принципы построения операционных систем

п/п

Принцип

Сущность

Частотный

Наиболее часто встречающиеся операции выполняются наиболее быстро.

Модульности

ОС создают на основе объединения самостоятельных функциональных элементов системы.

Функциональной избирательности

Наиболее значимые и часто используемые модули выделяют в ядро ОС.

Генерируемости

Настройка системных программ исходя из конкретной конфигурации ЭВМ и круга решаемых задач.

По умолчанию

ОС самостоятельно задает параметры работы вычислительной системы, если их не задает пользователь.

Перемещаемости

Построение модулей, исполнение которых не зависит от расположения в ОЗУ.

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

Независимости программ от внешних устройств

Наращиваемости и открытости

Открытая ОС доступна для анализа специалистам, а наращиваемая – для модификации и совершенствования.

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

1.10. Переносимость ос

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

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

Контрольные вопросы

1. В чем отличие операционных систем от других программ? 2. Каковы основные функции операционной системы? 3. Какие виды программного обеспечения Вы знаете? 4. Что является основной частью операционной системы? 5. Какие категории операционных систем Вам известны? 6. Возможно ли экстраполировать (распространить) принципы построения операционных систем на разработку прикладных программ? 7. Определение операционной системы

Глава 2. Архитектура ос

2.1. Архитектура на базе ядра в привилегированном режиме

Концепция архитектуры.

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

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

Архитектура ОС, основанная на привилегированном ядре и приложениях пользо­вателя, считается классической. Она используется, в частности, в большинстве ва­риантов ОС Unix и с определенными модификациями - в ОС Windows NT .

Ядро и вспомогательные модули ОС

Ядро включает модули, выполняющие основные функции ОС:

- управление процессами; управление памятью;

Управление вводом-выводом и файловая система;

Интерфейс прикладного программирования API (Application Program Interface ) для поддержки обращений к ядру из приложений.

Для обеспечения высокой скорости работы ОС модули ядра (все или большая часть), являются резидентными , т.е. постоянно находятся в оперативной памяти.

Вспомогательные модули по выполняемым функциям обычно подразделяют­ся на следующие группы:

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

системные обрабатывающие программы (компиляторы, редакторы связей, заг­рузчики, отладчики, текстовые или графические редакторы);

библиотеки процедур различного назначения для разработки приложений (мате­матические функции, функции ввода-вывода и т.д.);

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

Вспомогательные модули ОС загружаются в оперативную память только на вре­мя выполнения (транзитные модули).

Решение о том, является ли какая-либо программа частью ОС или нет, принима­ет производитель ОС. Так, самостоятельное приложение, имеющее спрос, может быть включено в состав ОС (например, Веб-браузер Internet Explorer ), или, наоборот, мо­дуль ОС может превратиться в отдельное приложение.

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

Рис. 1 - Взаимодействие между ядром и другими модулями

Привилегированный режим ядра и пользовательский режим

Операционная система для осуществления своих управляющих функций должна иметь по отношению к приложениям определенные привилегии. Поэтому аппаратура компьютера поддерживает как минимум два режима:

Пользовательский режим (user mode ) - для работы приложений ;

Привилегированный режим, он же - режим ядра (kernel mode ), или режим суперви­зора (supervisor mode ) - для работы ОС или ее частей.

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

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

    переключением процессора с задачи на задачу;

    управлением устройствами ввода-вывода;

    доступом к механизмам распределения и защиты памяти.

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

Если аппаратура (процессор) поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты и соответствующих прав доступа. Прямого соответствия между числом аппа­ратно реализуемых и программно реализуемых уровней привилегий нет. Так, на базе четырех уровней процессоров архитектуры х86 OS/2 строит трехуровневую, а Windows NT и Unix - двухуровневую систему привилегий.

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

Многослойная структура ОС

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

Система представляется как иерархия слоев.

Функции нижележащего слоя являются примитивами для построения более слож­ных функций вышележащего слоя.

Взаимодействие слоев осуществляется через посредство функций межслойного интерфейса .

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

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

В

Утилиты, системные обрабатывающие программы, библиотеки процедур

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

Аппаратура

Рис. 2 Трехслойная структура вычислительной системы.

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

Многослойная структура ядра

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


Рис.3. Многослойная структура ядра ОС

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

Машино-зависимые модули - программные модули, в которых отображается специфика аппаратной платформы компьютера. В идеале этот слой полностью эк­ранирует вышележащие слои от особенностей аппаратуры, т.е. позволяет делать модули вышележащих слоев машинно-независимыми (пригодными для всех типов платформ, поддерживаемых данной ОС). Примером может служить слой HAL (Hardware Abstraction Layer ) в Windows NT /2000 . На уровне HAL работа с устрой­ством определенного типа (накопитель, видеоплата, мышь и т.п.) всегда описыва­ется при помощи одного и того же заранее определенного набора функций. В слу­чае, если устройство имеет иной набор функций (например, устаревший 3d -ускоритель может не поддерживать многих современных функций), драйвер обязан эму­лировать стандартные функции с тем, чтобы ОС могла не заботиться о том, какое конкретно устройство установлено.

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

Менеджеры ресурсов . Модули этого уровня реализуют управление основными ресурсами системы. Группировка модулей в менеджеры обычно осуществляется по

функциям основных подсистем ОС: выделяются менеджеры процессов, ввода-выво­да и файловой системы (могут быть объединены), оперативной памяти.

Интерфейс системных вызовов . Взаимодействует непосредственно с приложе­ниями и системными утилитами, образуя прикладной программный интерфейс ОС (API ).

В 60-е годы определение операционной системы могло бы выглядеть так: программное обеспечение, которое управляет аппаратными средствами. Но в настоящее время требуется более глубокое определение, так как аппаратура сильно изменилась.

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

Основное назначение ОС состоит в выполнении двух главных задач:

поддержка работы всех программ, обеспечение их взаимодействия с аппаратурой;

предоставление пользователю возможностей общего управления машиной.

Не существует единой точки зрения на определение ОС.

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

Второй подход - ограничительный.

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

Рассмотрим функции ОС с точки зрения "ограничительного метода". К ним относятся:

управление процессором путем чередования выполнения программ;

обработка прерываний и синхронизация доступа к ресурсам вычислительной системы;

управление памятью путем выделения программам на время их выполнения требуемой памяти;

управление устройствами путем инициализации запросов на ввод-вывод, управление очередями и фиксация завершения обменов;

управление инициализацией программ и обеспечение межпрограммных связей;

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

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

Структура системы зависит от того, каким образом устанавливается соотношение между функциями и объектами, т.е. от стратегий реализаций функций.

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

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

Рис.2. Система однозначного соответствия между функциями и объектами

Рис.3. Компоновка функции управления конкретным объектом в рамках одного модуля: а - модули системы; б - структура системы

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

Однако расслоение может принимать и иные формы. Так одни операции могут реализовываться модулями ОС, а другие - модулями, входящими в прикладные программы, но все модули прикладных программ должны работать под контролем ОС.

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

В самом общем виде ОС присущи 2 функции:

создание комплекса логических ресурсов, более удобных в управлении по сравнению с физическими ресурсами аппаратуры;

обеспечение механизма доступа, управления очередями и защиты в условиях конкуренции объектов системы за предоставление этих ресурсов.

Известно большое количество способов реализации этих двух функций. Конкретные средства обеспечения логических ресурсов и механизмов доступа для различных систем могут оказаться разными.

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

определения среды, в которой создаются и выполняются программы;

создания методов доступа к средствам вычислительной системы;

построения операционных интерфейсов;

управления ресурсами системы.

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

Классификация ОС

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

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

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

Особенности алгоритмов управления ресурсами

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

Поддержка многозадачности

По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:

однозадачные (например, MS-DOS, MSX);

многозадачные (OC EC, OS/2, UNIX, Windows).

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

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

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

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

Поддержка многопользовательского режима

По числу одновременно работающих пользователей ОС делятся на:

однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);

многопользовательские (UNIX, Windows NT).

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

Вытесняющая и невытесняющая многозадачность

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

невытесняющая многозадачность (NetWare, Windows 3.x);

вытесняющая многозадачность (Windows NT, OS/2, UNIX).

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

Многопроцессорная обработка

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

В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.

Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС.

Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам.

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

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

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

Особенности аппаратных платформ

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

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

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

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

Другие требования предъявляются к операционным системам кластеров. Кластер - слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой. Наряду со специальной аппаратурой для функционирования кластерных систем необходима и программная поддержка со стороны операционной системы, которая сводится в основном к синхронизации доступа к разделяемым ресурсам, обнаружению отказов и динамической реконфигурации системы. Одной из первых разработок в области кластерных технологий были решения компании Digital Equipment на базе компьютеров VAX. Недавно этой компанией заключено соглашение с корпорацией Microsoft о разработке кластерной технологии, использующей Windows NT. Несколько компаний предлагают кластеры на основе UNIX-машин.

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

Особенности областей использования

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

системы реального времени (QNX, RT/11);

системы, работающие в пакетном режиме (например, OC EC);

диалоговые системы (UNIX, VMS),;

сетевой доступ;

комбинированные системы;

однопрограммные (все остальные - мультипрограммные).

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

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

Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину. Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая "выгодна" системе, и, кроме того, имеются накладные расходы вычислительной мощности на более частое переключение процессора с задачи на задачу. Критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.

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

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

Особенности методов построения

При описании операционной системы часто указываются особенности ее структурной организации и основные концепции, положенные в ее основу.

К таким базовым концепциям относятся:

Способы построения ядра системы - монолитное ядро или микроядерный подход.

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

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

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

Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

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

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