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

Lektsii_OC

.pdf
Скачиваний:
13
Добавлен:
19.05.2015
Размер:
1.39 Mб
Скачать

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

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

Особенности методов построения

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

Ктаким базовым концепциям относятся:

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

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

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

прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

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

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

1.1.3Базовые понятия в теории операционных систем

1.1.4Процесс, ресурс, виртуализация, прерывания

1.1.5Процесс – это некоторая деятельность, использующая процессор. Выделяют пять

состояний процесса.

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

2.состояние активности – процесс выполняется и использует ресурсы ВС.

3.Состояние ожидания (характерно для процесса, который ждёт обслуживания со стороны внешнего ресурса)

4.Состояние готовности – процесс имеет все необходимые ресурсы, кроме ЦП.

5.Отключение (завершение) процесса. Возможны два варианта:

1.1.6-нормальное завершение

1.1.7-аварийное завершение

1.1.8Классификация процессов:

1.1.9-по временным характеристикам

1.1.10

-процессы реального времени

1.1.11

-интерактивные процессы

1.1.12

-пакетные процессы

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

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

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

1.1.14-по соподчинённости

1.1.15-порождающий процесс

1.1.16-порождённый процесс

1.1.17Иногда, процессы, порождённые другими процессами, называют потоками, цепочками или нитями (thread). Более подробная классификация различает процессы и потоки.

1.1.18-по степени взаимодействия с другими процессами

1.1.19

-взаимодействующие процессы

1.1.20

-изолированные процессы

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

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

1.1.23-по приоритетности процессов

1.1.24Ресурс – нечто, представляющее интерес, для какого нибудь процесса.

1.1.25Аппаратные: ЦП, ОЗУ, периферийные устройства.

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

1.1.27Различают активные и пассивные ресурсы. Активный ресурс может в процессе его использования сам обращаться к другим ресурсам (т.е. активно влиять на своё состояние). Например: ЦП. Пассивный ресурс может только менять своё состояние. Например, ОЗУ.

1.1.28-по принципу главный / второстепенный

1.1.29Главный – такой ресурс, без которого невозможно выполнение процесса.

1.1.30Второстепенный – такой ресурс, отсутствие которого, приводит к тому, что он будет

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

1.1.31-по реальности ресурса

1.1.32

-физический ресурс

1.1.33

-виртуальный ресурс

1.1.34Виртуальный ресурс – устройство представленное своим воплощением либо это

некоторая модель ресурса.

1.1.35Виртуальный ресурс применяется в двух случаях.

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

2.Происходит параллельное использование некоторого ресурса несколькими процессами (системы с разделением времени). Например, виртуальный ресурс –

выполняющийся в системе процесс, реальный ресурс – ЦП.

1.1.36Язык управления заданиями – это средство, позволяющее задать взаимосвязи

процессов, описывать взаимодействие процессов с ОС, а также эффективно

 

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

 

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

1.1.37

Возможны две реализации языка управления заданиями:

1.

Язык компилятивного типа (переводит весть текст программы в исполняемый

 

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

 

отдельного процесса)

2.

Язык интерпретирующего типа. Интерпретатор – это программа, которая

 

просматривает и выполняет исходный текст программы пооператорно (каждый

 

отдельный оператор переводиться в машинный код и выполняется, как правило

 

как дочерний процесс).

1.1.38Концепция прерываний

1.1.39Взаимодействие программы с внешними устройствами может осуществляться двумя различными способами.

1.Процесс опрашивает внешние устройства в некотором цикле.

2.Внешние устройства, вызывают аппаратное прерывания ЦП, сообщая ОС, что какое либо действие произведено, и это устройство ждёт того, что его обслужит процесс.

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

к некоторому устройству, в противоположность первому случаю который называется программно управляемый обмен. Например, прямой обмен данными между контроллером жёсткого диска и оперативной памятью называют прямой доступ к памяти – ПДП (DMA).

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

1.1.42Основные принципы построения операционных систем (общие принципы, характерные для любой ОС)

1.Частотный принцип предполагает разделение процессов на часто вызываемые, и медленно вызываемые. В соответствии с этим в операционной системе должно быть два уровня планирования: краткосрочный и долгосрочный. Как правило часто используемые процессы находятся в ОЗУ, остальные процессы подлежат загрузке в ОЗУ по мере необходимости. Пример: процессы обеспечивающие функционирование ОС и пользовательские утилиты. Вызов первые планируются планировщиком ядра ОС. А вызов вторых как правило осуществляется программой планировщиком – заданий (at – в Windows и cron daemon в Unix).

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

существует понятие уровня модульности. Т.к. модуль решает замкнутую задачу, то к модулю можно обращаться на уровне "чёрного ящика" – нужно знать какую информацию должен получить модуль, и какую вернуть, но не нужно знать, как он решает эту задачу. Принцип модульности позволяет локализовать модуль, вызывающий ошибки. Модульный принцип позволяет модифицировать вычислительную систему (заменить один модуль, оставляя остальные без изменения). Например, ОС Windows NT состоит из следующих структурных частей: подсистема окружения OS/2, POSIX, Win32; Исполнительной системы; NTDLL – специальная библиотека поддержки; ядра включающего уровень абстрагирования от оборудования HAL; и драйверов устройств; системных служб

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

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

4.Принцип генерируемости. ОС написана под широкий класс вычислительных систем, когда мы хотим применять ОС на конкретной ВС, то ОС должна быть подстроена (сгенерирована) под особенности ВС. Генерация осуществляется отдельным модулем в поставке ОС, облегчающей этот процесс. В современных операционных системах для обеспечения функционирования этого модуля используется вспомогательная операционная система. При генерации Windows 9X используется ос Windows 3.1. При генерации ОС Windows 3.1 используется ОС DOS. При генерации ОС Windows NT или Linux используется ядро этой же ОС.

5.Принцип функциональной избыточности. В поставку ОС добелен широкий набор функций. Этот принцип иногда приводит к тому, что в поставку в поставку ОС включают несколько ядер ОС. Например: в ОС Windows NT в установочном пакете присутствует несколько ядер ОС, обеспечивающих работу этой ОС на разных платформах, таких как Intel, MIPS, Alpha. Этот принцип часто применяется к ядру ОС. Установочные дистрибутивы ОС Linux содержат ядро, ориентированное на широкий круг аппаратных платформ, например I386 сюда включаются все IBM – совместимые аппаратные платформы.

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

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

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

8.Принцип защиты. Два уровня: защита программы, кода она загружена в ОЗУ; защита программ и данных когда они находятся на ВЗУ. Защита осуществляется частично аппаратными средствами, и состоит в наличии нескольких режимов работы ЦП (один из них привилегированный режим – режим супервизора, другой пользовательский). В пользовательском режиме нельзя выполнить ряд команд, например обеспечить работу с виртуальной памятью, и следовательно программа не может забраться в запрещённую для неё область. На аппаратном уровне резервируются регистры процессора, для отслеживания работы программы с адресами и если программа пытается получить доступ к памяти вне выделенной ей области, то происходит аппаратное прерывание, и управление получает ОС. Для обеспечения безопасности хранения файлов на ВЗУ производиться регистрация пользователей. В ОС Windows NT для каждого объекта поддерживается специальные списки прав доступа. В ОС Unix каждый пользователь или служба принадлежит определённой группе безопасности, которая сопоставляется с определенным объектом (процессом, или файлом).

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

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

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

Управление локальными ресурсами

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

{

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

Понятие "процесс" появилось в 60-х гг. при разработке ОС Multics, потом несколько раз претерпевало изменения.

У понятия процесс существует много определений, и ни одно из них не полное. Под процессом понимают:

1)Процесс – некоторые данные

2)Процесс – некоторый алгоритм, который оперирует этими данными.

}

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

на потребление системных ресурсов.

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

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

{

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

}

В многозадачной (многопроцессной) системе процесс может находиться в одном из четырёх состояний:

ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором; ОЖИДАНИЕ – Это состояние в котором процессы не могут продолжать своё выполнение, в следствии того, что необходим некоторый ресурс, занятый в данный

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

ГОТОВНОСТЬ – В этом состоянии находятся процессы, готовые к немедленному выполнению, т.е. готовые в любой момент принять управление над ЦП, как только обеспеченно ОС. Это состояние потенциальной активности, т.е. в любой момент процесс может быть переведён в активное состояние.

ПАССИВНОЕ - Процесс загружен в память, но ещё не инициализирован ОС для своего выполнения. Фактически в данном случае процесс уже контролирует один из ресурсов ОС – память, но не может предпринимать никаких активных действий.

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

состояние

состояние

пассивное

 

состояние

 

 

 

1) процесс планирования-диспечеризации Планирование – процесс определения последовательности выполнения

процессов в многозадачной ОС на основе некоторого алгоритма.

Диспетчеризация – процесс выбора очередного процесса из очереди планирования и передачи ему управления над одним из ЦП вычислительной системы.

2)запросы процессов к системным службам (запросы на ввод/вывод, выделение/освобождение памяти и т.д.)

3)прерывания, происходящие в вычислительной системе

а) Программно – инициированные б) аппаратные

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

г) Прерывания по ошибкам или исключениям (инициируются ЦП).

4)Операция завершения процесса ожидания

5)Останов задачи

6)Активизация задачи

7)Аварийное завершение задачи

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

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

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

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

Контекст и дескриптор процесса

Представителями процессов о ОС является блок состояния процесса – PCB (Process Control Block), который содержит все необходимые ОС сведения о процессе, такие как:

1.Имя процесса

2.Уникальный идентификатор процесса PID(Process Identifier)

3.Текущее состояние процесса

4.Указатели на все ресурсы, занятые процессом (открытые файлы, незавершённые операции ввода-вывода)

5.Состояние регистров и программного счётчика IP(Instruction Pointer)

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

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

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

Создать процесс - это значит:

1.создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст

2.включить дескриптор нового процесса в очередь готовых процессов;

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

Методы распределения ресурсов

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