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

Предмет: Операционные системы.
Вопрос: №8

—————————————————————

Принципы построения ОС:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, программу для ПК типа IBM PC желательно выполнить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непо-нятны. В таком случае процессор типа 680×0 (или PowerPC) должен исполнять двоичный код, предназначенный для процессора i80x86. Процессор 80×86 имеет свои собственные дешифратор команд, регистры и внутреннюю архитектуру. Процессор 680×0 не понимает двоичный код 80×86, поэтому он должен выбрать каждую коман-ду, декодировать ее, чтобы определить, для

чего она предназначена, а затем выполнить эквивалентную подпрограмму, написанную для 680×0.

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

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

9.) Принцип мобильности: операционная система относительно легко должна перено-

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

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

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

Введение стандартов POSIX преследовало цель обеспечить переносимость создава-емого программного обеспечения.

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

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

—————————————————————

Что такое POSIX : платформенно-незави-симый системный интерфейс для компьюте-рного окружения POSIX (Portable Operating System Interface for Computer Environments) – это стандарт IEEE(Institute of Electrical and Electronics Engineers − институт инженеров по электротехнике и радиоэлектронике.), описывающий системные интерфейсы для открытых ОС, в том числе оболочки, утилиты и инструментарии. Помимо этого, согласно POSIX, стандартизированными являются задачи обеспечения безопасно-сти, задачи реального времени, процессы администрирования, сетевые функции и обработка транзакций. Стандарт базируется на UNIX-системах, но допускает реализацию и в других ОС. POSIX возник как попытка всемирно известной организации IEEE пропагандировать переносимость прило-жений в UNIX-средах путем разработки абстрактного, платформенно-независимого стандарта. Например, известная ОС реального времени QNX соответствует спецификациям этого стандарта.

Этот стандарт подробно описывает систему виртуальной памяти VMS (Virtual Memory System,), многозадачность МРЕ (Multi-Process Executing) и технологию переноса операционных систем CTOS (An Operating System produced Convergent Technology …). Таким образом, на самом деле POSIX представляет собой множество стандартов, именуемых POSIX.I –POSIX.12. Следует также особо отметить, что в POSIX.1 предполагается язык С в качестве основного

языка описания системных функций API.

Таким образом, программы, написанные с соблюдением данных стандартов, будут одинаково выполняться на всех POSIX-совместимых системах. Однако стандарт в некоторых случаях носит лишь рекомен-дательный характер. Часть стандартов описана очень строго, тогда как другая часть только поверхностно раскрывает основные требования.

Реализации POSIX API на уровне операционной системы различны. Если UNIX-системы в своем абсолютном большинстве изначально соответствуют спецификациям IEEE Standard 1003.1-1990, то WinAPI не является POSIX-совместимым. Однако для поддержки данного стандарта в операционной системе MS Windows NT введен специальный модуль поддержки POSIX API, работающий на уровне привилегий пользовательских процессов.

Данный модуль обеспечивает конвертацию и передачу вызовов из пользовательской программы к ядру системы и обратно, работая с ядром через Win API. Прочие приложения, созданные с использованием WinAPI, могут передавать информацию POSIX-приложениям через стандартные механизмы потоков ввода/вывода (stdin, stdout).

Нет похожих постов...

Назначение и функции ОС.

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

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

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

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

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

· Создание резидентных программ;

· Разработка полноценного драйвера.

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


Рисунок 1. Функции ОС

Требования, предъявляемые к ОС

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

Расширяемость

· Код должен быть написан таким образом, чтобы можно было легко внести дополнения и изменения, если это потребуется, и не нарушить целостность системы.

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

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

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

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

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

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

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

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

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

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

В-третьих, важно минимизировать те части кода, которые непосредственно взаимодействуют с аппаратными средствами.

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

Для легкого переноса ОС при ее разработке должны быть соблюдены следующие требования:

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

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

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

Совместимость

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

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

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

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

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

Безопасность

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

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

Основы стандартов в области безопасности были заложены "Критериями оценки надежных компьютерных систем ". Этот документ, изданный в США в 1983 году (Оранжевая Книга).

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

Иерархия уровней безопасности, приведенная в Оранжевой Книге, помечает низший уровень безопасности как D, а высший - как А.

· В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов.

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

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

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

Надежность и отказоустойчивость

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

Производительность.

· Система должна обладать настолько хорошим быстродействием и временем реакции, насколько это позволяет аппаратная платформа.

Режимы обслуживания.

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


1.Режим индивидуального пользования.

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

2. Режим однопрограммной пакетной обработки.


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

Применение такого режима позволило улучшить эксплуатационных характеристики ЭВМ, прежде всего путем повышения процента использования оборудования. Однако этот режим обладает двумя существенными недостатками: значительное увеличение интервала времени между моментами передачи пользователями программ оператору на выполнение и получением результатов (чем больше пакет, тем больше интервал времени, а в среднем 2-4 часа); во время выполнения некоторой программы может потребоваться передача данных из оперативной памяти в накопитель и обратно, а процессор во время выполнения таких обменов простаивает и продолжит обработку только после завершения обмена, то есть наиболее дорогостоящее и высокоскоростное оборудование используется нерационально.

3. Режим мультипрограммной пакетной обработки.

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

Пусть в оперативную память загружены три программы А,Б и В. Временные диаграммы их выполнения в однопрограммном и мультипрограммном режимах представлены ниже.


Однопрограммный режим
Многопрограммный режим

На диаграммах интервалы времени, необходимые для ввода-вывода обозначены t BB (А), t BB (Б) и t BB (В). Время выполнения всех трех программ (А, Б и В) в пакетном однопрограммном режиме равно Т(А)+Т(Б)+Т(В), то есть программы выполняются последовательно друг за другом. Рассмотрим выполнение программ в многопрограммном режиме.

Допустим, что процессор начинает обслуживание с программы А в момент t 0 .В момент t 1 программе А требуются данные, находящиеся на одном из внешних устройств. В этот момент выполнение программы А приостанавливается и начинает выполняться операция ввода-вывода, которая будет завершена через время t BB (А) в момент t 4 .Одновременно (параллельно) с операцией ввода-вывода процессор переключается на выполнение программы Б. В момент времени t 2 программе Б потребовалось выдать промежуточные данные на одно из внешних устройств. Происходит приостановка выполнения процессором программы Б, и начинает выполняться операция ввода-вывода, которая будет завершена через время t BB (Б) в момент времени t 7 .Далее одновременно с этой операцией ввода-вывода процессор переключается на выполнение программы В. В момент времени t 3 происходит приостановка выполнения программы В, и начинает выполняться операция ввода-вывода, которая будет завершена за время t BB (Б). После завершения операции ввода-вывода для программы А в момент t 4 свободный к этому моменту процессор вновь начинает выполнять программу А до ее завершения в момент времени t 6 . .Так как операция ввода-вывода программы В завершилась ранее (в момент t 5), то процессор переключается на продолжение программы В; закончив ее выполнение (в момент t 8), процессор переходит к выполнению программы Б, операция ввода-вывода для которой закончилась в момент t 7 . Таким образом, выполнение всех трех программ закончилось в момент t 9, причем величина t 9 –t 0 значительно меньше суммы Т (А)+Т (Б)+Т (В) в однопрограммном режиме. Однако время выполнения программ Б и В увеличилось по сравнению с однопрограммным режимом на величины t 6 –t 5 иt 8 –t 7 соответственно (на схеме эти фрагменты обозначены). Эти временные задержки возникли из-за занятости процессора обслуживанием других программ при готовности программ Б и В к продолжению выполнения. При выполнении в пакетном режиме наличие этих задержек не имеет существенного значения, так как они практически не влияют на время получения пользователем результатов счета. Основным достоинством многопрограммного пакетного режима является значительное уменьшение времени простоя процессора.

Реализация рассматриваемой идеи многопрограммной обработки потребовала изменения, как аппаратных, так и программных средств:

1) реализован механизм прерывания;

2) в состав ЭВМ включены новые устройства – каналы ввода-вывода, каждый из которых управляет обменом данными между оперативной памятью и некоторым набором внешних устройств (на схеме эти устройства обозначены). Канал осуществляет все операции ввода-вывода, не используя средств процессора (на схеме:

операции ввода-вывода с использованием средств процессора,

операции через канал ввода-вывода);

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

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

4. Режим коллективного пользования.

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

Основные принципы построения ОС.

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

1.Частотный принцип.

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

2. Принцип модуля.

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

Пусть некоторая программа А в процессе своего выполнения обратилась к модулю С. Во время выполнения модуля С произошло прерывание от внешнего устройства, и началась обработка этого прерывания программой В, которая имеет приоритет больше, чем у программы А и С. В ходе выполнения программа В также обратилась к модулю С. Если модуль С не реентерабельный, то такая ситуация недопустима, так как состояния внутренних рабочих переменных в модуле С соответствует выполнению обращения от программы А на момент прерывания t 1 , поэтому при повторном вхождении в незавершенный модуль С в момент t 2 текущее состояние рабочих ячеек будет потеряно. Реентерабельность, то есть обеспечение повторной входимости в модуль, достигается различными способами, в основе которых лежит отделение кода от данных, то есть внутренних переменных. При каждом обращении к модулю ему предоставляется отдельная область памяти под внутренние переменные. Разработка реентерабельных программ требует применения специальных приемов программирования.

3. Принцип функциональной избирательности (вытекает из 1-го и 2-го).

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

4. Принцип генерируемости.

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

5. Принцип функциональной избыточности.

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

6. Принцип «по умолчанию».

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

7. Принцип перемещаемости.

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

8. Принцип защиты.

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


Похожая информация.


операционный система совместимость программа

Принципы построения ОС

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

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

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

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

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

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

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

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

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

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

Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, программу для ПК типа IBM PC желательно выполнить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непонятны. В таком случае процессор типа 680?0 (или PowerPC) должен исполнять двоичный код, предназначенный для процессора i80x86. Процессор 80?86 имеет свои собственные дешифратор команд, регистры и внутреннюю архитектуру. Процессор 680?0 не понимает двоичный код 80?86, поэтому он должен выбрать каждую команду, декодировать ее, чтобы определить, для чего она предназначена, а затем выполнить эквивалентную подпрограмму, написанную для 680?0.

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

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

Введение стандартов POSIX преследовало цель обеспечить переносимость создаваемого программного обеспечения.

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

ОС различают по назначению, выполняемым функциям и формам реализации. ОС – сложные дискретные системы, но в основу их разработки положены девять принципов (табл. 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 ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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