Статьи

Ядро Windows NT

  1. Спрощена схема ядра Windows NT Продовжуємо розпочату лекцію по ОС Windows NT. Початок лекції можна...
  2. Компоненти системи ядра
  3. микроядро
  4. Об'єктно-орієнтований підхід
  5. Менеджер об'єктів
  6. Підрахунок посилань (Reference counting)
  7. Типи об'єктів Windows
  8. Що таке сам об'єкт фізично?
  9. Файлова організація WindowsNT
  10. підсистема Windows
  11. підсистема користувача
  12. Інструменти
  13. Завантажити презентацію до лекції «Операційна система Windows NT»
  14. Cкачать тест по темі «Операційна система Windows NT»

Спрощена схема ядра Windows NT

Продовжуємо розпочату лекцію по ОС Windows NT. Початок лекції можна подивитися тут .

Саме ядро ​​представимо у вигляді трьох шарів.

Ядро має бути по максимуму стерпним, бо апаратне забезпечення може змінюватися і кожен раз міняти код ядра це занадто багато роботи. Тому потрібно зробити універсальну частина і частина специфічну для обладнання - невелику, яку можна буде легко змінювати і яка б надавала уніфікований інтерфейс ядра і драйверів.

Це і спроектували в HAL.

На малюнку нижче представлена ​​упращенія схема ядра Windоws NT.

На малюнку нижче представлена ​​упращенія схема ядра Windоws NT

Спрощена схема ядра Windows NT

У той час, коли проектувався сам Windows це було необхідністю, адже не було зрозуміло, який домінуючою буде апаратна платформа через рік, 5 років ..., а ОС повинна орієнтуватися на поточний і майбутній апаратне забезпечення. Тоді ні ясний тип платформи (х86 х64), і тільки завдяки властивості переносимості вдалося випустити Windows ARTI для планшетів (на базі ЦП ARM).

Таким чином запроектовано переноситься Портабельная ядро за допомогою шару абстракції апаратного забезпечення (HAL).

На цьому шарі абстракції стоять наступні дві частини ядра:

  1. Драйвера пристроїв - вони працюють з пристроями через HAL і надають свої сервіси, наприклад пристрої введення / виводу - миша, клавіатура, диск, мережа.
  2. Kernel - це не конкретно ядро, а його частина.

Ключовий принцип архітектури ядра Windows

Це принцип підсистем оточення (або персоналій).

Програми користувача НЕ використовують сервіси ОС безпосередньо. Навіть коли ми запускаємо будь-який додаток під Windows безпосередньо, воно ніколи не використовує ядро ​​безпосередньо, тільки через підсистему оточення Windows API, немає виклику ядра безпосередньо.

Бібліотека підсистеми якимось чином транслює документовану API функцію в виклик недокументованою функції ОС.

За рахунок цього функції ОС можна змінювати під «сьогоднішній» день, при цьому залишати зворотну сумісність з тими програмами, які вже розроблені під ОС, за рахунок того, що є документоване API, яка зобов'язана працювати.

Спочатку було три підсистеми оточення: Windows, OS / 2, POSIX

У Windows 2000 зникла OS / 2

У Windows XP зникла POSIX

Компоненти системи ядра

Kernel - самі низькорівневі функції ОС: планування потоків, обробка переривань, мультипроцессорная синхронізація.

Kernel надає низькорівневі примітиви, на які Executive реалізує високорівневі конструкції

HAL - прошарок між апаратним забезпеченням і ядром.

Executive - стоїть вище і реалізує основні сервіси ОС: управління пам'яттю, процесами, потоками, безпеку, введення / висновок, межпроцессорной взаємодія.

Драйвера пристроїв - реальні пристрої - робота з апаратурою, віртуальні пристрої - драйвера (наприклад мережевого стека).

Інші модулі ядра

  • Реалізують функції графічного інтерфейсу
  • Реалізують віконну підсистему

микроядро

У класичному розумінні ядро ​​Windows далеко не микроядро, так як немає захисту між компонентами ОС, вони не працюють в ізольованих адресних просторах, не працюють в інших режимах, а тільки в режимі ядра.

Причини: продуктивність, занадто багато перемикань. На думку MS немає жодної комерційно успішною ОС, яка була б виключно микроядро.

У Windows використовується Гібридний ядро, так як має деякі характеристиками мікроядра:

  • Підсистеми (персоналії) працюють у власних адресних просторах
  • Компоненти ядра архітектурно ізольовані, тобто менеджер пам'яті, в його внутрішню структуру із зовні ніхто не вторгається, все користуються тим API, яке надає ММ. Теж саме стосується управлінням процесами, потоками, конфігураціями, вони архітектурно ізольовані.

На малюнку вище «Спрощена схема ядра» Kernel по суті і є це микроядро, яке можна було б Executive винести в режим користувача і розбити його на окремі процеси. В ядрі залишилася б тільки частина і це було б класичне микроядро.

Але через причини продуктивності Executive не стали виносити в режим користувача і розбивати на окремі процеси. Його скомпілювали, помістили в модуль, архітектурно все залишилося в ядрі.

Тому В Windows ядро Гібридний і досить цікаво організовано.

Переносимість (портіруемость) - це ключова особливість ОС Windows.

Код ядра написаний на мові високого рівня (С / С ++) - переносимо, на Асемблері коду немає.

У ядрі і HAL є невеликі включення на Асемблері всередині шару абстракції апаратного забезпечення.

Останні 20 років ПК працюють на х86 платформі, тому питання про переносимості перед розробниками ОС не стояв.

Об'єктно-орієнтований підхід

Ключовий принцип при проектуванні Windows.

Будь-ресурс системи представляється як якийсь об'єкт. Ресурс - це будь-який ресурс який повинен розділятися і до якого може бути доступ від декількох процесів. Якщо ресурс використовується в рамках одного процесу, то виділяти його як об'єкт не має сенсу.

В основі Windows NT - об'єкти, уніфікована форма, що має:

  • іменування
  • Спільне використання
  • облік

Навіщо все так зроблено?

Є кілька типів ресурсів, в бедующем можна додавати інші ресурси в систему, і щоб ця уніфікувати і не переписувати все ядро, створили уніфіковану форму: найменування, спільне використання, облік.

Будь розділяється ресурс системи - це об'єкт.

Всередині структури самого execute - не об'єкт.

Менеджер об'єктів

Це частина execute, скорочена назва OB (Object Manager) - ці ж самі назви використовуються в мові СІ.

- Управляє ресурсами

  • Фіз. файли і директорії;
  • Елементи реєстру;
  • Процеси (потік).

Кожен ресурс надається об'єктом

Операції над об'єктами:

  • Створення / видалення;
  • Захист доступу;
  • Підрахунок посилань (Reference counting).

Підрахунок посилань (Reference counting)

При створенні або відкритті об'єкта створюється посилання на об'єкт, звана хендлом.

Хендлом асоційовані з процесом, але можуть передаватися від одного процесу до іншого, так як об'єктом можна користуватися з різних процесів, то це розділяється ресурс. Зручно передавати хендлом.

За ієрархії об'єктів існують два класи об'єктів:

  1. executive - використовуються одними додатками і компонентами самого executive (виконавчої підсистеми), їх більшість, вони загальні.
  2. Kernel - представляють базові ресурси - фізичні пристрої, примітиви синхронізації ... Можуть використовуватися тільки в режимі ядра. Використовуються тільки ядром, тобто з ними працює тільки ядро ​​і більше ніхто.

Типи об'єктів Windows

клас Executive

  • Process - процес (безліч потоків, віртуальне адр.пространство і керуюча інформація)
  • Thread - потік
  • Job - безліч процесів
  • File - відкритий файл або пристрій вводу / виводу
  • File mapping object - область пам'яті відображається в файл
  • Access token - права доступу
  • Event - подія
  • Semaphore / mutex - семафор / м'ютекс (високорівневі примітиви синхронізації)
  • Timer - таймер
  • Key - ключ реєстру
  • Desktop - логічний дисплей (раб.стол)
  • Clipboard - тимчасовий репозиторій для інших об'єктів
  • Windows Station - безліч об'єктів типу desktop / clipboard
  • Symbolic link - символьне посилання на інші об'єкти
  • Можна створювати свій тип об'єкта.

Що таке сам об'єкт фізично?

об'єкт Windows

Сам об'єкт - це набір якихось даних. Яких - менеджеру об'єктів без різниці. Об'єкт складається з двох великих частин: тіло, заголовок.

Тіло - самі дані (вони цікавлять конкретного споживача).

Тема - додається менеджером об'єктів, в ньому зберігається внутрішня інформація для організації об'єкта, його зберігання, найменування, обліку, роботи, прав доступу.

  • ім'я
  • Директорія, яка йому належить
  • дескриптор безпеки
  • Скільки разів були відкриті Хедлі об'єкта
  • Список процесів, що мають посилання на даний об'єкт
  • Кількість цих посилань
  • Тип

Всі вони потрібні для роботи менеджера об'єктів.

Об'єкти групуються в директорії, щоб їх як то систематизувати. Будується все ієрархічним чином, є директорії верхнього рівня (Root), потім є гілки.

Файлова організація WindowsNT

  1. NTOSKRNL.EXE - ядро ОС (execute і kernel).
  2. HAL.DLL - абстракція апаратного забезпечення. Так як в ОС спочатку підтримувалася модульність, то шар абстракції апаратного забезпечення розташовується окремим файлом.
  3. NTDLL.DLL - реалізація Native API і системні виклики - спеціальна бібліотека, де зберігаються системні виклики, які надають користувачеві зручний API інтерфейс для роботи.

Ці три файли фактично становлять ядро ​​ОС, інші файли - Plug-in до ядра, драйвера, які завантажуються в разі потреби. Сенс в тому, що без цих трьох файлів нічого працювати не може, так як працювати буде нічим.

Підключаються файли (Plug-in ядра) можуть називатися як завгодно.

Модулі ядра Windows NT не можна вкомпільовані в саме ж ядро. В ОС Linex є вибір, можна використовувати їх окремо, можна разом з ядром).

Для самої ОС три файли недостатні, необхідний ще ряд менеджерів і підсистем і всього іншого для того, щоб організувати складну архітектуру Windows 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 - три ключові динамічні бібліотеки підсистеми, реалізують призначену для користувача частину підсистеми оточення Winвщци. Для 64разрядной ОС застосовуються ті ж назви (з числом 32).

підсистема Windows

Складається з:

CSRSS.EXE - процес підсистеми оточення Windows, який управляє консольними додатками і реалізує допоміжні функції

Win32K.SYS - драйвер режиму ядра, реалізується:

  • Віконний менеджер;
  • Обробка введення з клавіатури / миші;
  • Обмін повідомленнями між вікнами;
  • Графічна підсистема (GDI).

підсистема користувача

  • Динамічні бібліотеки підсистеми: ADVPI32.DLL, USER32.DLL, GDI32.DLL, KERNEL32.DLL
  • Графічні драйвера (включаючи драйвер принтерів)

До Windows NT4.0 віконний менеджер і графічна підсистема були винесені в режим користувача. В силу слабких ПК від цього рішення відмовилися.

Як всі ці нутрощі працюють? Як це все побачити з точки зору програміста?

Інструменти

Інструменти - безліч програм для дослідження внутрішньої будови Windows і розуміння принципу їх роботи.

Існують утиліти, які допомагають розібратися в система Windows:

  • Доповнення від MS
  • Утиліти Sysinternals (MS) -автор Марк Россіновіч
  • Сторонніх розробників Opensource, аналоги Taskmanager

Подивимося які є утиліти.

За адресою: http://technet.microsoft.com/en- us / sysinterhals / bb842062

можна завантажити цілий набір програм, який дозволяє зазирнути у внутрішній устрій Windows, подивитися що і як там зроблено, що приховано для користувача частини. Ці програми в основному торкаються моніторинг того, як працює ОС.

  • Autorun - повний список автозапускаемой програм, можна шукати програми з шкідливим кодом
  • DebugView - перегляд дебаг-балки на локальній машині - журнал налагодження
  • DeskMon - моніторинг всіх дискових операцій
  • Handel - перегляд всіх відкритих процесом хендлов
  • Junction - підтримка посилань в файлової системі
  • ListDll - список DLL, завантажених в процес
  • ProcessExplorer - дуже детальна інформація про кожного процесі
  • ProcessMonitor - інформація про операції з ФС, реєстром, процесами / потоками в реальному часі
  • RAMMap - інформація про використання фізичної пам'яті
  • WinObj - перегляд об'єктів ядра

Завантажити презентацію до лекції «Операційна система Windows NT»

Cкачать тест по темі «Операційна система Windows NT»


Давайте дружити!

Що таке сам об'єкт фізично?
Як всі ці нутрощі працюють?
Як це все побачити з точки зору програміста?

Новости