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

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

обеспечению могут использоваться только API [6]. Для обеспечения перено-

симости большая часть исполняющей системы рассматривает аппаратное обеспечение в виде следующих уровней (рис.21):

Системные процессы

 

Сервисы

 

 

Приложения

 

 

Подсистемы среды

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Контроллер

 

 

Репликатор

 

 

Пользователь-

 

 

 

POSIX

 

 

 

 

 

сервисов

 

 

 

 

Обработчик

 

 

ские приложения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WinLogin

 

 

 

 

извещений

 

 

 

 

 

 

 

 

 

 

OS/2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IDE Microsoft

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удаленный

 

 

Visual Studio

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Диспетчер

 

 

 

 

 

 

 

 

Win32

 

 

 

 

 

 

 

 

 

 

 

 

вызов процедур

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сессий

 

 

 

 

 

Подсистема

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистратор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DLL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

событий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NTDLL DLL

 

 

 

 

 

 

 

 

 

 

 

 

 

пользо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вателя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Режим ядра

 

Системный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поток

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

API исполняющей системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Диспетчер

 

Средства

 

Диспет-

 

 

Диспет-

 

Монитор

Диспет-

Диспе-

 

 

 

ввода-вывода

 

локально-

 

чер кэша

 

чер про-

 

безопасно-

 

чер вир-

 

тчер

 

 

 

 

 

 

 

 

 

го вызова

 

 

 

цессов и

 

сти обра-

 

туальной

 

сети

 

 

 

Файловые

 

 

 

процедур

 

 

 

 

потоков

 

щений

 

 

памяти

 

 

 

 

 

 

 

 

 

системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управление объектами, библиотека этапа исполнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Драйверы устройств

 

 

 

 

Микроядро

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уровень аппаратных абстракций

Интерфейсы аппаратного обеспечения (шины, устройство ввода-вывода, таймеры, прямой доступ к памяти, контроллер КЭШа и т.п.)

Рис.21. Структурная схема Windows XP

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

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

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

51

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

чение пототоков и синхронизацию. В отличии от остальной части испол-

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

3. Драйверы устройств: к ним относятся как ФС, так и драйверы аппа-

ратных устройств, которые преобразуют поступающие от пользователя вызо-

вы функций ввода/вывода в запросы для конкретных устройств.

4 .Исполняющая система включает модули, обеспечивающие поддерж-

ку её функций и предоставляющие работающим в пользовательском режиме программам соответствующие API.

Исполняющая система:

Диспетчер ввода/вывода: поддерживает доступность для приложений ввода/вывода, отвечает за координацию работы драйверов устройств, выпол-

няющих дальнейшую обработку и реализует все API I/O ОС с помощью дис-

петчера объектов следит за безопасностью, именованием устройств и ФС.

Диспетчер объектов: создаёт и удаляет объекты и абстрактные типы данных исполняющей системы, а так же уровней или эти объекты и абст-

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

полнение стандартных правил поддержки объектов именования и безопас-

ность, кроме того, он создаёт диспетчер объектов, в котором содержится ин-

формация о правах доступа и указатель на объект.

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

Диспетчер процессов и потоков: создаёт и удаляет объекты, а так же следит за процессами и потоками.

52

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

сервер» при распределённой обработке данных.

Диспетчер виртуальной памяти: отображает виртуальные адреса адрес-

ного пространства процессов на физические страницы основной памяти ком-

пьютера и обеспечивает управление ими.

Диспетчер кеша: повышает производительность файлового I/O путём хранения в ОП тех данных с диска, к которым недавно проводилось обращение,

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

рое время информация для обновления дисковыхфайлов хранится в памяти.

Диспетчер окон: создаёт оконный (экранный) интерфейс и управляет графическими устройствами.

5. Пользовательские процессы:

Специальные процессы системной поддержки: к ним относятся слу-

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

Сервисные процессы.

Приложения пользователя: Win32, POSIX, Os/2, Win 3.1, MS-DOS.

Подсистемы операционной среды: предоставляют приложениям поль-

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

Наиболее важной из подсистем является Win32 – это API, который реа-

лизован для данной ОС (семейство Windows NT), его основные функции:

1.Ввод с клавиатуры и мыши, вывод на печать, динамические библио-

теки (DLL), коммуникации, консоли, операции с буфером обмена, сервисы,

системная информация, управление окнами, реестром, безопасность, время,

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

2.Структура защитной системы и приложений выполнена в соответст-

вии с вычислительной моделью клиент-сервер. Она позволяет упростить её и

53

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

щённая от воздействия других моделей. Кроме того клиент не может непо-

средственно обращаться к аппаратному обеспечению или изменять содержи-

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

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

ными средствами обмена информацией с исполнительной системой. Процесс передачи сообщений скрыт от клиента функциями-заглушками из dll. При вызове API приложения заглушка пересылает переданные при вызове пара-

метры в виде сообщений подсистемы сервера, которые реализуют вызов.

4. Обеспечивает распределённое вычисление ОС. Локальный сервер может передавать сообщения от локального приложения клиента для обра-

ботки или удалённого сервера. Клиенту не нужна информация о том, как об-

рабатывается запрос локально или удалённо, ведь способ обработки может измениться динамически в зависимости от изменчивости конфигурации и за-

груженности системы.

Интегрированная среда разработки (англ. IDE, Integrated development environment — система программных средств) Microsoft Visual Studio ис-

пользуется для разработки приложений для операционной системы Windows. Microsoft Visual Studio — линейка продуктов компании Майкрософт, вклю-

чающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств [1]. Visual Studio включает один или несколько компонентов из следующих: Visual Basic .NET, а до его появле-

ния — Visual Basic; Visual C++ ; Visual C#. Многие варианты поставки также включают Microsoft SQL Server либо Microsoft SQL Server Express

Обычно среда разработки включает в себя текстовый редактор,

компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами

54

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

руирования графического интерфейса пользователя [7,8]. Многие современ-

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

ориентированной разработке ПО. Хотя и существуют среды разработки,

предназначенные для нескольких языков — такие как Eclipse, NetBeans или

Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования — как например, Visual Basic.

2.3.Процессы и потоки в Windows

Сточки зрения программирования каждый процесс win32/64 включает компоненты (рис. 22):

один или несколько потоков;

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

один или более сегментов кода, включая код DLL;

ПРОЦЕСС

Код программы

Глобальные переменные

Память кучи процесса

Ресурсы процесса:

Открытые файлы, Кучи,…

Блок окружения

Поток 1

 

Поток N

Локальная область

Локальная область

памяти потока

памяти потока

Стек потока

 

Стек потока

 

 

 

Рис. 22. Структура процесса и его потоков

55

один илиболее сегментовданных, содержащихглобальные переменные;

строки окружения с информацией о переменных окружениях, таких как текущий путь поиска файла и др.;

память кучи процесса;

ресурсы процесса (открытые дескрипторы, файлы, другие кучи).

Атрибуты процесса и потока в Windows приведены в табл. 2.

Атрибуты процесса и потока в Windows

Таблица 2

 

 

 

Процесс

Поток

 

Идентификатор процесса - уникальное значе-

Идентификатор потока - уникальное значе-

ние, идентифицирующее процесс в ОС

ние, идентифицирующее поток, когда он

 

вызывает сервис.

 

Дескриптор защиты – описывает, кто создал

Контекст потока – набор значений регист-

процесс, права доступа и пр.

ров, которыми определяется состояние вы-

 

полняемого потока.

 

Базовый приоритет – базовый процесс выпол-

Динамический приоритет -

приоритет вы-

няемого потока

полняемого потока в данный момент.

 

Базовый приоритет – нижний приоритет ди-

 

намического приоритета потока.

Родственность процессов по умолчанию – за-

Родственность процессов по потоку – мно-

данный по умолчанию набор процессов, где

жество процессов, где возможно выполне-

возможно выполнение потоков.

ние потоков.

 

Время выполнения – суммарное время, затра-

Время выполнения потока - совокупное вре-

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

мя, затраченное на выполнение потока в

се.

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

Счётчик ввода/вывода - переменные, в кото-

Статус извещения (оповещения) – этот флаг,

рые заносятся сведения о количестве и типе

который указывает, следует ли потоку вы-

операций ввода/вывода, выполненных пото-

полнять асинхронный вызов процедуры.

ками процесса.

 

 

Счётчик операций с виртуальной памятью –

Счётчик приостановок – в нём указывается,

это переменные, в которые заносятся сведения

сколько раз выполнение потока было приос-

о количестве и типе операций с виртуальной

тановлено без последующего возобновле-

памятью выполненных потоками процесса.

ния.

 

Квоты – максимальное количество страничной

Маркеры режима анонимного воплощения –

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

это временный признак доступа.

процессу

 

 

 

 

Порты исключения/отладки – это каналы об-

Порт завершения – это канал обмена ин-

мена информацией между процессами, в кото-

формацией между процессами, куда диспет-

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

чер процессов отправляет

сообщения при

сообщения при возникновении исключитель-

завершении потока.

 

ных ситуаций одного из потоков процесса.

 

 

Статус выхода– причины завершения процесса

Статус выхода– причины завершения потока

 

 

 

56

Все потоки процесса совместно используют код, глобальные перемен-

ные, строки окружения и ресурсы процесса [3]. Каждый поток планируется независимо. Поток включает следующие элементы:

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

томатических данных;

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

ного окружения данных потока;

структура контекста, управляемая ядром, содержащая значение аппа-

ратных регистров.

Некоторые атрибуты потока подобны атрибутам процессов. Значениия таких атрибутов потока извлекаются из значений атрибутов процесса. На-

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

Оно совпадает с множеством процессоров родственных по процессу или яв-

ляется его подмножеством. Информация, содержащаяся в контексте потока,

позволяет ОС приостанавливать и возобновлять потоки [9]. Основные функ-

ции управления процессами и потоками показаны в табл.3.

Сервисы процесса и потока в Windows

Таблица 3

 

 

 

Процесс

Поток

 

Создание процесса CreateProcess().

Создание потока CreateThread().

 

Открытие процесса OpenProcess().

Открытие потока OpenThread()

 

Информация по запросу процесса

Информация по запросу потока

 

Информация по наладке процесса

Информация по наладке потока

 

Текущий процесс GetCurrentProcessID()

Текущий поток GetCurrentThreadID()

Прекращение процесса ExitProcess()

Завершение потока ExitThread()

 

 

Получение контекста

 

 

Установка контекста

 

 

Приостановка Delay()

 

 

Возобновление

 

 

Извещение потоков

 

 

Проверка извещения потока

 

 

Порт регистрации завершения.

 

57

Основной функцией для управления процессом win32 является функ-

ция CreateProcess(). Она создаёт процесс с одним потоком. Так как процесс требует наличие кода, то в вызове функции CreateProcess() необходимо ука-

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

вичного потока. Дополнительные потоки можно создать функцией

CreateThread(). Для Windows все процессы одинаковы, и она не различает до-

черние и родительские, в отличие от Unix.

Жизненный цикл потока в Windows (рис 23) проходит следующие шесть состояний [3]:

Готовый к выполнению: это поток, который может быть направлен на выполнение, у него есть все необходимые ресурсы кроме процессорного вре-

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

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

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

деленный ему квант времени.

 

 

 

 

 

 

 

 

 

 

 

Работоспособные состояния

 

 

 

 

 

 

Резервный (2)

 

 

 

 

 

Выбор потока

 

 

 

 

 

 

Передача

 

 

для выполнения

 

 

 

 

 

 

 

 

управления

 

 

 

 

 

Вытеснение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Готовый (1)

 

 

 

 

Выполняющийся (3)

 

 

 

 

Завершение кванта времени

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Завершение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ресурсов

 

Снятие блокировки,

 

Блокировка

 

 

достаточно

 

Ресурсов достаточно

 

Завершенный (6)

 

 

 

 

Снятие блокировки

 

 

приостановка

 

 

Переходное

, Ожидание (4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

состояние (5)

 

Ресурсов

 

 

 

 

 

 

 

 

 

 

недостаточно

 

 

Неработоспособные состояния

 

 

 

 

 

Рис. 23. Жизненный путь потока в Windows

58

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

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

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

Переходное: поток готов к выполнению, но не все ресурсы необходи-

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

Завершающее: завершение потока может быть инициировано самим потоком, другим процессом или может произойти вместе с завершением ро-

дительского процесса.

После завершения необходимых операций освобождения ресурсов по-

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

2.4.Взаимодействие процессов

ВWindows процессы имеют три типа взаимодействия между собой [3].

Они показаны в табл.4.

1) Процессы могут быть осведомлены о наличии друг друга: это неза-

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

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

2) Процессы косвенно осведомлены о наличии друг друга: они не обя-

зательно могут знать идентификаторы друг друга, однако могут разделять доступ к некоторому объекту (буфер ввода/вывода).

59

3) Процессы непосредственно осведомлены о наличии друг друга: они

обращаются друг к другу по идентификаторам и предназначены для совмест-

ной работы.

 

 

 

 

Взаимодействие процессов

Таблица 4.

 

 

 

 

Степень

Взаимосвязь

Влияние одного процесса

Потенциальная про-

взаимодействия

на другой

блема взаимодействия

Не осведомлены

Конкуренция

Результаты работы одного про-

Взаимоисключение,

 

 

цесса не зависят от действий

взаимоблокировка,

 

 

других. Возможно влияние од-

голодание

 

 

ного процесса на работу другого

 

Косвенно

Сотрудничество

Результаты работы одного про-

Взаимоисключение,

осведомлены

с использовани-

цесса могут зависеть от инфор-

взаимоблокировка,

 

ем разделения

мации, полученной от других.

голодание,

 

 

Возможно влияние одного про-

связь данных

 

 

цесса на работу другого

 

Непосредствен-

Сотрудничество

Результаты работы одного про-

Взаимоблокировка,

но осведомлены

с использовани-

цесса могут зависеть от инфор-

голодание

 

ем связей

мации, полученной от других.

 

 

 

Возможно влияние одного про-

 

 

 

цесса на работу другого

 

Взаимоисключение (mutual exclusion) – это предоставление процессу не-

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

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

Взаимоблокировка (deadlock) – пусть в системе 2 процесса П1 и П2 и 2

ресурса Р1 и Р2, и П1 требуется для работы Р1 и Р2 и он уже захватил Р1, а

Р2 недоступен, в тоже время, П2 требуется Р1 и Р2, он захватил Р2, а Р1 не-

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

Голодание - пусть в системе 3 процесса П1, П2 и П3, которые исполь-

зуют ресурс Р, возможна ситуация, когда ресурсом владеет П1, а затем пере-

даёт П3 и возможно ОС будет предоставлять Р так, что П2 не получит его, а

П1 и П3 будут использовать его попеременно, таким образом П2 не получает ресурса, хотя никакой взаимоблокировки нет, т. е. он голодает.

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

60