- •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
- •Спин-блокировки
Внутреннее устройство потоков
Потоки называются упрощенными процессами и обеспечивает многопоточность.
На слайде 38 в левой части – элементы, присущие каждому процессу, в правой – каждому потоку.
Основные блоки описания потоков в ос Windows
На уровне исполнительной системы поток представляется блоком потока, который называется EThread. Структура блока показана на слайде 44.
Все структуры данных, на которые ссылается этот блок, существуют в системном адресном пространстве.
Временные показателя потока:
1) время создания и завершения потока;
2) идентификационные данные потока – идентификатор процесса и указатель на EProcess.
3) стартовый адрес потока – адрес в реальной ОП;
4) информация безопасности: маркер доступа и ссылка на соответствующую структуру;
5) элемент механизма LPC – идентификатор и адрес сообщения, ожидаемого потоком;
6) информация, связанная с вводом-выводом: указатель на адрес структуры, описывающей список необработанных запросов на ввод-вывод.
Существует еще блок потока ядра.
Ключевые поля блока KThread (Kernel Thread) следующие:
1) заголовок объекта диспетчера – тот заголовок, который дал потоку диспетчер;
2) время выполнения – суммарное время выполнения в режиме ядра и пользовательском режиме;
3) указатель на верхнюю и нижнюю часть стека потока ядра;
4) указатель на таблицу системных сервисов;
5) базовые текущие приоритеты потока;
6) значения кванта времени, выделяемого потоку;
7) маска привязки к выполнению на том или ином процессоре;
8) блоки ожидания – указатель на события, которые ожидаются;
9) информация об ожидании: причина ожидания и время, когда поток перешел в ожидание;
10) блок таймера – встроенный блок таймера потока.
Чтобы посмотреть блок потока, в Windows Debugger команда dt nt _ethread (kthread).
Существуют и другие блоки для описания потоков.
Взаимодействие процессов (ipc)
При взаимодействии процессов необходимо решать следующие задачи:
1) распределение ресурсов между процессами;
2) согласование действий над ресурсами;
3) передача информации от одного процесса к другому.
Передача информации для взаимодействия потоков та же, но третий пункт решается проще, т.к. потоки одного процесса находятся в общем адресном пространстве.
Взаимоисключения
Определение. Под состоянием состязания понимается ситуация, при которой конечный результат выполнения какого-либо действия над общим выделенным ресурсом зависит от того, какой процесс первым выполнит это действие.
Проблема называется синхронизация процессов по доступу к ресурсам, сложность ее в том, что эти ситуации возникают нерегулярно. Кроме того, большая зависимость от того, насколько различны скорости выполнения разных процессов, т.е. за выделенный квант времени один процесс может выполнить большую работу с ресурсами, а другой – малую, поэтому возможно изменение ресурса первым процессом, которое будет невыгодно второму процессу. Такое состояние называется гонками, а области исполнительного кода, обращающегося к одним и тем же ресурсам, называется критической секцией.
