Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Архитектура операционной системы

Архитектура операционных систем

Архитектура операционных систем

ОС – сложная программно-аппаратная система.

Архитектура система – фундаментальный способ организации системы, включая:

    состав и взаимоотношения компонентов, а также компонентов и окружающей среды, принципы проектирования и развития системы. (Стандарт ANSI/IEEE )

Общие тенденции в реализации архитектуры ОС

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

Во всех ОС модули делятся на две группы:

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

Модули ядра постоянно располагаются а памяти (резидентные модули), оформлены в виде модулей специального формата.

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

2. Поддержка специального режима работы

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

Поддержка привилегированного и пользовательского режимов невозможна без специальных аппаратных решений процессора. Процессор Intel Pentium поддерживает 4 уровня привилегий (4 кольца: 0 ‑ самый высокий уровень привилегий, 3 – самый низкий), но операционные системы Windows и Unix используют только два.

Процессы, работающие в режиме ядра (привилегированный режим)

— имеют прямой доступ к аппаратному обеспечению;

— имеют доступ ко всей памяти компьютера;

— не могут быть вытеснены в страничный файл на жестком диске;

— выполняются с большим приоритетом, чем процессы режима пользователя.

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

Процессы режима пользователя

— не имеют прямого доступа к аппаратуре, это защищает систему от неисправных приложений или неавторизированного доступа;

— ограничены выделенным им адресным пространством. Этим обеспечивается целостность ОС;

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

— выполняются с меньшим приоритетом, чем процессы режима ядра.

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

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

Недостаток: дополнительные затраты времени на переключение режимов.

3. Реализация многослойной структуры ОС

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

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

«Молодые» (развивающиеся) ОС (например, Linux) имеют более многослойное ядро, чем «старые» (Unix).

Такая организация повышает надежность и защищенность работы системы, поддерживает переносимость, но приводит к замедлению работы ядра.

4. Совместимость с другими ОС и поддержка множественных прикладных сред

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

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

    определенную систему команд, определенный тип API, определенный формат исполняемой программы.

Способы построения множественных прикладных средств:

    эмуляция (моделирование выполнения каждой команды), например, режим эмуляции MS DOS в операционных системах Windows; трансляция системных вызовов. В пользовательском режиме запускается транслятор, переводящий каждую функцию обращения «чужого» приложения к «чужому» API в обращение к функции «родного» API; встраивание в ядро ОС множества прикладных средств. Так реализована работа с множественными прикладными средами в OS2.

Микроядерные ОС – ОС, в состав ядра которых включено минимально необходимое количество модулей. Как правило, это 5 сервисов (сервис – совокупность клиента и сервера):

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

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

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

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

Монолитные (макроядерные) ОС – ОС, ядро которых не делится на центральную часть и периферийные модули (Unix).

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

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

Архитектура Windows 2000

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

· ядро – модули, выполняющие основные функции ОС,

· модули, выполняющие вспомогательные функции.

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

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

На рис. 1 представлена общая структура ОС Windows 2000.

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

Рис. 1. Архитектура операционной системы Windows 2000

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

Назначение и имена системных файлов представлены в таблицах 1 и 2.

Таблица 2. Системные модули режима пользователя

Архитектура (структура) операционной системы

Напомним, необходимые основные моменты.

Микропроцессоры Intel x 86/ Pentium аппаратно поддерживают 4 уровня привилегий (режима): 0..3.

Большинство ОС поддерживают двухуровневую систему привилегий: привилегированный режим (режим ядра, пространство ядра) и пользовательский режим (пространство пользователя). (Например, Windows NT, UNIX)

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

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

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

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

Уточним перечисленные моменты.

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

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

Единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.

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

Þ модули, выполняющие основные функции ОС — ядро ОС;

Þ модули, выполняющие вспомогательные функции ОС.

Модули ядра выполняют базовые функции ОС

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

Функции, входящие в состав ядра можно разделить на два класса.

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

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

Функции модулей ядра — наиболее часто используемые функции ОС

Þ Скорость выполнения этих функций определяет производительность всей системы в целом

Þ Все (большинство) модули ядра являются резидентными.

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

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

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

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

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

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

Читать еще:  Тангенциальная составляющая ускорения

· системные обрабатывающие программы — текстовые и графические редакторы, компиляторы, компоновщики, отладчики

(Замечание. Чаще эти программы являются частью систем программирования).

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

Вспомогательные модули, в отличие от модулей ядра, являются транзитными.

Обратим внимание на то, что многие модули ОС оформлены как обычные приложения.Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Некоторая программа может су щ ествовать определенное время как пользовательское приложение, а потом стать частью ОС (например, Web -браузер компании Microsoft — сначала поставлялся как отдельное приложение, затем стал частью ОС Windows , затем по решению суда снова превратился (уже?) в самостоятельное приложение).

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

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

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

Архитектура ос

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

— базовые функции ОС (управление процессами, памятью, устройствами ввода/вывода;

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

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

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

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

— системные обрабатывающие программы – текстовые и графические редакторы, компиляторы, компоновщики, отладчики;

— программы дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры;

— библиотеки процедур – библиотека математических функций, функций ввода/вывода и т. д.

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

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

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

Рис. 1.1. Монолитная структура ОС

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

1. Главная программа, которая вызывает требуемые сервисные процедуры.

2. Набор сервисных процедур, реализующих системные вызовы.

3. Набор утилит, обслуживающих сервисные процедуры.

В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рисунке 1.2.

Рис.1 .2. Простая структуризация монолитной ОС

Обобщением предыдущего подхода является организация ОС как иерархии уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N-1. Нижним уровнем в таких системах обычно является аппаратура, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Уровни образуются группами функций операционной системы — файловая система, управление процессами и устройствами и т. п. Каждый уровень может взаимодействовать только со своим непосредственным соседом — выше — или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.

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

Многослойная модель ядра

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

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

— машинно-зависимые компоненты ОС; в идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры (пример – слой HAL ОС Windows NT);

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

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

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

Примеры многоуровневых ОС

Многоуровневый подход был использован при реализации следующих ОС:

Рис. 1.4. Структура ОС UNIX

Рис. 1.5. Ядро ОС UNIX

Пример реализации многоуровневой Windows

Рис. 1.6. СтруктураWindows 2000

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

Микроядерная архитектура (модель клиент-сервер)

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

Поддержка этого механизма является одной из главных задач микроядра.

Рис. 1.4 Микроядерная архитектура операционной системы

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

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

Читать еще:  Прога для ускорения пк

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

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

Архитектура операционных систем

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

1.3.1. Архитектура операционной системы,
основанная на ядре

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

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

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

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

Формат программного модуля ядра обычно отличается от формата приложений.

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

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

Рис. 1.3. Нечеткость границы между операционной системой и приложениями

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

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

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

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

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

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

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

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

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

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

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

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

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

· Базовые механизмы ядра – модули, выполняющие примитивные операции ядра, которые не принимают решений о распределении ресурсов.

· Менеджеры (диспетчеры) ресурсов – модули, реализующие принятые в ОС стратегии управления основными ресурсами.

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

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

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

Почти все современные аппаратные платформы (процессоры) имеют типичный набор средств аппаратной поддержки ОС:

· средства поддержки привилегированного режима,обеспечивающие переключение процессора в привилегированные режимы из пользовательского и обратно;

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

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

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

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

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

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

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

Такая локализация машинно-зависимых модулей существенно упрощает перенос операционной системы на другую аппаратную платформу.

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

Для компьютеров на основе процессоров Intel x86/Pentium разработка экранирующего машинно-зависимого слоя ОС несколько упрощается за счет встроенной в ПЗУ компьютера базовой системы ввода-вывода – BIOS.

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

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

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

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

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

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

Операционные системы

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

Читать еще:  Операционные системы архитектура эвм

Содержание

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

Понятие операционной системы

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

Каковы причины смены ОС в компании?

Решение сменить операционную систему приходит в виду разных обстоятельств.

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

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

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

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

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

Архитектура операционной системы

Многозадачность и распределение полномочий требуют определённой иерархии привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:

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

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

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

Функции

Основные функции (простейшие ОС):

  • Загрузка приложений в оперативную память и их выполнение;
  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода);
  • Управление оперативной памятью (распределение между процессами, виртуальная память);
  • Управление доступом к данным на энергонезависимых носителях (таких как Жёсткий диск, Компакт-диск и т. д.), как правило с помощью файловой системы;
  • Пользовательский интерфейс;
  • Сетевые операции, поддержка стека протоколов

Эволюция операционных систем и основные идеи

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

История ОС насчитывает примерно полвека. Она во многом определялась и определяется развитием элементной базы и вычислительной аппаратурой.

40-е годы. Первые цифровые вычислительные машины без ОС. Организация вычислительного процесса решается программистом с пульта управления.

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

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

Конец 70-х. Создан рабочий вариант стека протоколов TCP/IP. В 1983 году он был стандартизирован. Независимость от производителей, гибкость и эффективность, доказанные успешной работой Интернет, сделала этот стек протоколов основным стеком для большинства ОС.

80-е годы. Появление персональных компьютеров. Бурный рост локальных сетей. Поддержка сетевых функций стала необходимым условием. Приняты основные стандарты на коммуникационные технологии локальных сетей: Ethernet, Token Ring, FDDI. Это позволило обеспечить совместимость сетевых ОС на нижних уровнях.

Начало 90-х. Практически все ОС стали сетевыми. Появились специализированные сетевые ОС (например IOS, работающая в маршрутизаторах)

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

ОС на мировом рынке

С 1990-х наиболее распространёнными операционными системами для персональных компьютеров и серверов являются:

ОС для корпоративного сектора

Эффективная работа IT-инфраструктуры любой современной компании невозможна без грамотно выбранной серверной операционной системы.

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

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

Операционные системы семейства Windows

Cерверные версии операционной системы Windows сегодня применяются довольно широко — благодаря удобству администрирования и невысокой совокупной стоимости владения.

Операционные системы семейства UNIX

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

Большинство российских серверов работают под управлением тех или иных клонов от Unix. По данным выборочного исследования, проведенного порталом RuMetrika (данные за 2006 г. на российских серверах безусловно лидирует Free BSD (53%), на втором месте Linux (32%) , количество серверов, на которых установлена ОС Windows составило 9%, реже встречается Solaris — всего 5%.

«Unix», стандартизация ОС и POSIX

Задуманная и реализованная в 1969 году Кеном Томпсоном при участии нескольких коллег (включая Денниса Ричи и Брайана Кернигана), ОС «Unix» («Unix»; первоначально «UNICS», что обыгрывало название «MULTICS») вобрала в себя многие черты более ранних ОС, но обладала целым рядом свойств, отличающих её от большинства предшественниц:

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

Благодаря конкурентности реализаций архитектура ОС «Unix» стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического — ISO/IEC 9945.

ОС, следующие стандарту или опирающиеся на него, называют «POSIX-совместимыми»

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

Самым заметным эффектом существования этого стандарта стало эффективное разворачивание Интернета в 90-х годах.

«Post Unix» архитектуры ОС

Коллектив, создавший ОС «Юникс», попытался позднее повторить свой успех, обобщив и дополнив исходную концепцию. Таким образом появились ОС «Plan9» и «Inferno», не получившие, впрочем, широкого распространения..

Позднее на основе «Plan9» в Испании были разработаны ОС «Off++» и «Plan B», носящие экспериментальный характер.

К попыткам создать постюниксовскую архитектуру можно также отнести разработку системы программирования и операционной среды «Оберон» в Швейцарском федеральном технологическом институте (ETH Zurich) под руководством проф. Никлауса Вирта.

Ссылка на основную публикацию
Adblock
detector