- •1. Понятие вычислительной системы
- •1.1. Модель вычислителя
- •1.2. Модель коллектива вычислителей
- •1.3. Понятие параллельных алгоритмов
- •1.4. Принципы технической реализации модели коллектива вычислителей
- •1.9. Распределенные вычислительные системы
- •1.5. Классификация архитектур вычислительных систем
- •1.6. Конвейерные вычислительные системы
- •1.7. Матричные вычислительные системы
- •1.8. Мультипроцессорные системы
- •1.10. Вычислительные системы с программируемой структурой
- •1.11. Примеры реализаций вычислительных систем.
- •2. Аппаратные средства вс
- •2.1. Прерывания
- •2.2. Многомодульное программирование
- •2.3. Реализация архитектурных решений. Обзор технологий процессоров Intel
- •3. Ос. Основные понятия и типы операционных систем
- •3.1. Основные технологии программирования
- •3.2. Общие подходы к построению ос. Классификация ос.
- •3.3. Основные функции ос
- •3.4. Подходы к построению ос.
- •3.5. Виртуализация
- •3.6. Подходы Oracle
- •3.7. Центры обработки данных (цод)
- •Инструментарий ос (на основе Windows)
- •Основные базовые понятия: процессы и потоки
- •Инструментарий
- •Режим ядра и пользовательский режим
- •Средства изучения внутреннего устройства Windows
- •Основные концепции построения Windows
- •Архитектура современных ос
- •Лекция Основные требования при проектировании
- •Модель ос Windows
- •Обзор архитектуры
- •Многопроцессорная обработка
- •Различия между клиентскими и серверными версиями ос Windows
- •Лекция. Проверочный выпуск ос
- •Ключевые компоненты системы
- •Подсистема окружения
- •Подсистема окружения Windows
- •Исполнительная система Windows
- •Объекты ядра
- •Поддержка оборудования
- •Уровень абстрагирования от оборудования (Hardware Abstraction Layer)
- •Драйверы устройств в ос Windows
- •Недокументированные интерфейсы
- •Системные процессы
- •Прерывания (interrupts) и dpc (deferred procedure calls)
- •Процесс system и его потоки
- •Диспетчер сеансов
- •Диспетчер управления сервисами
- •Системные механизмы Windows
- •Виртуальная память
- •Режим ядра и пользовательский режим
- •Другие механизмы
- •Уровни запросов программных прерываний
- •Объекты прерывания
- •Программные прерывания
- •Прерывания apc (Asynchronous Procedure Call)
- •Диспетчеризация исключений
- •Необработанные исключения
- •Поддержка отчетов об ошибках
- •Диспетчеризация системных сервисов
- •Диспетчеризация 32-разрядных системных сервисов
- •Диспетчеризация системных сервисов режима ядра
- •Диспетчер объектов
- •Объекты исполнительной системы
- •Структура объектов в Windows
- •Заголовки и тела объектов
- •Объекты типа
- •Атрибуты объекта типа
- •Методы объекта
- •Описатели объектов и таблица описателей
- •Глобальные флаги Windows
- •Трассировка событий ядра
- •Управление процессами и потоками
- •Внутреннее устройство процессов
- •Создание процессов
- •Внутреннее устройство процессов. Структуры данных
- •Внутреннее устройство потоков
- •Основные блоки описания потоков в ос Windows
- •Взаимодействие процессов (ipc)
- •Взаимоисключения
- •Синхронизация в Windows
- •Спин-блокировки
Внутреннее устройство процессов. Структуры данных
Каждый процесс в Windows представлен блоком процесса, создаваемого исполнительной системой, который называется EProcess. В этом блоке содержатся указателя на некоторые другие структуры данных.
Так, у каждого процесса есть один или более обязательных потоков, которые представлены также блоками описания EThread.
Для каждого процесса, выполняющегося в Windows, процесс CSRSS.exe поддерживает в дополнение к блоку EProcess другие параллельные структуры данных, необходимые для подготовки процесса на выполнение.
На слайде 22 показаны основные структуры процесса и соответственно потока, относящегося к процессу.
Содержимое блока EProcess следующее:
1) блок процесса ядра (KProcess) является указателем на список блоков потока ядра KThread, принадлежащих процессу;
2) идентификатор процесса – уникальный идентификатор для данного образа процесса;
3) блок Cloud(???) – ограничение на использование виртуальной памяти – наборы структур данных, которые существуют в процессе для описания частей виртуального пространства;
4) информация о виртуальной памяти – текущий и максимальный размер виртуальной памяти, а также информация о использовании страничного файла, а также каталога страниц процесса и т.д.
5) LPC порт исключений – служит для канала межпроцессной связи;
6) маркер доступа – объект, описывающий профиль защиты данного процесса;
7) таблица описателей (адрес таблицы описателей, принадлежащий процессу);
8) блок переменных окружения процесса – содержит информацию об образе исполняемого файла и информацию о динамически выделяемой памяти – куче процесса;
9) блок процесса подсистемы Windows – содержит информацию о процессе для той части подсистемы Windows, которая работает в ходе выполнения процесса в режиме ядра.
Блок EProcess интересен, его можно посмотреть в Windows Debugger.
В общем случае процесс Windows включает компоненты:
1) закрытое виртуальное адресное пространство – диапазон адресов виртуальной памяти, которыми может пользоваться процесс;
2) исполняемую программу – начальный код и данные, которые проецируются на виртуальное адресное пространство процесса;
3) список открытых описателей различных системных ресурсов – семафоров, коммуникационных портов и других объектов;
4) контекст защиты – маркер доступа, идентифицирующий пользователя и группы безопасности, сопоставляемые с процессом;
5) минимум один поток;
6) идентификатор.
Порядок создания процесса на основе функции CreateProcess. Создание процесса осуществляется в Windows вызовом таких функций, как CreateProcess, CreateProcessUser и т.д. и проходит в течение нескольких этапов с использованием следующих компонент ОС: kernel32.dll, исполнительной системы и процесса подсистемы окружения Windows. Поскольку Windows теоретически включает несколько подсистем окружения, поэтому CreateProcess в зависимости от подсистемы окружения выполняется по-разному.
Укрупненно порядок создания процесса следующий:
1) открывается файл образа процесса (.exe), который будет выполняться в процессе;
2) исполнительная система ОС создает объект «процесс»;
3) создается так называемый первичный поток, который будет выполняться в процессе, включающий контекст – код и данные, стек и описатель объекта «поток»
4) подсистема Windows уведомляется о создании нового процесса с потоком в нем;
5) Windows начинает осуществлять выполнение потока;
6) инициализируется адресное пространство виртуальной ОП, туда загружаются необходимые компоненты для выполнения процесса;
7) сообщение планировщику процессов Windows о готовности процесса к выполнению.
Прежде, чем открыть образ для выполнения, ОС выполняет следующие действия:
1) задается класс приоритета процесса;
2) формируется необходимая информация для взаимодействия с компонентой графического интерфейса. В дальнейшем процесс запускается тогда, когда в зависимости от приоритета до него дойдет очередь.
Более подробно этапы создания процесса показаны на слайде 33.
