- •1. Понятие вычислительной системы
- •1.1. Модель вычислителя
- •1.2. Модель коллектива вычислителей
- •1.3. Понятие параллельных алгоритмов
- •1.4. Принципы технической реализации модели коллектива вычислителей
- •1.5. Классификация архитектур вычислительных систем
- •1.6. Конвейерные вычислительные системы
- •1.7. Матричные вычислительные системы
- •1.8. Мультипроцессорные системы
- •1.9. Распределенные вычислительные системы
- •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 можно выполнить следующие системные процессы:
1) процесс IDLE (процесс так называемого простоя);
2) процесс System – содержит большинство потоков режима ядра. Замечание: в целом, IDL и System не являются процессами в строгом понимании этого слова, т.к. они не выполняют кода.
3) слайд 36 – диспетчер сеансов smss.exe – подсистема windows srss.exe;
4) процесс входа в систему winlogon.exe;
5) диспетчер управления сервисами
6) серверный процесс локальной аутентификации lslss.exe
Чтобы посмотреть их взаимосвязь, рассмотрим дерево на слайде 37 на основе процесса explorer.exe.
Процесс IDLE – не выполняет реальный код пользовательского режима, нет модуля idleprocess.exe. Кроме того, специфика – разные утилиты называют его по-разному.
Прерывания (interrupts) и dpc (deferred procedure calls)
На слайде 37 эти строки указывают время, затраченное на обслуживания прерываний и так называемых отложенных вызовов процедур.
На этом слайде они относятся к процессам, но на самом деле процессами не являются.
Процесс system и его потоки
Процесс system служит носителем потоков, которые работают только в режиме ядра – системных потоков режима ядра (Kernel mode System Threads). Эти потоки имеют атрибуты обычных потоков (пользовательского режима), но выполняются внутри системного кода ОС (NTOSKrnl.exe) или какого-то драйвера.
Особенность: у системных потоков нет адресного пространства из какого-то пользовательского процесса и поэтому им выделяется память динамически из так называемых куч (Heap) реальной ОП.
Эти потоки, как правило, создаются специальной функцией PSCreateSystemThread (см. DDK).. Функция вызывается и работает только в режиме ядра.
Пример: системные потоки используют диспетчер памяти для реализации записи измененных рамок реальной ОП в область страничного обмена на диск (в .h файл) или загрузки потоков процессов в реальной ОП для выполнения.
Примечание: в ОС Windows ядро создает особый системный поток, который называется: «Диспетчер настройки баланса» (Balance Set Manager) – фоновый процесс, активизируется в среднем раз в секунду. Проверяет различные события, связанные с управлением реальной ОП. Диспетчер кэша также использует системные потоки (для опережающей чтение и отложенной записи). Имеются также системные потоки по управлению некоторыми устройствами ввода-вывода. Владельцем системных потоков является процесс system.
Замечание: драйверы устройств могут создавать системные потки в любом процессе.
Диспетчер сеансов
Диспетчер сеансов (Session Manager). Файл .exe (smss.exe) его представлен на слайде 41. Является первым процессом при создании пользовательского процесса. Порождается системным потоком режима ядра. Диспетчер сеансов также отвечает за этапы запуска Windows. Запускает процессы подсистем (как правило, csrss.exe), которые, в свою очередь, запускают другие.
В целом диспетчер сеансов ждет от ядра описателей этих процессов для того, чтобы завершить запуск Windows.
В ОС Windows существует специальный сеанс – Terminal Service. Когда диспетчер сеансов получает запрос на его создание, он вызывает функцию NtSetSystemInformation для настройки сеансовых структур данных. Настраивается виртуальное адресное пространство, подкачивается память для того, чтобы запустить финишные процессы загрузки Windows winlogon.exe и csrss.exe для данного сеанса.
Winlogon, LSASS и Userinit
Процесс входа в Windows winlogon.exe (слайд 42) обрабатывает вход пользователя в систему и выход из нее. При нажатии клавиши SAS (Security attention sequence) он получает запрос о входе пользователя в систему. По умолчанию SAS – комбинация ctrl+alt+del.
Замечание: в ОС Windows предусмотрен механизм, который позволяет предотвратить перехват пользовательским процессом нажатие SAS с целью безопасности.
Идентификация и аутентификация при входе в систему реализованы в заменяемой DLL под названием GINA. По умолчанию имеется стандартная GINA Windows (msgina.dll). Замечание: разработчики могут включать свою msgina.dll.
После ввода имени и пароля пользователя эти данные посылаются так называемому процессу локальной аутентификации LSASS, который представлен lsass.exe. Он вызывает необходимые DLL, которые проверяют по определенному алгоритму соответствие с частью реестра, каталогов или других данных, относящихся к аутентификации. В случае успеха lsass.exe вызывает функцию монитора состояний защиты, чтобы сформировать маркер доступа AccessTokenObject, соответствующий профилю безопасности данного пользователя. Впоследствии используется winlogon.exe для создания пользовательского процесса. Начальным процессом пользовательского процесса Windows по умолчанию является процесс UserInit.exe. Параметры UserInit хранятся в реестре. UserInit выполняет действия по инициализации пользовательской среды (запускает сценарии регистрации пользователя в системе и др., по параметру shell в реестре раздела winlogon создает процесс по запуску пользовательской оболочки (explorer.exe)).
Замечание: explorer.exe не показывает родительский процесс UserInit, т.к. после запуска UserInit завершается. Т.е. Winlogon порождает Explorer.
Примечание: Winlogon активизируется в ходе работы также при нажатии клавиш SAS.
