Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Современные операционные системы (90

..pdf
Скачиваний:
2
Добавлен:
15.11.2022
Размер:
445.26 Кб
Скачать

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

Программы и ядро взаимодействуют посредством системных вызовов (system call) и исключений (exception, trap), при которых управление передаётся ядру операционной системы. Системный вызов подобен обычному вызову подпрограммы и отличается лишь увеличением привилегий, так как ядро, как правило, работает в привилегированном режиме процессора. Результат системного вызова передаётся в программу как результат выполнения обычной подпрограммы (процедуры). Исключения вызываются прозрачно для программы, например когда она обращается к участку памяти, содержимое которого откачано на диск и доступ к которому временно закрыт. Исключения вызываются также при критических ошибках, таких как деление на ноль.

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

Контрольные вопросы

1)какие основные части можно выделить в ОС?

2)какие функции выполняет ядро ОС?

3)какие есть различия между прикладными и системными программами?

4.Классификация ОС

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

По степени универсальности

11

 

 

 

Таблица 2

Классификация по степени универсальности

 

 

 

 

Универсальные

Серверные

Клиентские

Специализи-

 

 

 

рованные

Linux

NetWare

MacOS

Android

OS/2

OS/360

MS-DOS

iOS

Plan 9

VMS

Windows

IOS

UNIX

 

 

PalmOS

Windows NT

 

 

QNX

 

 

 

Symbian

Универсальные ОС. Операционные системы, стремящиеся работать оптимально для всех типов задач.

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

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

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

По количеству пользователей

Многопользовательские. Позволяют нескольким пользователям одновременно использовать компьютер. Защищают процессы и файлы каждого пользователя от нежелательного доступа других пользователей.

Однопользовательские. Не имеют возможности одновременной работы нескольких пользователей.

По алгоритмам планировщика задач. См. раздел 5.

Многозадачные ОС. Поддерживают несколько процессов (нитей) в состоянии готовности или исполнения (Android, iOS, IOS, Linux, MacOS, NetWare, OS/2, OS/360, Plan 9, QNX, Symbian, UNIX, VMS, Windows).

12

 

Таблица 3

Классификация по количеству пользователей

 

 

Многопользовательские

Однопользовательские

 

 

IOS

Android

Linux

iOS

NetWare

MacOS

OS/360

MS-DOS

Plan 9

OS/2

QNX

PalmOS

UNIX

Symbian

VMS

Windows

Windows NT

 

Однозадачные ОС. Только один процесс может находиться в состоянии исполнения, остальные — в состоянии ожидания (ждут завершения другого процесса). Сюда относятся MS-DOS, PalmOS.

С поддержкой нитей. Поддерживают несколько нитей в рамках одного процесса.

Без поддержки нитей. Поддерживают только одну нить в каждом процессе. В этих операционных системах термин «нить» обычно не используется.

С поддержкой нескольких ЦП. Используют несколько центральных процессоров (ЦП). Несколько нитей могут находиться в состоянии исполнения (Android, iOS начиная с версии 3.0, Linux начиная с версии 2.0, MacOS X, NetWare начиная с версии 4.1, OS/360, Plan 9, QNX, UNIX, VMS, Windows NT).

Без поддержки нескольких ЦП. Имеют возможность использовать только один ЦП (даже если компьютер имеет несколько). Только одна нить может находиться в состоянии исполнения (IOS, Linux до версии 2.0, MacOS старых версий, MS-DOS, NetWare до 4.1, OS/2, PalmOS, Symbian, Windows).

Симметричные многопроцессорные ОС. Все процессоры используются одинаково, ядро ОС может исполняться на всех процессорах. Большинство ОС, поддерживающих несколько процессоров, являются симметричными (SMP — Symmetric Multiprocessing).

Асимметричные многопроцессорные ОС. Процессоры используются по-разному. Например, ядро исполняется

13

только на одном процессоре, а остальные используются для исполнения прикладных задач. Сюда относятся VMS, OS/360.

Системы пакетной обработки. Предназначены для наиболее эффективного неинтерактивного исполнения пакетов заданий (OS/360, ОС ЕС).

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

Системы реального времени. Гарантируют, что время отклика на внешние события не будет превышать какуюлибо величину. Применяются для управления устройствами, роботами (QNX).

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

По алгоритмам управления памятью. См. разделы 6, 11.

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

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

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

14

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

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

Без поддержки подкачки. Не имеют возможности увеличивать ОП за счёт внешней памяти.

По возможности работы в сети

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

Без поддержки сети. Не имеют такой возможности.

По архитектуре ядра

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

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

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

15

В частности, можно относительно легко трассировать и отлаживать отдельные серверы.

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

Примечание: данный список категорий не является полным.

5.Подсистема управления процессами

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

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

Каждая нить находится в одном из трёх состояний: ожидание (blocked), готовность (ready) и исполнение (running). Нить в состоянии ожидания не может продолжить свою работу, так как она ожидает какого-либо внешнего по отношению к ней события, например освобождения памяти, завершения операции ввода-вывода или снятия блокировки. В состоянии готовности нить готова к исполнению, но ОС ещё не передала ей управление. В состоянии

16

исполнения нить владеет центральным процессором (ЦП) и исполняется. Примерная схема переключения состояний показана на рис. 3.

Finish

Running

Start

Blocked Ready

Рис. 3. Состояния нити

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

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

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

Для перевода нити из состояния готовности в состояние испол-

17

нения планировщик выполняет переключение контекста (context switch). Для этого он сохраняет контекст (в частности, состояние регистров процессора) текущей нити в состоянии исполнения. После этого загружается контекст другой нити и управление передаётся на следующую команду процессора в соответствии с этим контекстом.

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

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

Сневытесняющей (кооперативной) многозадачностью.

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

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

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

18

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

С относительными приоритетами. Планировщик переводит нить из состояния исполнения в состояние готовности только по запросу этой нити или по истечении кванта времени. В состояние исполнения при этом переводится нить с наивысшим приоритетом.

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

Голодание (starvation). Большая задержка между переходом нити в состояние готовности и переходом в состояние исполнения. Может быть вызвана слишком большим количеством нитей в состоянии готовности или наличием нитей с б´ольшим приоритетом.

Для предотвращения голодания планировщик переводит в состояние исполнения нить даже с низким приоритетом, если эта нить находится в состоянии готовности слишком долго.

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

Для предотвращения эффекта гонок необходимо использовать синхронизацию процессов (см. раздел 10).

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

19

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

Тупик (deadlock). Тупик возникает при невозможности продолжения одновременного исполнения нескольких нитей или процессов из-за взаимного ожидания или из-за нехватки ресурсов, например оперативной памяти.

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

Контрольные вопросы

1)в чём различие между процессом и нитью?

2)чем ограничено максимальное количество нитей в состоянии исполнения?

3)какие есть проблемы в невытесняющей многозадачности?

6.Подсистема управления памятью

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

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

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

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

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

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]