Файл: Сетевые операционные системы (Обзор сетевых операционных систем).pdf

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

Категория: Курсовая работа

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

Добавлен: 02.04.2023

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

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

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

Монолитные системы

общем случае "структура" монолитной системы представляет собой отсутствие структуры (Рисунок 3[Таненбаум Э. С., Херберт Б. Современные операционные системы. 4-е изд. – " Издательский дом"" Питер""", 2015.- 1120 с.]). Операционная система представляет собой набор процедур, каждая из которых может вызывать другие, когда ей это нужно. При этом, каждая процедура системы имеет хорошо определенный интерфейс, и каждая может вызвать любую другую при необходимости. 

Рисунок 4. Монолитная операционная система

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

Многоуровневые системы

При структуризации от монолитных систем переходят к многоуровневым. Уровни образуются группами функций операционной системы - файловая система, управление процессами и устройствами и т.п. Каждый уровень может взаимодействовать только со своим непосредственным соседом - выше- или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням (Рисунок 4)[Таненбаум Э. С., Херберт Б. Современные операционные системы. 4-е изд. – " Издательский дом"" Питер""", 2015.- 1120 с.].

Рисунок 5. Многоуровневая ОС

[В. С. Данюшенков., О. В. Коршунов. Организация сетевого администрирования (лекции часть 1) / Лекция 2 Структура сетевой операционной системы URL: https://studfiles.net/preview]

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


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

По отношению к структурированию операционной системы, идея использования взаимодействия клиент-сервер и микроядра состоит в разбиении ее на несколько процессов - серверов, выполняющих отдельный набор сервисных функций - например, управление памятью, управление файловой системой[Таненбаум Э. С., Херберт Б. Современные операционные системы. 4-е изд. – " Издательский дом"" Питер""", 2015.- 1120 с.]. Каждый сервер выполняется в пользовательском режиме. Клиент, которым может быть либо другой компонент операционной системы, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро операционной системы (называемое здесь микроядром), работая в привилегированном режиме, доставляет сообщение нужному серверу, сервер выполняет операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения (Рисунок 5). 

Рисунок 6. Модель клиент-сервер и микроядра

[В. С. Данюшенков., О. В. Коршунов. Организация сетевого администрирования (лекции часть 1) / Лекция 2 Структура сетевой операционной системы URL: https://studfiles.net/preview - дата обращения 03.07.2019]

Данный подход изменил вертикальное распределение функций операционной системы на горизонтальное. Компоненты, лежащие выше микроядра, взаимодействуют друг с другом непосредственно, хотя и используют сообщения, пересылаемые через микроядро. Данное свойство микроядерных систем позволяет использовать их в распределенных средах. При получении сообщения микроядро может его обработать или переслать другому процессу. Так как для микроядра все равно, поступило ли сообщение от локального или удаленного процесса, подобная схема передачи сообщений является удобной основой удаленных вызовов процедур (RPC - remote procedure calls)[Таненбаум Э. С., Херберт Б. Современные операционные системы. 4-е изд. – " Издательский дом"" Питер""", 2015.- 1120 с.]. Микроядро занимается основной функцией операционной системы – управлением ресурсами. Часто оно берет на себя функции взаимодействия с аппаратурой, хотя приоритетно в рамках микроядра выделять машиннозависимые функции в отдельные подмодули для улучшения переносимости. Различные варианты реализации модели клиент-сервер в структуре операционной системы могут существенно различаться по объему работ, выполняемых в режиме ядра. С одной стороны находится разрабатываемая фирмой IBM на основе микроядра Mach операционная система Workplace OS, которая придерживается чистой микроядерной доктрины, состоящей в том, что все несущественные функции операционной системы должны выполняться не в режиме ядра, а в непривилегированном (пользовательском) режиме. С другой - Windows NT, в составе которой имеется исполняющая система (NT executive), работающая в режиме ядра и выполняющая функции обеспечения безопасности, ввода-вывода и другие.


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

В состав микроядра обычно не включают сетевые функции, пользовательский интерфейс, файловую систему, а лишь основные функции управления, но несмотря на это в настоящее время именно операционные системы, построенные с использованием модели клиент-сервер и концепции микроядра, в наибольшей степени удовлетворяют требованиям, предъявляемым к современным сетевым операционным системам. Преимущества этого подхода следующие[Кручинин А. Операционные системы. – Litres, 2017.-URL: https://books.google.ru/books?id=g_TXCwAAQBAJ&printsec=frontcover&hl=ru#v=onepage&q&f=false – (дата обращения 05.07.2019);]:

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

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

• Надежность микроядерной архитектуры выше, чем у монолитной, так как микроядро проще тестировать[В. С. Данюшенков., О. В. Коршунов. Организация сетевого администрирования (лекции часть 1) / Лекция 2 Структура сетевой операционной системы URL: https://studfiles.net/preview – (дата обращения 03.07.2019)]. При этом тестирование выполняется в привилегированном, защищенном режиме процессоров, что при сбое внешних служб, выполняющихся в отдельных виртуальных машинах в непривилегированном режиме, не приведет к обвалу системы в целом. Микроядро, обладающее небольшим набором API (API - Application Programming Interface), увеличивает шансы получения качественных программ.


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

Помимо достоинств использования микроядерного подхода существуют также и недостатки, основным из которых на практике является снижение быстродействия на локальных задачах - замедление скорости выполнения системных вызовов при передаче сообщений через микроядро по сравнению с классическим подходом[В. С. Данюшенков., О. В. Коршунов. Организация сетевого администрирования (лекции часть 1) / Лекция 2 Структура сетевой операционной системы URL: https://studfiles.net/preview]. 

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

2.4. Основные ресурсы и службы сетевых операционных систем и способы управления ими.

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

«Процесс - абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу выполнения и динамически изменяющуюся заявку на потребление системных ресурсов»[Котенко В. Н. Операционные системы. Курс лекций. – 2015.- C.28]. Подсистема управления процессами планирует выполнение процессов: распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает взаимодействие между процессами.

Сетевая операционная система реализует в этой подсистеме удаленное межпроцессное взаимодействие, работу процессов с удаленными ресурсами.

Планирование процессов

Планирование процессов включает в себя решение следующих задач[Котенко В. Н. Операционные системы. Курс лекций. – 2015.-C.33]: 

1) определение момента времени для смены выполняемого процесса

2) выбор процесса на выполнение из очереди готовых процессов

3) переключение контекстов "старого" и "нового" процессов


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

Процедур планирования процессов существует два основных типа - вытесняющие (preemptive) и невытесняющие (non-preemptive)[Олифер В. Г., Олифер Н. А., Симонович С. В. Сетевые операционные системы. Учебное пособие. Серия. – 2015.- C.22]. 

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

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

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

Управление памятью

Память, к которой может иметь доступ сетевая операционная система может быть локальной, разделяемой, распределенной. Для работы со всеми видами памяти в операционной системе создается менеджер памяти[Олифер В. Г., Олифер Н. А., Симонович С. В. Сетевые операционные системы. Учебное пособие. Серия. – 2015.C.36].

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