русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Архитектура и управление процессами в ОС семейства Windows


Дата добавления: 2013-12-23; просмотров: 1340; Нарушение авторских прав


Лекция 4

Неделимые транзакции

Ликвидация взаимоблокировок

1. Принудительная выброска ресурсов

2. Восстановление через откат (процессы периодически создают контрольные точки, позволяющие перезапустить их)

3. Уничтожение одного или более процессов

 

Транзакция – технология синхронизации высокого уровня. Один процесс объявляет, что хочет начать транзакцию с одним или более процессов. В процессе работы могут использоваться объекты или ресурсы, изменения в которых видны только процессам, участвующим в транзакции. Инициатор транзакции объявляет о её фиксации. Если все участники готовы, то результат транзакции фиксируется и становится доступен внешним процессам.

Свойства транзакции:

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

2. Неделимость – транзакция находится в процессе выполнения, другие процессы не видят её промежуточных результатов.

3. Постоянство – после фиксации транзакции никакой сбой не отменяет её результатов.

 

Транзакции могут быть реализованы:

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

2. Модифицируются реальные объекты и ведется журнал, в котором указывается транзакция, изменяемый файловый блок, старые и новые значения.

 

Процессы поддержки системы
Процессы сервисов
Приложения пользователей
Подсистема окружения
DLL подсистема
Исполнительная система
Ядро
Драйвера устройств
HAL
Поддержка окон и графики
Пользовательский режим Режим ядра

HAL – Hardware abstraction layer – уровень абстрагирования от оборудования



Существует четыре типа пользовательских процессов:

1. Фиксированные процессы поддержки системы (диспетчер сеансов, обработчик входов в систему);

2. Процессы сервисов (диспетчер задач);

3. Пользовательские процессы (64 и 32 разрядные приложения);

4. Подсистема окружения (часть поддержки среды ОС, предоставляемая пользователю программистом)

Компоненты ядра:

1. Исполнительная система Windows (содержит базовые сервисы ОС, обеспечивающие управление памятью, потоками, ввод/вывод и межпроцессное взаимодействие)

2. Ядро (содержит низкоуровневые функции ОС: планирование поток, диспетчеризация прерываний и исключений)

3. Драйверы устройств (+драйвер сетевых и файловых систем)

4. HAL – уровень абстрагирования от оборудования (абстрагирует ядро, драйверы и исполнительную систему от специфики оборудования).

5. Подсистема окон и графики (реализует функции GUI)

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

Основные группы объектов ядра:

1. Управляющие (control objects) - включают объекты асинхронного и отложенного вызовов процедур и объекты диспетчера вода/вывода.

2. Объекты диспетчера (dispatcher objects) – реализуют средства синхронизации – поток, мютекс, событие, семафор, таймер.

Объекты исполнительной подсистемы инкапсулируют один или более объектов ядра и предоставляет для приложений и сервисов более высокие функции.

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

Драйверы устройств являются загружаемыми модулями режима ядра и могут исполняться в одном из трех контекстов:

1. В контексте пользовательского потока, вызвавшего функцию ввода/вывода.

2. В контексте системного потока режима ядра.

3. Как результат прерывания.

Типы драйверов устройств:

1. Драйверы аппаратных устройств (управляют через HAL оборудованием)

2. Драйверы файловой системы (принимают запросы на файловый ввод/вывод и транслируют их в запросы ввода/вывода конкретного устройства)

3. Драйверы фильтра файловой системы (обеспечивают дополнительные функции: зазеркаливание, шифрование дисков и так далее)

4. Сетевые редиректоры (это драйверы файловых систем, передающие запросы на файловый ввод/вывод другим компьютерам сети и принимающие такие запросы)

5. Драйверы протоколов (они реализуют сетевые протоколы)

6. Драйверы потоковых фильтров ядра (действуют по цепочке для обработки потоков данных)

В каждой Win системе выполняются процессы:

1. Процесс Idle – включает по одному потоку на процессор для учета времени его простоя

2. Процесс System – содержит большинство системных поток режима ядра (kernel mode system threads). Как правило, всегда функционируют в потоке в режиме ядра

3. Процесс Smss – диспетчер сеансов. Это порождаемый поток режима ядра, функционирующий в пользовательским режиме и отвечающий за последний этап инициализации исполнительной системы ядра. Он так же запускает процессы подсистем csrss и winlogon.

4. Процесс Winlogon – процесс входа в систему. Уведомление о запросе пользователя на вход в систему генерируется при комбинации клавиш SAS-Secure Attention Sequence.

5. Процесс Services -диспетчер управления сервисами и дочерние процессы сервисов svchost.

6. Процесс Lsass - серверный процесс локальной идентификации.

Процесс Windows состоит из:

1. Структура данных, содержащая всю информацию о процессе

2. Адресное пространство

3. Исполняемая программа и данное.

За исполнение кода, содержащегося в адресной пространстве, отвечают поток. В каждом процессе есть минимум 1 поток. Каждый поток имеет уникальный идентификатор, содержимое набора регистров, отражающих состояние процессора, два стека (один для выполнения в режиме ядра, другой – в пользовательском) и закрытую область памяти, называемую локальной памятью потока (Thread local storage или TLS).

Реализованная система вытесняющего планирования на основе приоритетов с квантованием по времени. По окончании кванта проверяется наличие готовых потоков с тем же или большем приоритетом, если таких нет – потоку выделяется ещё один квант. Поток с более высоким приоритетом может прервать выполнение. Квант не измеряется в единицах времени, а выражается целым числом. Для каждого потока хранится текущее значение его кванта. Выделение кванта означает его установку в начальное значение.

По каждому прерыванию таймера из кванта вычитается тройка, пока он не достигнет нуля. Частота срабатывания таймера зависит от аппаратной платформы. Используется 32 уровня приоритета (от 0 до 31): 0 – системный уровень, зарезервированный для потока обнуления страниц, с 1 по 15 – динамические уровни приоритета, с 16 по 31 – уровни реального времени. При создании процесса его назначается один из шести классов приоритетов: Real Time Class (24), High Class (13), Above Normal Class (10), Normal Class (8), Below Normal (6), Idle (4).

Приоритет каждого потока вкладывается из приоритета его процесса и относительно приоритета самого потока. Есть семь относительных приоритетов: Normal (такой же как и у процесса), Above Normal (+1 к процессу), Below Normal (-1 к процессу), Highest (+2), Lowest (-2), Time Critical (Real Time Class -- 31, остальные -- 15), Idle (RT – 16, остальные – 1)

Если система многопроцессорная, поток по умолчанию выполняется на любом доступном процессоре. Может быть выполнена привязка к конкретному процессору через win32/64 функции планирования. Каждому процессу доступно линейное 4х гигабайтное виртуальное адресное пространство. Его верхняя половина резервируется ОС, нижняя доступна процессу. ВАП доступно всем потокам этого процесса.

Создание процессов осуществляется функцией группы Create Process. При этом открывается файл образа (.exe), которые будет выполняться в процессе. Если исполняемый файл не win32 приложение, то ищется образ поддержки. Следующим создается объект процессов, создается первичный поток (стек, контекст, объект «поток»). Подсистема планирования уведомляется о создании нового процесса и потока. Далее инициализируется адресное пространство и начинается выполнение.

Завершение процессов.

Процесс завершается, если:

1. Входная функция первичного потока возвратила управление

2. Один из потоков процесса вызвал функцию Exit Process

3. Поток другого процесса вызвал функцию Terminate Process

Для управления ресурсами используются объекты ядра по их описателям (handle). Это объекты:

§ Access Tocken (маркер доступа)

§ Change modification (уведомление об изменения на диске)

§ I/O Completion ports (завершение ввода/вывода)

§ Event (событие)

§ File (файл)

§ File mapping (проекция файла)

§ Job (задание)

§ Mutex (мютекс)

§ Pipe (канал)

§ Process (процесс)

§ Semaphore (семафор)

§ Thread (поток)

§ Timer (таймер)

 



<== предыдущая лекция | следующая лекция ==>
Взаимоблокировки | Управление процессами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.