Лекция №17 Архитектура операционных систем Вариации Ядро в привилегированном режиме Многослойная структура ОС Типовые средства аппаратной поддержки ОС средства поддержки привилегированного режима; средства трансляции адресов; средства переключения процессов; система прерываний; системный таймер; средства защиты областей памяти. Микроядерная архитектура Выводы Простейшая структуризация ОС состоит в разделении всех компонентов ОС на модули, выполняющие основные функции ОС (ядро), и модули, выполняющие вспомогательные функции ОС. Вспомогательные модули ОС оформляются либо в виде приложений (утилиты и системные обрабатывающие программы), либо в виде библиотек процедур. Вспомогательные модули загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Модули ядра постоянно находятся в оперативной памяти, то есть являются резидентными. При наличии аппаратной поддержки режимов с разными уровнями полномочий устойчивость ОС может быть повышена путем выполнения функций ядра в привилегированном режиме, а вспомогательных модулей ОС и приложений — в пользовательском. Это дает возможность защитить коды и данные ОС и приложений от несанкционированного доступа. ОС может выступать в роли арбитра в спорах приложений за ресурсы. Ядро, являясь структурным элементом ОС, в свою очередь, может быть логически разложено на следующие слои (начиная с самого нижнего): машинно-зависимые компоненты ОС; базовые механизмы ядра; менеджеры ресурсов; интерфейс системных вызовов. В многослойной системе каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс. На основе функций нижележащего слоя следующий вверх по иерархии слой строит свои функции — более сложные и более мощные, которые, в свою очередь, оказываются примитивами для создания еще более мощных функций вышележащего слоя. Многослойная организация ОС существенно упрощает разработку и модернизацию системы. Выводы Любая ОС для решения своих задач взаимодействует с аппаратными средствами компьютера, а именно: средствами поддержки привилегированного режима и трансляции адресов, средствами переключения процессов и защиты областей памяти, системой прерываний и системным таймером. Это делает ОС машинно-зависимой, привязанной к определенной аппаратной платформе. Переносимость ОС может быть достигнута при соблюдении следующих правил. Во-первых, большая часть кода должна быть написана на языке, трансляторы которого имеются на всех компьютерах, куда предполагается переносить систему. Во-вторых, объем машиннозависимых частей кода, которые непосредственно взаимодействуют с аппаратными средствами, должен быть по возможности минимизирован. В-третьих, аппаратнозависимый код должен быть надежно локализован в нескольких модулях. Микроядерная архитектура является альтернативой классическому способу построения операционной системы, в соответствии с которым все основные функции операционной системы, составляющие многослойное ядро, выполняются в привилегированном режиме. В микроядерных ОС в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. Все остальные высокоуровневые функции ядра оформляются в виде приложений, работающих в пользовательском режиме. Микроядерные ОС удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За эти достоинства приходится платить снижением производительности, что является основным недостатком микроядерной архитектуры. Прикладная программная среда — совокупность средств ОС, предназначенная для организации выполнения приложений, использующих определенную систему машинных команд, определенный тип API и определенный формат исполняемой программы. Каждая ОС создает как минимум одну прикладную программную среду. Проблема состоит в обеспечении совместимости нескольких программных сред в рамках одной ОС. При построении множественных прикладных сред используются различные архитектурные решения, концепции эмуляции двоичного кода, трансляции API. Основные принципы построения операционных систем Принцип модульности Принцип функциональной избирательности Принцип генерируемости ОС Принцип функциональной избыточности Принцип виртуализации Принцип независимости программ от внешних устройств Принцип совместимости Принцип открытой и наращиваемой ОС Принцип мобильности (переносимости) Принцип обеспечения безопасности вычислений Принцип модульности Модуль – функционально законченный элемент системы, отвечающий требованиям межмодульного интерфейса. Из определения следует, что один модуль можно заменить на другой. Способы обособления отдельных частей ОС могут различаться, но чаще всего разделение происходит по функциональному принципу. Особенно важное значение при построении ОС имеют модули, позволяющие более эффективно использовать ресурсы вычислительной системы: - привилегированные; - повторно входимые; - реентерабельные. В некоторых ОС реентерабельность достигается автоматически: - при неизменяемости кодовых частей программы при исполнении; - при автоматическом распределении регистров; - при автоматическом отделении кодовых частей программ от данных и помещении данных в системную область памяти. Принцип модульности отражает технологические и эксплуатационные свойства ОС. Наибольший эффект достигается при распространении принципа модульности на ОС, прикладные программы и аппаратуру. Принцип функциональной избирательности Часть модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса, называется ядром ОС. При формировании состава ядра следует учитывать два противоречивых требования: - в состав ядра должны войти наиболее часто используемые системные модули; - количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, не был слишком большим. В состав ядра входят, как правило, следующие модули: - модули по управлению системой прерываний; - средства по переводу программ из состояния выполнения в состояние ожидания, готовности и обратно; - средства по распределению основных ресурсов: оперативной памяти и процессорного времени. Транзитные программные модули загружаются в память только при необходимости и в случае отсутствия свободного дискового пространства могут быть замещены другими транзитными модулями. Принцип генерируемостиОС Принцип генерируемости - возможность настраивать системную супервизорную часть (ядро и основные компоненты), исходя из конкретной конфигурации вычислительного комплекса и класса решаемых задач. Процедура генерации производится с помощью программыгенератора и языка описания входных данных для этой программы. В результате генерации получается полная версия ОС – совокупность системных наборов модулей и данных. Принцип модульности положительно проявляется при генерации ОС. Он упрощает настройку ОС на требуемую конфигурацию вычислительной системы. Принцип генерируемости реализован в ОС, типа UNIX. Принцип функциональной избыточности Этот принцип дает возможность проведения одной и той же работы различными способами. В состав ОС может входить: - несколько типов планировщиков (модулей супервизора, управляющих тем или иным видом ресурсов); - различные средства организации связи между вычислительными процессами. Это дает возможность пользователям: - быстро и наиболее адекватно адаптировать ОС к определенной конфигурации вычислительной системы; - обеспечить максимально эффективную загрузку технических средств при решении конкретного класса задач; - получить максимальную производительность при решении заданного класса задач. Принцип виртуализации Характеристики могут быть произвольными, но обычно пользователи хотят видеть идеальную по своим архитектурным характеристикам машину: - единообразная по логике работы память практически неограниченного объема. Среднее время доступа соизмеримо со временем доступа к оперативной памяти. Организация работы с информацией в такой памяти производится в терминах обработки данных на уровне выбранного пользователем языка программирования; - произвольное количество (виртуальных) процессоров, способных работать параллельно и взаимодействовать во время работы. Способы управления процессорами (синхронизация и информационные взаимодействия) реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами; - произвольное количество (виртуальных) внешних устройств, способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, которые инициируют работу этих устройств. Информация, хранимая или передаваемая на виртуальные устройства, не ограничена допустимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответствующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах. Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствам ОС на базе конкретной аппаратуры, приближена к идеальной по характеристикам машине, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности у полученной пользователем машины. Принцип независимости программ от внешних устройств Этот принцип в настоящее время реализуется в подавляющем большинстве современных ОС общего назначения. Принцип независимости заключается в том, что связь программ с конкретными устройствами производится не на уровне трансляции программ, а в период планирования ее исполнения. При работе с новым устройством для хранения данных перекомпиляция не требуется. Принцип независимости позволяет одинаково осуществлять операции управления внешними устройствами независимо от конкретных физических характеристик. Смена носителя и данных, размещенных на нем, не принесет каких-либо изменений в программу, если в системе реализован принцип независимости. Принцип совместимости Одним из аспектов совместимости является способность ОС выполнять программы, написанные: - для других ОС; - для более ранних версий данной операционной системы; - для другой аппаратной платформы. Совместимость подразделяется на два аспекта: - двоичная совместимость; - совместимость на уровне исходных текстов приложений. При двоичной совместимости можно взять исполняемую программу и выполнить ее в среде другой ОС. Для этого необходимы: - совместимость на уровне команд процессора; - совместимость на уровне системных вызовов; - совместимость на уровне библиотечных вызовов, если они являются динамически связываемыми. Совместимость на уровне исходных текстов требует: - наличия соответствующего транслятора в составе системного программного обеспечения; - совместимости на уровне библиотек и системных вызовов. Необходимо перекомпилировать имеющиеся исходные тексты в новый выполняемый модуль. Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование стандарта POSIX позволяет создавать программы в стиле UNIX, которые могут легко переноситься из одной ОС в другую. Принцип открытой и наращиваемой ОС Открытая ОС доступна для анализа как системным специалистам, обслуживающим вычислительную систему, так и пользователям. Наращиваемая ОС позволяет не только использовать возможности генерации, но и вводить в состав ОС новые модули, совершенствовать старые и т.д. Этот принцип требует, чтобы можно было легко внести дополнения и изменения в ОС, если потребуется, и не нарушить целостность ОС. К открытым системам в первую очередь относятся UNIX-подобные системы. Принцип мобильности (переносимости) Операционная система должна относительно легко переноситься: - с процессора одного типа на процессор другого типа; - с аппаратной платформы (архитектуры вычислительной системы) одного типа на аппаратную платформу другого типа. Принцип переносимости близок принципу совместимости, но это не одно и то же. Написание переносимой ОС, как и любой переносимой программы, должно следовать определенным правилам: - большая часть операционной системы должна быть написана на языке, который имеется во всех вычислительных системах, на которые планируется в дальнейшем ее переносить. Это должен быть стандартизованный язык высокого уровня, например, язык С. программы, написанные на ассемблере, в общем случае не являются переносимыми; - минимизировать или исключить ту часть кода, которая непосредственно взаимодействует с аппаратурой. Если аппаратный код не может быть исключен, он должен быть изолирован в нескольких модулях. Принцип обеспечения безопасности вычислений Обеспечение безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют следующие свойства: - защита ресурсов одного пользователя от других; - установка квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов. Обеспечение безопасности информации от несанкционированного доступа является обязательной функцией сетевых операционных систем. Во многих современных ОС гарантируется степень безопасности данных, соответствующих уровню С2 в системе стандартов США. В соответствии с требованиями Оранжевой книги безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Низший класс – D, высший – A. Основные свойства для систем класса C: - наличие подсистемы учета событий, связанных с безопасностью; - избирательный контроль доступа. Класс C делится на два подуровня: - C1 обеспечивает защиту данных от ошибок пользователей, но не злоумышленников; - C2 более строгий уровень контроля. На уровне C2 должны присутствовать: - средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе; - избирательный контроль доступа, позволяющий владельцу ресурса определить, кто имеет доступ к ресурсу и что он может с ним делать. Владелец делает это путем предоставления прав доступа пользователю или группе пользователей; - средства учета и наблюдения, обеспечивающие возможность обнаружить и зафиксировать важные события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы; - защита памяти, память повторно инициируется перед повторным использованием. На уровне C2 система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по протоколам, оставленным средствами наблюдения и аудита. Задание на семинар 1. Подготовить доклад по ОС на 15 минут. Презентация, особенности, назначение, история. Рассказывать по памяти! БЕЗ БУМАЖКИ. 2. Подготовить по 10 вопросов к другим группам по реализации тех или иных свойств ОС. 3. Всем написать на 1 листе 14 кегелем с одинарным интервалом эссе: Как я вижу развитие безопасности ОС в ближайшие 5 лет.