uawikipc.ru

Ядро windows

Ядро складається з набору функцій, які перебувають в файлі Ntoskrnl.exe. Цей набір надає основні механізми (служби диспетчеризації потоків і синхронізації), що використовуються компонентами виконуючої системи, а також підтримкою архітектурно-залежного обладнання низького рівня (наприклад, диспетчеризацией переривань і винятків), яке має відмінності в архітектурі кожного процесора.

Відео: Як включити всі ядра мікропроцесора: Windows 7,8,8.1,10

Код ядра написаний головним чином на C, з асемблерним кодом, призначеним для задач, що вимагають доступу до спеціальних інструкцій і регістрів процесора, доступ до яких з коду на мові C утруднений.

Подібно різним допоміжним функціям, ряд функцій ядра документовані в WDK (і їх опис може бути знайдено при пошуку функцій, що починаються із префікса Ke), оскільки вони потрібні для реалізації драйверів пристроїв.

Відео: Як включити всі ядра на комп`ютері в Windows Xp

зміст:

Об`єкти ядра.

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

За межами ядра виконуюча система являє потоки та інші ресурси спільного використання у вигляді об`єктів. Ці об`єкти вимагають деяких витрат, наприклад, на дескриптори для управління ними, на перевірки безпеки для їх захисту і на ресурсні квоти, що виділяються при їх створенні.

У ядрі, що реалізує набір менш складних об`єктів, званих «об`єктами ядра», подібні витрати виключені, що допомагає ядру управляти основною обробкою і підтримувати створення виконуючих об`єктів. Більшість об`єктів рівня виконання інкапсулюють один або кілька об`єктів ядра, приймаючи їх, певні в ядрі властивості.

Один набір об`єктів ядра, які називаються «керуючими об`єктами», визначає семантику управління різними функціями операційної системи.

У цей набір включені об`єкти асинхронного виклику процедур - APC, відкладеного виклику процедур - deferred procedure call (DPC), і кілька об`єктів, які використовуються диспетчером вводу-виводу, наприклад, об`єкт переривання.

Ще один набір об`єктів ядра, відомих як «об`єкти-диспетчери», включає можливості синхронізації, що змінюють або впливають на планування потоків. Об`єкти-диспетчери включають потік ядра, м`ютекс (званий серед фахівців «мутантом»), подія, пару подій ядра, семафор, таймер і таймер очікування. Виконуюча система використовує функції ядра для створення екземплярів об`єктів ядра, роботи з ними і створення більш складних об`єктів, що надаються в режимі користувача.

Область ядра, що відноситься до управління процесором, і блок управління (KPCR і KPRCB).

Для зберігання специфічних для процесора даних ядром використовується структура даних, яка називається областю, що відноситься до управління процесором, або KPCR (KernelProcessorControlRegion). KPCR містить основну інформацію, таку як процесорна таблиця диспетчеризації переривань (interrupt dispatch table, IDT), сегмент стану задачі (task-state segment, TSS) і таблиця глобальних дескрипторів (globaldescriptortable, GDT). Вона також включає стан контролера переривань, яке використовується разом з іншими модулями, такими як ACPI-драйвер і HAL.

Для забезпечення простого доступу до KPCR ядро зберігає покажчик на цю область в регістрі fs на 32-розрядної системі Windows і в регістрі gs на Windows-системі x64. На системах IA64 KPCR завжди знаходиться за адресою 0xe0000000ffff0000.

KPCR також містить вкладену структуру даних, яка називається блоком управління процесором (kernelprocessorcontrolblock, KPRCB). На відміну від області KPCR, яка документально підтверджена для драйверів сторонніх виробників і для інших внутрішніх компонентів ядра Windows, KPRCB є закритою структурою, яка використовується тільки кодом ядра, який знаходиться в файлі Ntoskrnl.exe.

У цьому блоці міститься:

  • інформація про планування (така як поточний, наступний і був загальмований потоки, призначені для виконання на процесорі) -
  • призначена для процесора база даних диспетчера (що включає готові черзі для кожного пріоритетного рівня) -
  • DPC-чергу-
  • інформація про виробника центрального процесора і ідентифікаційна інформація (модель, степінг, швидкість, біти особливостей) -
  • інформація про топології центрального процесора і про технології доступу до неоднорідною пам`яті - NUMA (інформація про вузол, про кількість логічних процесорів в кожному ядрі і т. д.) -
  • інформація про розміри кеш-пам`яті-
  • інформація про облік часу (така як час DPC та обробки переривання) і багато іншого.

У KPRCB також міститься вся статистика процесора, така як статистика введення-виведення, статистика диспетчера кешу, статистика DPC і статистика диспетчера пам`яті. І нарешті, KPRCB іноді використовується для зберігання структур вирівнювання кордонів кешу для кожного процесора, необхідних для оптимізації доступу до пам`яті, особливо на NUMA-системах. Наприклад, система невивантажуваного і вивантажується пулу з боку виглядає як списки, що зберігаються в KPRCB.

Експеримент: перегляд KPCR і KPRCB.

Вміст KPCR і KPRCB можна переглянути, використовуючи команди налагодження ядра! Pcr і! Prcb. Без позначок відладчик за замовчуванням покаже інформацію для центрального процесора 0- але ви можете вказати центральний процесор, додавши після команди його номер (наприклад,! Pcr 2).

Відео: Windows 10 - Розблокувати ядра (Прискорення - CPU)

У наступному прикладі показано, як виглядає висновок команд! Pcr і! Prcb.

Якщо в системі були затримані DPC-виклики, ця інформація також буде відображена на екрані.



lkd>! pcr

KPCR for Processor 0 at 81d09800:

Major 1 Minor 1

NtTib.ExceptionList: 9b31ca3c

NtTib.StackBase: 00000000

NtTib.StackLimit: 00000000

NtTib.SubSystemTib: 80150000

NtTib.Version: 1c47209e

NtTib.UserPointer: 00000001

NtTib.SelfTib: 7ffde000

SelfPcr: 81d09800

Prcb: 81d09920

Irql: 00000002

IRR: 00000000

IDR: ffffffff

Відео: Як включити всі ядра на компі

InterruptMode: 00000000

IDT: 82fb8400

GDT: 82fb8000

TSS: 80150000

CurrentThread: 86d317e8

NextThread: 00000000

IdleThread: 81d0d640

DpcQueue:

lkd>! prcb

PRCB for Processor 0 at 81d09920:

Current IRQL - 0

Threads-- Current 86d317e8 Next 00000000 Idle 81d0d640

Number 0 SetMember 1

Interrupt Count - 294ccce0

Times - Dpc 0002a87f Interrupt 00010b87

Kernel 026270a1 User 00140e5e

Для безпосереднього виведення дампа структур даних _KPCR і _KPRCB можна скористатися командою dt, оскільки обидві команди налагодження дають вам адреси структур (які для наочності виділені в попередньому висновку жирним шрифтом). Наприклад, якщо потрібно визначити швидкість процесора, можна за допомогою наступної команди подивитися на поле MHz:

lkd> dt nt! _KPRCB 81d09920 MHz

+0x3c4 MHz: 0xbb4

lkd>? bb4

Evaluate expression: 2996 = 00000bb4

На даній машині процесор був запущений на частоті близько 3 ГГц.

Поділитися в соц мережах:
Схожі
» » Ядро windows