Similar presentations:
Ядро Windows NT: структура и архитектура
1. Ядро Windows NT
2. Unix и Windows
Эволюция ОС начинается с 1961года и до настоящего времени. ОСразрабатывались и появлялись из параллельных ветвей развития
компьютерной техники и определялось технологическим окружением того или
иного времени
1973г. Проектируется ОС Unix. Во время ее разработки были использованы
следующие возможности(окружение):
16бит. адр. пространство
Доступная память измерялась Кб
Сложная система отображения памяти и свопинга (замена программ)
Проблема со сменными носителями(не легко поддерживались)
Поддержка только одного процессора
Архитектором ядра (Kernel Architect) ОС WinNT является Dave Robert (компания
MS)
WinNT начала проектироваться в 1989г. Сравним условия ее появления.
Окружение WinNT:
32бит.адр.пространство
Мегабайты физ.памяти
Виртуальная память (стала нормой)
Мегабайты дискового пространства, поддержка сменных носителей
Многопроцессорность
Ориентированность на удобство в работе (стало №1)
3. Unix и Windows 4 первых различия двух систем
ПараметрWindows
Unix
Ориентация на…,как
единицы
планирования
Потоки
Процессы
Создание нового
процесса
CreatProcess()
Fork()
Ввод/вывод
Асинхронный вв/выв
Синхронный вв/выв
Политика
безопасности (права
доступа)
Access Control List
Список контроля
доступа
Uid/gid
Через
идентификаторы
пользователя и
группы
4. Зачем сравнивать Unix и Windows?
- Разные концепции приводят к новым идеям, т.е. для разработкиновых идей необходимо изучать, как это было сделано ранее.
Нужно знать, как все реализовывалось в существующих ОС, для
того, чтобы делать выводы и изобретать новое.
- Понимание того, что нет единственно «правильного» решения.
- Обучение критически осмысливать.
Какая среда (окружение) сейчас?
64бит.адр.пространство
Гб. физ.памяти
Виртуальная памяти и виртуальные процессоры – норма жизни
Многопроцессорность (от 64 до 128 процессорных систем)
Высокоскоростной интернет
В основном один пользователь работает на одном ПК (или на
одного человека приходится несколько выч.устройств)
5. Информация о Windows
Доступно множество информации о Windows :• Windows Internals (Russinovich Solomon) –
настольная книга, классика ОС WinNT
• Tanenbaum – рассматривает что и как
реализовано в WinNT
• Silberschatz
• Stallings
• Исходный код React OS в открытом доступе,
для исследований, что и как сделано в WinNT,
как работают функции - основа для изучения
6. История WinNT
1988г. Билл Гейтс нанимает архитектора системы VMSДэйва Катлера (Dave Cutler) и дает задание на
проектирование современной коммерческой ОС для
дестопов и серверов.
1) Это должна быть некая универсальная система, в
которой не должно быть различия между рабочими
станциями и серверами, она должна
масштабироваться
2) Должна быть совместима с OS/2(популярной в то
время ОС от компании IBM)
3) С поддержкой многопроцессорности
4) Безопасная и надежная, переносимая.
5) ОС ориентирована на ЦП Inteli860(N10) Nten(NT)
Отдел маркетинга предложил NT- New Technology
Еще одна версия VMS – WNT, следующие буквы по
алфавиту v-w m-n s-t
7.
История разработки WinNT (таймлайм)1989 начало проектирования
1993г - WinNT 3.1(в ней уже были заложены многие интересные решения,
коммерчески не успешная)
1994 - WinNT 3.5
1995 - WinNT 3.51 (граф.оболочка соответствовала Win 3.11, был достаточно
простой программ-менеджер
1996 - WinNT 4.0 – положила начало грандиозного успеха с которого началась
история массового применения Win. Впервые применена граф. Оболочка,
которая имеет название Explorer(проводник) – пользовательский
интерфейс. Ядро данной ОС очень удачное и наблюдается преемственность,
эволюционно улучшается в след. моделях ОС, часть ядра переписывается,
но фундаментальных, глобальных революционных изменений нет.)
1999 – Win2000 (NT 5.0)
2001 Win XP 2000 (NT 5.1)
2003 Win2003/XP SP2 (NT 5.2)
2006 Win Vista (NT 6.0)
2008 Win2008 (NT 6.0)
2009 Win 7/2008 R2 (NT 6.1)
2012 Win 8 (NT 6.2) – считается для десктопов провалом, но для мобильных
устройств является удобным и новым. Новый интерфейс с основой Task
Screen/ Управление ПК с помощью голоса.
8.
Windows NT. Режим пользователяПереходим к внутренним тонкостям реализации Win.
2 режима работы, состоит из 2-х уровней – компоненты, работающие
в режиме ядра и в режиме пользователя.
В режиме пользователя:
Кроме самих программ , которые запускает сам пользователь есть
Оболочка (explorer, winlogon)
Системная библиотека (ntdll.dll) – через нее осуществляются
системные вызовы (вызовы внутри ядра)
Системные службы ( (smss, lsass, services)
По другой классификации можно выделить 4 типа пользовательских
процесса:
1) Фиксированные процессы поддержки системы (logon, smss)
2) Процессы сервисов – запускаются диспетчером управления
сервисами. Термин сервис правильнее бы назвать службой, но в
книге по WinNT называется именно сервис.
3) Пользовательские программы
4) Подсистемы окружения – Win, POSIX, OS/2 – являются
равнозначными подсистемами по работе, концерн из подсистем
был достаточно гениальным.
9.
Windows NT. Режим ядраРежим ядра:
- Само ядро NTOS состоит из двух частей:
-
-
Драйвера (модель расширяемого ядра)
-
-
Kernel – абстрагирует ЦП
Executive – исполняет функции ядра –
исполнительный модуль, исполнительная
подсистема, исполнительная часть ядра,
планировщик
Интерфейс к устройствам
Реализация файловой системы, устройств
хранения, сетевого взаимодействия
Расширение функциональности самого ядра
Слой абстракции оборудования (HAL)
-
Скрывает детали работы с чипсетом/BIOS
Драйвера используют HAL - не нужно изменять
драйвера, меняется HAL.
10. Особенности ядра Windows NT.
Многопоточная система, процесс – контейнер дляпотоков. Т.е. не может быть процесс без потоков, не
могут быть потоки отдельно от процесса. Есть процесс
внутри него один или много потоков.
Планирование осуществляется по потокам.
Полностью асинхронный вв/выв.
Унифицированное управление структурами данных
ядра, хэндлами, пространствами имен, объектами
синхронизации. Каждая структура данных, какая-либо
абстракция, представляется в ядре WinNT некоторым
объектом. Есть менеджер объектов, есть таблица
хэндлов, как способ обращения к этим объектам. Этот
механизм очень мощный и представляет большие
возможности по использованию.
Безопасность на основе списков контроля доступа
Хранилище конфигураций хранится отдельно от
файловой системы в БД и носит название реестр.
11. Особенности модели ядра Windows NT.
Расширяемая (через фильтры) модель вв/выв спослойными драйверами, стандартной моделью
устройств, уведомлениями.
Технология Plug-and-Play – сегодня воспринимается
как должное, а раньше нужно было каждое новое
устройство добавлять вручную самостоятельно и это
было не всегда просто.
Управление питанием – некоторые устройства
отключаются, некоторые переводятся в режим
пониженного потребления питания. Для этого нужна
поддержка на уровне ядра ОС, драйверов. Сегодня,
используя мобильные устройства необходимо
экономить эл.энегрию. Устройства, которые
потребляют много энергии должны отключаться в
момент, когда они не нужны.
12. Структура Windows NT
13. Структура Windows NT
Архитектура ОС состоит из трех частей:1) Режим пользователя – User mode
2) Режим ядра - Kernel mode
3) Hardware – аппаратное обеспечение
Больше функционала находится в ядре: менеджеры вв/выв,
безопасности, вирт.памяти, процессов, поддержки Plug-andPlay, управления питанием, интерфейс с графич. Устройствами,
оконный менеджер, менеджер межпроцессорного
взаимодействия. В основе всего лежит менеджер объектов, на
нем строиться все ядро.
Сверху располагаются исполнительные сервисы (exect). Ниже
идут драйвера. Вся связь с аппаратурой осуществляется через
драйвера и слой абстракции (Hardware Abstraction Layer)
аппаратного обеспечения (HAL)
На рисунке обозначено микроядро – MicroKernel, хотя ядро WinNT
не является микроядром в классическом понимании, а скорее
всего является неким гибридным ядром, т.к. в нем есть службы,
которые выполняются чаще всего в режиме ядра, присутствует
гибридность.
14. Структура Windows NT
Режим пользователя также очень интересен за счет того, чтовсе пользовательские приложения взаимодействуют с
ядром и другими библиотеками режима пользователя
исключительно через подсистемы.
Именно эти подсистемы задают возможность поддержки
других программ. Это означает, что через поддержку
Posix можно осуществлять запуск программ, которые были
разработаны для ОС других классов, например, Unix,
OS/2.
При разработке была поставлена задача поддержки
популярной ведущей системы, в процессе эволюции OS/2
была полностью вытеснена ОС Win32, затем из Win
убрали поддержку OS/2, а затеи и Posix.
Сейчас фактически осталась Win32, хотя механизм был
заложен очень хороший. Но монополизация рынка
привела к тому, что MS решила отказать от этого.
15. Основные функции ядра Win
Управление:Объектами и правами доступа (ОВ, SE)
Адресными пространствами (PS, MM)
Физической памятью (MM, CACHE)
Процессорами (KE)
Вв/выводом и сетью (IO, драйвера)
Конфигурацией (config)
Абстракция нижнего уровня аппаратуры
Вспомогательные функции (EX-модуль
исполнителя, RTL – библиотека вспом.
функций)
16. Основные объекты ядра Win
OBМенеджер объектов
SE
Менеджер безопасности
PS
Менеджер потоков/процессов
MM
Менеджер памяти
CACHE
Менеджер КЭШа
KE
Планировщик
IO
Менеджер вв/выв, PnP, управление питанием
Драйвера
Управление устройствами, файл. системой,
сетью
LPC
Межпроцессорное взаимодействие
HAL
Абстракция аппаратного обеспечения
EX
Исполнительная система
RTL
Библиотека вспомогательных функций
config
Реестр (менеджер конфигураций)
17. Модули КЕ и ЕХ
Рассмотрим детально модули, их основу и практическуюреализацию.
Модуль КЕ:
абстрагирует ЦП
потоки
ассинхронные вызовы процедур (АРС)
обработка прерываний (ISR)
отложенные вызовы процедур (DPC)
предоставляет низкоуровневую синхронизацию
Модуль ЕХ:
Предоставляет другие сервисы ядра ОС, которые работают
в многопоточном режиме.
Самый высший уровень абстракции в ядре виртуальную
память – выделение памяти, хэндлы.
18. Абстракции
Для того, чтобы понять зачем нужно такое большое количествомодулей в ядре, необходимо понять, что есть абстракции.
Необходимо абстрагироваться от процессов и потоков, файлов,
все должно быть представлено в некотором общем виде и с этим
удобнее работать.
Процессы, потоки, файлы
Используются хэндлы – объектные ссылки – способ сослаться на
объект, некая «ручка» от объекта, нажимая на которую можно им
управлять.
Ядро реализует эти абстракции (оно для этого и нужно)
Абстракция – это код + данные. Это может быть что угодно – процесс,
код программы, данные
Нужно на них ссылаться
Унифицированные для экземпляров
Объекты также могут иметь имя (независимо от файловой системы)
Ядро WinNT оперирует различными объектами, эти объекты
унифицированы. Процесс, поток, примитив синхронизации –
объекты.
Объекты могут быть разного типа, но на него можно ссылаться,
можно с ним производить набор некоторых стандартных
действий. За счет этого получается очень «продвинутый»
механизм.
19. Менеджер объектов
Унифицированный механизм управления:Структурами данных в ядре
Хэндлами
Пространствами имен
Объектами синхронизации
Ресурсами
Межпроцессорным взаимодействием
Конфигурацией (реестр)
Хэндлы реализуются определенными таблицами. Для каждого процесса –
своя таблица.
1)
Хэндлы позволяют пользовательскому коду обращаться к структурам
данных ядра
2)
Можно использовать их для синхронизации (можно, например, ожидать
на хэндле наступления события). Если хэндл потока или процесса –
будем ждать завершения потока\процесса, если примитива
синхронизации – сигнал к примитиву…
3)
Реализация масштабируема
4)
У каждого процесса своя таблица хэндлов.
Хэндл – это 32/64 битная структура режима пользователя, которая
позволяет ссылаться на любой объект внутри ядра, без того, чтобы
«тянуть» указатель на какой-то участок памяти в ядре, потому что хэндл
может быть каким-то фиксированным числом.
20. Хэндл
Таблица (HT –hendlTable
Program
2
Ядро ОС
0*84001234
Объект внутри
ядра – защелка
адрес объекта
0*84001234
Режим
пользователя
Режим ядра
21.
ХэндлПользователю нужно поработать с объектом внутри ядра, например,
защелкой. Примитив синхронизации расположен по адресу
0*84001234 в виртуальной памяти.
Когда пользовательская программа(ПП) хочет выполнить какие-то
действия с этим объектом ядра, если она будет ссылаться
напрямую на тот участок памяти, где располагается этот объект
в ядре, то это будет очень плохо из за двух причин:
1)
Ядро при определенных обстоятельствах может и перенести этот
объект и при перемещении адрес объекта будет меняться и ПП
не сможет найти объект и его использовать.
2)
Открывать адрес для пользовательских программ нельзя, ибо
это внутренний адрес ОС.
Поэтому используется следующий механизм: есть таблица хэндлов,
сам хэндл – это смещение в этой таблице. Например хэндл=2, в
нем записано число 0*84001234 и оно ссылается на объект в КЕ.
Когда ядро перемещает этот объект, то в таблицу НТ
записывается новый адрес.
При этом ПП про перемещение адресов и объектов ядра ничего
не знает. Она знает, что хендл №2 в рамках текущего процесса
Pn ссылается на данный объект синхронизации.
22. Дерево объектов Win NT
Дерево объектов Win NTфайлы
устройства
объекты ядра
реестр
В NT во главе всего стоит дерево объектов.
Объект это универсальная сущность. У объекта может быть:
тип, наименование
иерархические отношения
набор операций (достаточно большой для каждого объекта)
reference caungign
таблица хэндлов для доступа
Из дерева вырастают файлы, устройства, реестр, объекты ядра.
Все объекты типизированы, имеют четкие права доступа,
наименование, тип, весь набор стандартных операций.
23. Менеджер процессов
Среда выполнения программыпространство имен
виртуальное адр.пространство
порты
потоки
аутентификация пользователя (токен)
структуры данных виртуальной памяти
Важно!!! Менеджер процессов абстрагирует MMU
(memory manager unit), а не весь ЦП. Абстракция
ЦП это КЕ, где реализовано само планирование/
24. потоки
Единица параллелизмаАбстрагирует ЦП
Потоки создаются внутри процесса
Системные потоки в режиме ядра создаются
внутри системного процесса. Примеры
системных потоков:
Специальные потоки – Lary writer, modified page writer,
balance set manager
Неспециализированные потоки
Используются для перемещения работы из контекста
пользователя в контекст режима ядра
Нужно освобождать при выгрузке драйвера
Рабочие потоки драйвера
Особый случай расширения обычных рабочих потоков
25. Планирование потоков
NT планирует потоки, а не процессы. Это ед.планирования.Вытесняющее планирование. Основано на приоритетах:
1- idle thread 15-higt 31 –critical)
16 обычных приоритетов и над ними 16 приоритетов реального
времени
Round Robin - для наивысшего приоритета
Потоки могут определять те процессы, на которые они смогут
выполняться.
У каждого потока базовый и текущий приоритеты
Базовый – как основа процесса
Потока не реального времени могут иметь boost (повышение
приоритета)
boost для интерактивности
Есть balance manager (баланс менеджер), который периодически
дает повышение приоритета тем процессам, которые готовы,
но еще не выполняются для решения проблемы старвации
26. Ввод/вывод
Расширенная, основанная на фильтрах модельвв/вывода с иерархией драйверов
Существуют стандартные модели для общих классов
устройств
Поддержка уведомлений
Хранилище конфигураций (реестр) обеспечивает
сохранность информации о решениях PnP
Полностью асинхронный вв/выв
Кэширование файлов – виртуальное,на основе
отображения памяти
Разные сценарии завершения(завершение
сигнализируется каким-либо событием:
Ожидание на хендле файла, события
Вызов через user mode APC
Порт завершения вв/выв
Опрос переменной
27. Драйвера
Драйвера устроены иерархически в виде стека, естьвозможность присоединиться к стеку устройств. Есть
объект драйвер и объект устройство – один драйвер
может обслуживать множество устройств.
Стэки устройств
Объекты устройств присоединяются к друг другу через
loAttach Device
Менеджер вв/выв посылает запрос на вершину стэка
Он проходит через все драйвера
Объект устройства указывает на объект драйвера
Драйвер представляет состояние, таблицу диспетчера
У драйверов есть объекты устройств
Объекты файлов указывают на открытые файлы.
Файловая система – драйвера, управляющие файловыми
объектами на томах.
28. Управление памятью
Виртуальные адр. дескрипторы (VAD) –представляют вирт.адр.пространство в виде
дерева
Раб.множества (РМ) – список валидных страниц
для каждого процесса, включая ядро
Страницы выгружаются из РМ согласно спискам:
Страницы с диска
Модифицированные (надо записать на диск)
Свободные (не связанные с диском вообще)
Нулевые (резерв обнуляемых по требованию страниц)
29. Файловая организация Win NT
NTOSKRNL.EXE – ядро ОС (execute и kernel).HAL.DLL – абстракция аппаратного обеспечения. Так как в ОС изначально
поддерживалась модульность, то слой абстракции аппаратного
обеспечения располагается отдельным файлом.
NTDLL.DLL – реализация Native API и системные вызовы – специальная
библиотека, где хранятся системные вызовы, которые предоставляют
пользователю удобный API интерфейс для работы.
Эти 3 файла фактически составляют ядро ОС, остальные файлы подключаемые модули к ядру, драйвера, которые загружаются по
необходимости. Смысл в том, что без этих 3файлов ничего работать не
может, так как работать будет нечем.
Подключаемые файлы (подключаемые модули ядра) могут называться как
угодно.
Модули ядра WinNT нельзя вкомпилировать в само же ядро. В ОС Linex есть
выбор, можно использовать их отдельно, можно вместе с ядром).
Для самой ОС 3файла недостаточны, необходим еще ряд менеджеров и
подсистем и всего прочего для того, чтобы организовать сложную
архитектуру WinNT, чтобы работало все подсистемное окружение.
Поэтому некоторые другие файлы тоже необходимы, они представлены ниже
в порядке загрузки.
30. Файловая организация Win NT
SMSS.EXE – процесс менеджера сессий.WINLOGON.EXE – процесс управления аутентификацией
пользователя (логон).
SERVICES.EXE – процесс управления службами
(сервисами).
LSASS.EXE – процесс подсистемы Local Security Authority.
CSRSS.EXE – процесс подсистемы Windows.
WIN32R.SYS – часть подсистемы Win, работающая в режиме
ядра. Драйвер, подключаемый модуль ядра, он реализует ту
часть подсистемы окружения Win, которая работает в
режиме ядра, т.е. это оконный менеджер и графическая
подсистема.
KERNEL32.DLL USER32.DLL GDI32.DLL– 3 ключевые
динамические библиотеки подсистемы, реализуют
пользовательскую часть подсистемы окружения Win. Для
64разрядной ОС применяются те же названия (с числом 32).
31. Упрощенная схема ядра Win NT
Процессыподдержки
системы
сервисные
процессы
Подсистемное
окружение
DLL подсистемы
Режим
пользователя
Режим
ядра
Приложения
пользователя
Executive
Kernel
Драйвера
Hardware Abstraction Layer(НAL)
Оконный
менеджер
И графика
32. Упрощенная схема ядра Win NT
Само ядро представим в виде трех слоев. Ядро должно быть помаксимуму переносимым, ибо аппаратное обеспечение может
меняться и каждый раз менять код ядра это трудоемко. Поэтому
нужно сделать универсальную часть и часть специфичную для
оборудования - небольшую, которую можно будет легко менять
и которая бы предоставляла унифицированный интерфейс ядру
и драйверам.
Это и спроектировали в HAL.
В то время, когда проектировался сам Windows это было
необходимостью, ведь не было понятно, какой доминирующей
будет аппаратная платформа через год, 5лет…, а ОС должна
ориентироваться на текущее и будущее аппаратное
обеспечение. Тогда не был ясен тип платформы (х86 х64), и
только благодаря свойству переносимости удалось выпустить
windows ARTI для планшетов (на базе ЦП ARM).
Т.О. запроектировано переносимое портабельное ядро с
помощью слоя абстракции аппаратного обеспечения (HAL).
На этом слое абстракции стоят следующие 2 части ядра:
1)Драйвера устройств – они работают с устройствами через HAL
и предоставляют свои сервисы, например устройства вв/выв –
мышь, клав., диск, сеть
2)Kernel – это не конкретно ядро, а его часть.
33. Ключевой принцип архитектуры ядра Win
Принцип подсистем окружения (или персоналий)Программы пользователя НЕ используют сервисы ОС
напрямую. Даже когда мы запускаем любое приложение
под Win напрямую, оно никогда не использует ядро
напрямую, только через подсистему окружения WinAPI, нет
вызова ядра напрямую.
Библиотека подсистемы неким образом транслирует
документированную API функцию в вызов
недокументированной функции ОС.
За счет этого функции ОС можно менять под
«сегодняшний» день, при этом оставлять обратную
совместимость с теми приложениями, которые уже
разработаны под ОС, за счет того, что есть
документированное API, которое обязано работать.
Вначале было 3 подсистемы окружения: Windows, OS/2,
POSIX
В Win 2000 исчезла OS/2
В Win XP исчезла POSIX
34. Компоненты системы ядра
Kernel – самые низкоуровневые функции ОС:планирование потоков, обработка прерываний,
мультипроцессорная синхронизация.
Kernel предоставляет низкоуровневые примитивы, на
которые Executive реализует высокоуровневые
конструкции
HAL – прослойка между аппаратным обеспечением и
ядром.
Executive – стоит выше и реализует основные
сервисы ОС: управление памятью, процессами,
потоками, безопасность, вв/выв, межпроцессорное
взаимодействие.
Драйвера устройств – реальные устройства –
работа с аппаратурой, виртуальные устройства –
драйвера (например сетевого стэка)
Другие модули ядра
Реализуют функции графического интерфейса
Реализуют оконную подсистему
35. Микроядро
В классическом понимании ядро Windows далеко немикроядро, т.к. нет защиты между компонентами ОС,
они не работают в изолированных адр.пространствах,
не работают в других режимах, а только в режиме ядра.
Причины: производительность, слишком много
переключений. По мнению MS нет ни одной
коммерчески успешной ОС, которая была бы
исключительно микроядро.
В Win используется Гибридное ядро, т.к. обладает
некоторыми характеристиками микроядра.
Подсистемы(персоналии) работают в собственных
адресных пространствах
Компоненты ядра архитектурно изолированы, т.е.
менеджер памяти, в его внутреннюю структуру из вне
никто не вторгается, все пользуются тем API, которое
предоставляет ММ. Тоже самое касается управлением
процессами, потоками, конфигурациями, они архитектурно
изолированы.
36. Микроядро
На схеме «упрощенная схема ядра» Kernel по сутии есть это микроядро, которое можно было бы
Executive вынести в режим пользователя и
разбить его на отдельные процессы.
В ядре осталась бы только часть и это было бы
классическое микроядро.
Но из за причины производительности Executive
не стали выносить в режим пользователя и
разбивать на отдельные процессы. Его
скомпилировали, поместили в модуль,
архитектурно все осталось в ядре.
Поэтому В Win ядро Гибридное и достаточно
интересно организовано.
37. Переносимость (портируемость)
Ключевая особенность ОС Win.В ядре осталась бы только часть и это
было бы классическое микроядро.
Но из за причины производительности
Executive не стали выносить в режим
пользователя и разбивать на отдельные
процессы. Его скомпилировали, поместили
в модуль, архитектурно все осталось в
ядре.
Поэтому В Win ядро Гибридное и
достаточно интересно организовано.
38. Объектно-ориентированный подход
Ключевой принцип при проектировании WinЛюбой ресурс системы представляется как некий
объект. Ресурс – это любой ресурс который
должен разделяться и к которому может быть
доступ от нескольких процессов. Если ресурс
используется в рамках одного процесса, ты
выделять его как объект не имеет смысла.
В основе WinNT – объекты, унифицированная
форма, имеющая:
Именование
Совместное использование
учет
39. Зачем все так сделано?
Есть несколько типов ресурсов, в бедующемможно добавлять другие ресурсы в систему,
и чтобы эта унифицировать и не
переписывать все ядро, создали
унифицированную форму: наименование,
совмест. использование, учет.
Любой разделяемый ресурс системы – это
объект.
Внутри структуры самого execute – не
объекты
40. Менеджер объектов
Это часть execute, сокращенное названиеOB(Object Manager) – эти же самые названия
используются в яз. СИ
Управляет ресурсами
Физ. файлы и директории
Элементы реестра
Процессы (поток)
Каждый ресурс предоставляется объектом
Операции над объектами
Создание/удаление
Защита доступа
Подсчет ссылок (Reference counting)
41. Подсчет ссылок (Reference counting)
– при создании или открытии объекта создаетсяссылка на объект, называемая хэндлом
Хэндлы ассоциированы с процессом, но могут
передаваться от одного процесса к другому, т.к.
объектом можно пользоваться из разных
процессов, то это разделяемый ресурс. Удобно
передавать хэндлы.
По иерархии объектов существуют 2 класса объектов:
executive – используются пользовательскими
приложениями и компонентами самого executive
(исполнительной подсистемы), их большинство, они
общие.
Kernel – представляют базовые ресурсы –
физические устройства, примитивы
синхронизации… Могут использоваться только в
режиме ядра. Используются только ядром, т.е. с
ними работает только ядро и больше никто.
42. Типы объектов
Класс ExecutiveProcess – процесс (множество потоков,
виртуальное адр.пространство и
управляющая информация)
Thread - поток
Job – множество процессов
File – открытый файл или устройство вв/выв
File mapping object – область памяти
отображаемая в файл
Access token – права доступа
Event - событие
43. Типы объектов
Semaphore/mutex – семафор/мьютекс(высокоуровневые примитивы
синхронизации)
Timer - таймер
Key – ключ реестра
Desktop – логический дисплей (ра.стол)
Clipboard – временный репозиторий для
других объектов
Windows Station – множество объектов типа
desktop/clipboard
Symbolic link – символьная ссылка на другие
объекты
Можно создавать свой тип объекта.
44. Что такое сам объект физически?
Сам объект – это набор каких-то данных. Каких – менеджеруобъектов без разницы. Объект состоит из двух больших
частей: тело, заголовок.
Тело – сами данные(они интересуют конкретного потребителя)
Заголовок – добавляется менеджером объектов, в нем
хранится внутренняя информация для организации объекта,
его хранения, наименования, учета, работы, прав доступа
Имя
Директория, которая ему принадлежит
Дескриптор безопасности
Сколько раз были открыты хэдлы объекта
Список процессов, имеющих ссылку на данный объект
Количество этих ссылок
Тип
Все они нужны для работы менеджера объектов.
Объекты группируются в директории, чтобы их как то
систематизировать. Строится все иерархическим образом,
есть директории верхнего уровня(Root), потом есть ветви.
заголовок
тело
45. Подсистема Windows
Состоит изCSRSS.EXE – процесс подсистемы
окружения Win, который управляет
консольными приложениями и реализует
вспомогательные функции
Win32K.SYS – драйвер режима ядра,
реализуется:
Оконный менеджер
Обработка ввода с клавиатуры/мыши
Обмен сообщениями между окнами
Графическая подсистема (GDI)
46. Подсистема пользователя
Динамические библиотеки подсистемы:ADVPI32.DLL, USER32.DLL, GDI32.DLL,
KERNEL32.DLL
Графические драйвера ( включая драйвер
принтеров)
До winNT4.0 оконный менеджер и
графическая подсистема были вынесены в
режим пользователя. В силу слабых ПК от
этого решения отказались.
Как все эти внутренности работают? Как это
все увидеть с точки зрения программиста?
47. Инструменты
Инструменты – множество программ для исследованиявнутреннего устройства Win и понимания принципа их
работы.
Существуют утилиты, которые помогают разобраться в
система Win:
Дополнения от MS
Утилиты Sysinternals(MS) –автор Марк Россинович
Сторонних разработчиков Opensource, аналоги
Taskmanager
Посмотрим какие есть утилиты.
По адресу: http://technet.microsoft.com/enus/sysinterhals/bb842062
можно скачать целый набор программ, который позволяет
заглянуть во внутреннее устройство Win, посмотреть что
и как там сделано, что скрыто для пользовательской
части. Эти программы в основном затрагивают
мониторинг того, как работает ОС.
48. Инструменты
Autorun – полный список автозапускаемых программ,можно искать программы с вредоносным кодом
DebugView – просмотр дебаг-лога на локальной машине
– журнал отладки
DeskMon – мониторинг всех дисковых операций
Handel – просмотр всех открытых процессом хендлов
Junction – поддержка ссылок в файловой системе
ListDll – список DLL, загруженных в процесс
ProcessExplorer – очень детальная информация о
каждом процессе
ProcessMonitor – информация об операциях с ФС,
реестром, процессами/потоками в реальном времени
RAMMap – информация об использовании физ.памяти
WinObj –просмотр объектов ядра
software