Принципы построения ОС
- Принцип модульности
Модуль – функционально законченный элемент системы, отвечающий требованиям межмодульного интерфейса. Из определения следует, что один модуль можно заменить на другой. Способы обособления отдельных частей ОС могут различаться, но чаще всего разделение происходит по функциональному принципу.
Особенно важное значение при построении ОС имеют модули, позволяющие более эффективно использовать ресурсы вычислительной системы:
- привилегированные;
- повторно входимые;
- реентерабельные.
В некоторых ОС реентерабельность достигается автоматически:
- при неизменяемости кодовых частей программы при исполнении;
- при автоматическом распределении регистров;
- при автоматическом отделении кодовых частей программ от данных и помещении данных в системную область памяти.
Принцип модульности отражает технологические и эксплуатационные свойства ОС. Наибольший эффект достигается при распространении принципа модульности на ОС, прикладные программы и аппаратуру.
- Принцип функциональной избирательности
Часть модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса, называется ядром ОС. При формировании состава ядра следует учитывать два противоречивых требования:
- в состав ядра должны войти наиболее часто используемые системные модули;
- количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, не был слишком большим.
В состав ядра входят, как правило, следующие модули:
- модули по управлению системой прерываний;
- средства по переводу программ из состояния выполнения в состояние ожидания, готовности и обратно;
- средства по распределению основных ресурсов: оперативной памяти и процессорного времени.
Транзитные программные модули загружаются в память только при необходимости и в случае отсутствия свободного дискового пространства могут быть замещены другими транзитными модулями.
- Принцип генерируемости ОС
Принцип генерируемости - возможность настраивать системную супервизорную часть (ядро и основные компоненты), исходя из конкретной конфигурации вычислительного комплекса и класса решаемых задач. Процедура генерации производится с помощью программы-генератора и языка описания входных данных для этой программы. В результате генерации получается полная версия ОС – совокупность системных наборов модулей и данных.
Принцип модульности положительно проявляется при генерации ОС. Он упрощает настройку ОС на требуемую конфигурацию вычислительной системы. Принцип генерируемости реализован в ОС, типа UNIX.
- Принцип функциональной избыточности
Этот принцип дает возможность проведения одной и той же работы различными способами. В состав ОС может входить:
- несколько типов планировщиков (модулей супервизора, управляющих тем или иным видом ресурсов);
- различные средства организации связи между вычислительными процессами.
Это дает возможность пользователям:
- быстро и наиболее адекватно адаптировать ОС к определенной конфигурации вычислительной системы;
- обеспечить максимально эффективную загрузку технических средств при решении конкретного класса задач;
- получить максимальную производительность при решении заданного класса задач.
- Принцип виртуализации
Построение виртуальных ресурсов, их распределение и использование в настоящее время имеет место почти в каждой ОС. Этот принцип позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов и использовать единую централизованную схему распределения ресурсов.
Понятие виртуальная машина является итогом концепции виртуальности. Любая ОС, являясь средством распределения ресурсов и организуя по определенным правилам управление процессами, скрывает от пользователя и его приложений реальные аппаратные и иные ресурсы, заменяя их абстракциями. Пользователь видит виртуальную машину как некое устройство, способное воспринимать его программы и команды. Пользователя не интересует реальная конфигурация вычислительной системы и способы управления ее компонентами. Он оперирует с теми ресурсами, которые ему предоставлены в рамках виртуальной машины.
Виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представлении имеют новые или улучшенные характеристики, часто упрощающие работу с системой. Характеристики могут быть произвольными, но обычно пользователи хотят видеть идеальную по своим архитектурным характеристикам машину:
- единообразная по логике работы память практически неограниченного объема. Среднее время доступа соизмеримо со временем доступа к оперативной памяти. Организация работы с информацией в такой памяти производится в терминах обработки данных на уровне выбранного пользователем языка программирования;
- произвольное количество (виртуальных) процессоров, способных работать параллельно и взаимодействовать во время работы. Способы управления процессорами (синхронизация и информационные взаимодействия) реализованы и доступны пользователям на уровне используемого языка в терминах управления процессами;
- произвольное количество (виртуальных) внешних устройств, способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, которые инициируют работу этих устройств. Информация, хранимая или передаваемая на виртуальные устройства, не ограничена допустимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа в терминах соответствующей системы управления файлами. Предусмотрено расширение информационных структур данных, хранимых на виртуальных устройствах.
Степень приближения к «идеальной» виртуальной машине может быть большей или меньшей в каждом конкретном случае. Чем больше виртуальная машина, реализуемая средствам ОС на базе конкретной аппаратуры, приближена к идеальной по характеристикам машине, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности у полученной пользователем машины.
- Принцип независимости программ от внешних устройств
Этот принцип в настоящее время реализуется в подавляющем большинстве современных ОС общего назначения. Принцип независимости заключается в том, что связь программ с конкретными устройствами производится не на уровне трансляции программ, а в период планирования ее исполнения. При работе с новым устройством для хранения данных перекомпиляция не требуется.
Принцип независимости позволяет одинаково осуществлять операции управления внешними устройствами независимо от конкретных физических характеристик. Смена носителя и данных, размещенных на нем, не принесет каких-либо изменений в программу, если в системе реализован принцип независимости.
- Принцип совместимости
Одним из аспектов совместимости является способность ОС выполнять программы, написанные:
- для других ОС;
- для более ранних версий данной операционной системы;
- для другой аппаратной платформы.
Совместимость подразделяется на два аспекта:
- двоичная совместимость;
- совместимость на уровне исходных текстов приложений.
При двоичной совместимости можно взять исполняемую программу и выполнить ее в среде другой ОС. Для этого необходимы:
- совместимость на уровне команд процессора;
- совместимость на уровне системных вызовов;
- совместимость на уровне библиотечных вызовов, если они являются динамически связываемыми.
Совместимость на уровне исходных текстов требует:
- наличия соответствующего транслятора в составе системного программного обеспечения;
- совместимости на уровне библиотек и системных вызовов.
Необходимо перекомпилировать имеющиеся исходные тексты в новый выполняемый модуль.
Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование стандарта POSIX позволяет создавать программы в стиле UNIX, которые могут легко переноситься из одной ОС в другую.
- Принцип открытой и наращиваемой ОС
Открытая ОС доступна для анализа как системным специалистам, обслуживающим вычислительную систему, так и пользователям. Наращиваемая ОС позволяет не только использовать возможности генерации, но и вводить в состав ОС новые модули, совершенствовать старые и т.д.
Этот принцип требует, чтобы можно было легко внести дополнения и изменения в ОС, если потребуется, и не нарушить целостность ОС.
К открытым системам в первую очередь относятся UNIX-подобные системы.
- Принцип переносимости
Операционная система должна относительно легко переноситься:
- с процессора одного типа на процессор другого типа;
- с аппаратной платформы (архитектуры вычислительной системы) одного типа на аппаратную платформу другого типа.
Принцип переносимости близок принципу совместимости, но это не одно и то же.
Написание переносимой ОС, как и любой переносимой программы, должно следовать определенным правилам:
- большая часть операционной системы должна быть написана на языке, который имеется во всех вычислительных системах, на которые планируется в дальнейшем ее переносить. Это должен быть стандартизованный язык высокого уровня, например, язык С. программы, написанные на ассемблере, в общем случае не являются переносимыми;
- минимизировать или исключить ту часть кода, которая непосредственно взаимодействует с аппаратурой. Если аппаратный код не может быть исключен, он должен быть изолирован в нескольких модулях.
- Принцип обеспечения безопасности вычислений
Обеспечение безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют следующие свойства:
- защита ресурсов одного пользователя от других;
- установка квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов.
Обеспечение безопасности информации от несанкционированного доступа является обязательной функцией сетевых операционных систем. Во многих современных ОС гарантируется степень безопасности данных, соответствующих уровню С2 в системе стандартов США.
В соответствии с требованиями Оранжевой книги безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации». Низший класс – D, высший – A.
Основные свойства для систем класса C:
- наличие подсистемы учета событий, связанных с безопасностью;
- избирательный контроль доступа.
Класс C делится на два подуровня:
- C1 обеспечивает защиту данных от ошибок пользователей, но не злоумышленников;
- C2 более строгий уровень контроля.
На уровне C2 должны присутствовать:
- средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе;
- избирательный контроль доступа, позволяющий владельцу ресурса определить, кто имеет доступ к ресурсу и что он может с ним делать. Владелец делает это путем предоставления прав доступа пользователю или группе пользователей;
- средства учета и наблюдения, обеспечивающие возможность обнаружить и зафиксировать важные события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы;
- защита памяти, память повторно инициируется перед повторным использованием.
На уровне C2 система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по протоколам, оставленным средствами наблюдения и аудита.