Файл: Литература по курсу аос (по всем вопросам должен быть представлен краткий рукописный конспект в общей тетради).docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.02.2024

Просмотров: 78

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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

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

Сильносвязанный Слабосвязанный



Локальная ОС Распределенная ОС Сетевая ОС




SOFT SOFT

Сильносвязанный Слабосвязанный



  1. Требования к современным операционным системам.


Главные требование к ОС

- выполнение ею своих функций эффективного управления ресурсами и

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

- мультипрограммная обработка

- виртуальная память

- свопинг

- многооконный ГАЙ

Это все требования ФУНКЦИОНАЛЬНОЙ полноты.
Но кроме этого есть еще ЭКПЛУАТАЦИОННЫЕ требования

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


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


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

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


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

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


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

  • Действия ОС должны быть предсказуемыми

  • Приложения не должны иметь возможности причинять вред ОС

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


Все это зависит от качества архитектуры ОС и отлаженности ее кода


  1. Безопасность ОС

- Защита от несанкционированного доступа:

* аутентификация – определение легальности юзеров

* авторизация – предоставление легальным юзерам разных прав доступа к ресурсам

* аудит – фиксация всех подозрительных событий

- Для сетевых ОС – защита данных, передаваемых по сети.


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

ОС должна по максимуму использовать производительность железа, на котором она стоит.



  1. Базовая архитектура операционной системы. Понятие ядра системы. Классификация операционных систем в зависимости от особенностей архитектуры ядра.


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

2

3




1




0


0 – любые команды процессора

  1. Все команды, кроме некоторых

  2. Еще ограничения

  3. Лишь ограниченный набор команд (не дает изменить важные параметры системы)


На самом деле сейчас используются только два режима: 0 и 3.

Итак, ЯДРО – это код, исполняемый в режиме 0.

А пользовательские программы исполняются в режиме 3.
Архитектуру ОС, основанную на привилегированном ядре и приложениях, выполняемых в пользовательском режиме, называют базовой или классической.
В классической архитектуре модули ОС делятся на 2 группы:
(Модуль – это программа или ее часть, которая имеет логическое обособление и свою функцию и может быть загружена/выгружена в память в процессе работы. Часто представлена в виде отдельного файла или динамически подгружаемой библиотеки).
- модули, выполняющие основные ф-и ОС – ЯДРО

* управление процессами

* памятью

* файлами

* устройствами ввода-вывода и тд

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

Это:

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

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

- проги, предоставляющие юзеру доп услуги (игры, калькулятор)

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

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

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

- 1) Монолитная архитектура ядра

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


Плюсы:

- максимальная производительность

- высокая скорость (все внутри одной программы)

Минусы:

- объемное ядро -> экспоненциальная зависимость – снижается надежность.
Эта архитектура (или ее элементы) используется во всех современных ОС.
-2) Слоистая архитектура ядра

Наиболее распространена. Предложена Дейкстра.

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

Плюсы:

- инкапсуляция, сокрытые реализации (слои можно независимо модифицировать, главное – не затрагивать АПИ)

- разработка такой системы удобна и управляема

- выше ее надежность (объемность снижается)

- выше гибкость

Минусы

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



Слои (снизу вверх)

- Машинно-зависимые компоненты (то, что выполняется непосредственно железом);

- Базовые механизмы ядра (самые примитивные операции: переключение контекстов, /диспетчеризация прерываний, подкачка страниц);

- Менеджеры ресурсов (управляют основными ресурсами компа: файловой системой, процессами, вводом-выводом)

- Интерфейс системных вызовов – АПИ, обслуживает системные вызовы.
-3) Микроядерная архитектура:

Принцип – минимизировать ядро. Построена по принципу клиент-серверной организации.

  • То, что отвечает за работу аппаратуры + базовые операции = ЯДРО

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


Плюсы:

- ядро превратилось в микроядро, это повышает надежность.

- гибкая структура, легко расширяется. Очень удобна для распределенных систем.

- надежная система (все серверы работают в своем адресном пространстве + крах одного сервера не затрагивает работу других)

- поддерживает распределенные вычисления

- хорошая переносимость (весь машинно зависимый код изолирован в микроядре)
Минусы:

- Вместо одного переключения – 2 – снижается производительность.



  1. Аппаратная зависимость и переносимость операционных систем.

Не существует 100% переносимости ОС.

Переносимость – это не бинарное состоянии (переносима или нет), а понятие степени.

Понятие «степень переносимости» - усилия, которые необходимы, чтобы перенести ОС с одной платформы на другую
С точки зрения переносимости ОС состоит из 2 частей –

- аппаратно-независимая часть, пишется на ЯВУ, и переводится на язык конкретной машины с помощью транслятора С для этой машины

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

  • уменьшить объем аппаратно-зависимой части

  • писать большую часть системы на ЯВУ и пользоваться транслятором.

  • Локализовать аппаратно-зависимую часть в нескольких модулях (чтобы она не была разбросана по всей системе)



Например, в Виндовс НТ:

  • Существует специальный слой HAL (Hardware Abstraction Level), в котором локализованы все машинно зависимые функции ОС. Этот слой аппаратно зависимый, и включает в себя поддержку разного железа (х86, Итаниум, МИПС и тд). Он абстрагирован от архитектуры ОС.


Эти части системы, которые являются аппаратно-зависимыми, пишутся на ассемблере:

- обработчики прерываний,

- переключение контекста

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

- системный таймер

- средства защиты областей памяти

- средства трансляции адреса.

Все остальное ПО в системе контактирует с ней через этот слой.


  • Все остальные компоненты ядра пишутся на С

- Исполнительная система, утилиты, драйверы

- UI и подсистема GDI

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




  1. Совместимость операционных систем и множественные прикладные среды.

ОС1 считается совместимой с ОС2, если прогу, написанную для ОС2 можно выполнить в ОС1.