Микроядро windows nt ntoskrnl exe функции

From Wikipedia, the free encyclopedia

From Wikipedia, the free encyclopedia

This article is about a computer file that contains a part of Windows kernel, among other things. For the Windows NT kernel itself, see Architecture of Windows NT.

ntoskrnl.exe (short for Windows NT operating system kernel executable), also known as the kernel image, contains the kernel and executive layers of the Microsoft Windows NT kernel, and is responsible for hardware abstraction, process handling, and memory management. In addition to the kernel and executive mentioned earlier, it contains the cache manager, security reference monitor, memory manager, scheduler (Dispatcher), and blue screen of death (the prose and portions of the code).[1]

Overview[edit]

ntoskrnl.exe depends on bootvid.dll, hal.dll and kdcom.dll. However, it is not a native application. In other words, it is not linked against ntdll.dll. Instead, ntoskrnl.exe containing a standard «start» entry point that calls the architecture-independent kernel initialization function. Because it requires a static copy of the C Runtime objects, the executable is usually about 10 MB in size.

In Windows XP and earlier, the Windows installation source ships four kernel image files to support uniprocessor systems, symmetric multiprocessor (SMP) systems, CPUs with PAE, and CPUs without PAE. Windows setup decides whether the system is uniprocessor or multiprocessor, then, installs both the PAE and non-PAE variants of the kernel image for the decided kind. On a multiprocessor system, Setup installs ntkrnlmp.exe and ntkrpamp.exe but renames them to ntoskrnl.exe and ntkrnlpa.exe respectively.

Kernel image filenames

Filename Supports
SMP
Supports
PAE
ntoskrnl.exe No No
ntkrnlmp.exe Yes No
ntkrnlpa.exe No Yes
ntkrpamp.exe Yes Yes

Starting with Windows Vista, Microsoft began unifying the kernel images as multi-core CPUs took to the market and PAE became mandatory.

Routines in ntoskrnl use prefixes on their names to indicate in which component of ntoskrnl they are defined. The following table lists some of them.

NT function prefixes

Prefix Meaning
Cc File system cache[2]
Cm Configuration Manager, the kernel mode side of Windows Registry
Csr functions used to communicate with the Win32 subsystem process, csrss.exe (csrss stands for client/server runtime sub-system)
Dbg debugging aid functions, such as a software break point
Ex Windows executive, an «outer layer» of Ntoskrnl.exe
Exp Windows executive private (routines intended for the internal use of Windows Executive)
FsRtl file system runtime library[3]
Io I/O manager[4]
Ke core kernel routines[5]
Ki routines in the kernel that are not exported for call from outside the kernel (i = internal)
Ks kernel streaming
Ldr loader functions for PE file handling
Lpc Local Procedure Call, an internal, undocumented, interprocess or user/kernel message passing mechanism
Lsa Local Security Authority
Mi memory management routines not exported for call outside the memory manager (i = internal)
Mm memory management
Nls Nls for Native Language Support (similar to code pages).
Ob Object Manager
Pfx prefix handling
Po Plug-and-play and power management[6]
Ps Process and thread management
Rtl Runtime library, i.e., many utility functions that can be used by native applications, yet don’t directly involve kernel support
Rtlp Runtime library private (for internal use only)
Se security
Vf Driver Verifier
Vi Driver Verifier routines not exported for call outside the driver verifier
Zw Nt or Zw are system calls declared in ntdll.dll and ntoskrnl.exe. When called from ntdll.dll in user mode, these groups are almost exactly the same; they trap into kernel mode and call the equivalent function in ntoskrnl.exe via the SSDT. When calling the functions directly in ntoskrnl.exe (only possible in kernel mode), the Zw variants ensure kernel mode, whereas the Nt variants do not.[7]

Initialization[edit]

When the kernel receives control, it gets a struct-type pointer from bootloader. The pointer’s destination contains information about the hardware, the path to the Windows Registry file, kernel parameters containing boot preferences or options that change the behavior of the kernel, path of the files loaded by the bootloader (SYSTEM Registry hive, nls for character encoding conversion, and vga font).[8] The definition of this structure can be retrieved by using the kernel debugger or downloading it from the Microsoft symbol database.[9][page needed]

In the x86 architecture, the kernel receives the system already in protected mode, with the GDT, IDT and TSS ready.[further explanation needed] But since it does not know the address of each one, it has to load them one by one to fill the PCR structure.[jargon]

The main entry point of ntoskrnl.exe performs some system dependent initialization then calls a system independent initialization then enters an idle loop.[contradictory]

Interrupt handling[edit]

This article is about NT implementation of interrupt handlers. For other uses, see Interrupt handling.

Modern operating systems use interrupts instead of I/O port polling to wait for information from devices.

In the x86 architecture, interrupts are handled through the Interrupt Dispatch Table (IDT). When a device triggers an interrupt and the interrupt flag (IF) in the FLAGS register is set, the processor’s hardware looks for an interrupt handler in the table entry corresponding to the interrupt number to which in turn has been translated from IRQ by PIC chips, or in more modern hardwares, APIC. Interrupt handlers usually save some subset of the state of registers before handling it and restore them back to their original values when done.

The interrupt table contains handlers for hardware interrupts, software interrupts, and exceptions. For some IA-32 versions of the kernel, one example of such a software interrupt handler (of which there are many) is in its IDT table entry 2E16 (hexadecimal; 46 in decimal), used in assembly language as INT 2EH for system calls. In the real implementation the entry points to an internal subroutine named (as per symbol information published by Microsoft) KiSystemService. For newer versions, different mechanisms making use of SYSENTER instruction and in x86-64 SYSCALL instruction are used instead.

One notable feature of NT’s interrupt handling is that interrupts are usually conditionally masked based on their priority (called «IRQL»), instead of disabling all IRQs via the interrupt flag. This permits various kernel components to carry on critical operations without necessarily blocking services of peripherals and other devices.[10]

Memory manager[edit]

This article is about NT implementation of a memory manager. For other uses, see memory management.

Microsoft Windows divides virtual address space into two regions. The lower part, starting at zero, is instantiated separately for each process and is accessible from both user and kernel mode. Application programs run in processes and supply code that runs in user mode.
The upper part is accessible only from kernel mode, and with some exceptions, is instantiated just once, system-wide. Ntoskrnl.exe is mapped into this region, as are several other kernel mode components. This region also contains data used by kernel mode code, such as the kernel mode heaps and the file system cache.

Start and end of segments by access privilege[9]

Arch MmHighestUserAddress MmSystemRangeStart
x86[a] 0x7fffffff 0x80000000
ARM 0x7fffffff 0x80000000
x86-64 0x000007ff'ffffffff 0xffff8000'00000000

The entire physical memory (RAM) address range is broken into many small (usually 4 KB) blocks. A few of the properties of each block are stored in structures called page table entries, which are managed by the OS and accessed by the processor’s hardware. Page tables are organized into a tree structure, and the physical page number of the top-level table is stored in control register 3 (CR3).

Registry[edit]

Windows Registry is a repository for configuration and settings information for the operating system and for other software, such as applications. It can be thought of as a filesystem optimized for small files.[11] However, it is not accessed through file system-like semantics, but rather through a specialized set of APIs, implemented in kernel mode and exposed to user mode.

The registry is stored on disk as several different files called «hives.» One, the System hive, is loaded early in the boot sequence and provides configuration information required at that time. Additional registry hives, providing software-specific and user-specific data, are loaded during later phases of system initialization and during user login, respectively.

Drivers[edit]

The list of drivers to be loaded from the disk are retrieved from the Services key of the current control set’s key in the SYSTEM registry hive. That key stores device drivers, kernel processes and user processes. They are all collectively called «services» and are all stored mixed on the same place.

During initialization or upon driver load request, the kernel traverses that tree looking for services tagged as kernel services.

See also[edit]

  • Architecture of Windows NT
  • Windows NT Startup Process

Notes[edit]

  1. ^ Tunable via /userva or /3gb switch.

References[edit]

  1. ^ Russinovich, M: Systems Internals Tips and Trivia, SysInternals Information
  2. ^ Microsoft Corporation (2009). «Cache Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  3. ^ Microsoft Corporation (2009). «File System Runtime Library Routines». Microsoft Corporation. Retrieved 2009-06-13.
  4. ^ Microsoft Corporation (2009). «I/O Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  5. ^ Microsoft Corporation (2009). «Core Kernel Library Support Routines». Microsoft Corporation. Retrieved 2009-06-13.
  6. ^ Microsoft Corporation (2009). «Power Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  7. ^ The NT Insider (August 27, 2003). «Nt vs. Zw — Clearing Confusion On The Native API». OSR Online. OSR Open Systems Resources. 10 (4). Retrieved 2013-09-16.
  8. ^ «struct LOADER_PARAMETER_BLOCK». www.nirsoft.net.
  9. ^ a b Practical Reverse Engineering Using X86, X64, Arm, Windows Kernel, and Reversing Tools. John Wiley & Sons Inc. 2014. ISBN 978-1118787311.
  10. ^ CC Hameed (January 22, 2008). «What is IRQL and why is it important? | Ask the Performance Team Blog». Microsoft Corporation. Retrieved 2018-11-11.
  11. ^ Tanenbaum, Andrew S. (2008). Modern operating systems (3rd ed.). Upper Saddle River, N.J.: Pearson Prentice Hall. p. 829. ISBN 978-0136006633.

Further reading[edit]

  • Tanenbaum, Andrew S. (2008). Modern Operating Systems (3rd ed.). Upper Saddle River, N.J.: Pearson Prentice Hall. p. 829. ISBN 978-0136006633.
  • Bruce Dang; Alexandre Gazet; Elias Bachaalany (2014). Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation. Wiley. p. 384. ISBN 978-1118787311.

External links[edit]

  • Inside the Windows Vista Kernel (TechNet Magazine)
  • struct LOADER_PARAMETER_BLOCK
  • Driver Development Part 1: Introduction to Drivers

From Wikipedia, the free encyclopedia

This article is about a computer file that contains a part of Windows kernel, among other things. For the Windows NT kernel itself, see Architecture of Windows NT.

ntoskrnl.exe (short for Windows NT operating system kernel executable), also known as the kernel image, contains the kernel and executive layers of the Microsoft Windows NT kernel, and is responsible for hardware abstraction, process handling, and memory management. In addition to the kernel and executive mentioned earlier, it contains the cache manager, security reference monitor, memory manager, scheduler (Dispatcher), and blue screen of death (the prose and portions of the code).[1]

Overview[edit]

ntoskrnl.exe depends on bootvid.dll, hal.dll and kdcom.dll. However, it is not a native application. In other words, it is not linked against ntdll.dll. Instead, ntoskrnl.exe containing a standard «start» entry point that calls the architecture-independent kernel initialization function. Because it requires a static copy of the C Runtime objects, the executable is usually about 10 MB in size.

In Windows XP and earlier, the Windows installation source ships four kernel image files to support uniprocessor systems, symmetric multiprocessor (SMP) systems, CPUs with PAE, and CPUs without PAE. Windows setup decides whether the system is uniprocessor or multiprocessor, then, installs both the PAE and non-PAE variants of the kernel image for the decided kind. On a multiprocessor system, Setup installs ntkrnlmp.exe and ntkrpamp.exe but renames them to ntoskrnl.exe and ntkrnlpa.exe respectively.

Kernel image filenames

Filename Supports
SMP
Supports
PAE
ntoskrnl.exe No No
ntkrnlmp.exe Yes No
ntkrnlpa.exe No Yes
ntkrpamp.exe Yes Yes

Starting with Windows Vista, Microsoft began unifying the kernel images as multi-core CPUs took to the market and PAE became mandatory.

Routines in ntoskrnl use prefixes on their names to indicate in which component of ntoskrnl they are defined. The following table lists some of them.

NT function prefixes

Prefix Meaning
Cc File system cache[2]
Cm Configuration Manager, the kernel mode side of Windows Registry
Csr functions used to communicate with the Win32 subsystem process, csrss.exe (csrss stands for client/server runtime sub-system)
Dbg debugging aid functions, such as a software break point
Ex Windows executive, an «outer layer» of Ntoskrnl.exe
Exp Windows executive private (routines intended for the internal use of Windows Executive)
FsRtl file system runtime library[3]
Io I/O manager[4]
Ke core kernel routines[5]
Ki routines in the kernel that are not exported for call from outside the kernel (i = internal)
Ks kernel streaming
Ldr loader functions for PE file handling
Lpc Local Procedure Call, an internal, undocumented, interprocess or user/kernel message passing mechanism
Lsa Local Security Authority
Mi memory management routines not exported for call outside the memory manager (i = internal)
Mm memory management
Nls Nls for Native Language Support (similar to code pages).
Ob Object Manager
Pfx prefix handling
Po Plug-and-play and power management[6]
Ps Process and thread management
Rtl Runtime library, i.e., many utility functions that can be used by native applications, yet don’t directly involve kernel support
Rtlp Runtime library private (for internal use only)
Se security
Vf Driver Verifier
Vi Driver Verifier routines not exported for call outside the driver verifier
Zw Nt or Zw are system calls declared in ntdll.dll and ntoskrnl.exe. When called from ntdll.dll in user mode, these groups are almost exactly the same; they trap into kernel mode and call the equivalent function in ntoskrnl.exe via the SSDT. When calling the functions directly in ntoskrnl.exe (only possible in kernel mode), the Zw variants ensure kernel mode, whereas the Nt variants do not.[7]

Initialization[edit]

When the kernel receives control, it gets a struct-type pointer from bootloader. The pointer’s destination contains information about the hardware, the path to the Windows Registry file, kernel parameters containing boot preferences or options that change the behavior of the kernel, path of the files loaded by the bootloader (SYSTEM Registry hive, nls for character encoding conversion, and vga font).[8] The definition of this structure can be retrieved by using the kernel debugger or downloading it from the Microsoft symbol database.[9][page needed]

In the x86 architecture, the kernel receives the system already in protected mode, with the GDT, IDT and TSS ready.[further explanation needed] But since it does not know the address of each one, it has to load them one by one to fill the PCR structure.[jargon]

The main entry point of ntoskrnl.exe performs some system dependent initialization then calls a system independent initialization then enters an idle loop.[contradictory]

Interrupt handling[edit]

This article is about NT implementation of interrupt handlers. For other uses, see Interrupt handling.

Modern operating systems use interrupts instead of I/O port polling to wait for information from devices.

In the x86 architecture, interrupts are handled through the Interrupt Dispatch Table (IDT). When a device triggers an interrupt and the interrupt flag (IF) in the FLAGS register is set, the processor’s hardware looks for an interrupt handler in the table entry corresponding to the interrupt number to which in turn has been translated from IRQ by PIC chips, or in more modern hardwares, APIC. Interrupt handlers usually save some subset of the state of registers before handling it and restore them back to their original values when done.

The interrupt table contains handlers for hardware interrupts, software interrupts, and exceptions. For some IA-32 versions of the kernel, one example of such a software interrupt handler (of which there are many) is in its IDT table entry 2E16 (hexadecimal; 46 in decimal), used in assembly language as INT 2EH for system calls. In the real implementation the entry points to an internal subroutine named (as per symbol information published by Microsoft) KiSystemService. For newer versions, different mechanisms making use of SYSENTER instruction and in x86-64 SYSCALL instruction are used instead.

One notable feature of NT’s interrupt handling is that interrupts are usually conditionally masked based on their priority (called «IRQL»), instead of disabling all IRQs via the interrupt flag. This permits various kernel components to carry on critical operations without necessarily blocking services of peripherals and other devices.[10]

Memory manager[edit]

This article is about NT implementation of a memory manager. For other uses, see memory management.

Microsoft Windows divides virtual address space into two regions. The lower part, starting at zero, is instantiated separately for each process and is accessible from both user and kernel mode. Application programs run in processes and supply code that runs in user mode.
The upper part is accessible only from kernel mode, and with some exceptions, is instantiated just once, system-wide. Ntoskrnl.exe is mapped into this region, as are several other kernel mode components. This region also contains data used by kernel mode code, such as the kernel mode heaps and the file system cache.

Start and end of segments by access privilege[9]

Arch MmHighestUserAddress MmSystemRangeStart
x86[a] 0x7fffffff 0x80000000
ARM 0x7fffffff 0x80000000
x86-64 0x000007ff'ffffffff 0xffff8000'00000000

The entire physical memory (RAM) address range is broken into many small (usually 4 KB) blocks. A few of the properties of each block are stored in structures called page table entries, which are managed by the OS and accessed by the processor’s hardware. Page tables are organized into a tree structure, and the physical page number of the top-level table is stored in control register 3 (CR3).

Registry[edit]

Windows Registry is a repository for configuration and settings information for the operating system and for other software, such as applications. It can be thought of as a filesystem optimized for small files.[11] However, it is not accessed through file system-like semantics, but rather through a specialized set of APIs, implemented in kernel mode and exposed to user mode.

The registry is stored on disk as several different files called «hives.» One, the System hive, is loaded early in the boot sequence and provides configuration information required at that time. Additional registry hives, providing software-specific and user-specific data, are loaded during later phases of system initialization and during user login, respectively.

Drivers[edit]

The list of drivers to be loaded from the disk are retrieved from the Services key of the current control set’s key in the SYSTEM registry hive. That key stores device drivers, kernel processes and user processes. They are all collectively called «services» and are all stored mixed on the same place.

During initialization or upon driver load request, the kernel traverses that tree looking for services tagged as kernel services.

See also[edit]

  • Architecture of Windows NT
  • Windows NT Startup Process

Notes[edit]

  1. ^ Tunable via /userva or /3gb switch.

References[edit]

  1. ^ Russinovich, M: Systems Internals Tips and Trivia, SysInternals Information
  2. ^ Microsoft Corporation (2009). «Cache Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  3. ^ Microsoft Corporation (2009). «File System Runtime Library Routines». Microsoft Corporation. Retrieved 2009-06-13.
  4. ^ Microsoft Corporation (2009). «I/O Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  5. ^ Microsoft Corporation (2009). «Core Kernel Library Support Routines». Microsoft Corporation. Retrieved 2009-06-13.
  6. ^ Microsoft Corporation (2009). «Power Manager Routines». Microsoft Corporation. Retrieved 2009-06-13.
  7. ^ The NT Insider (August 27, 2003). «Nt vs. Zw — Clearing Confusion On The Native API». OSR Online. OSR Open Systems Resources. 10 (4). Retrieved 2013-09-16.
  8. ^ «struct LOADER_PARAMETER_BLOCK». www.nirsoft.net.
  9. ^ a b Practical Reverse Engineering Using X86, X64, Arm, Windows Kernel, and Reversing Tools. John Wiley & Sons Inc. 2014. ISBN 978-1118787311.
  10. ^ CC Hameed (January 22, 2008). «What is IRQL and why is it important? | Ask the Performance Team Blog». Microsoft Corporation. Retrieved 2018-11-11.
  11. ^ Tanenbaum, Andrew S. (2008). Modern operating systems (3rd ed.). Upper Saddle River, N.J.: Pearson Prentice Hall. p. 829. ISBN 978-0136006633.

Further reading[edit]

  • Tanenbaum, Andrew S. (2008). Modern Operating Systems (3rd ed.). Upper Saddle River, N.J.: Pearson Prentice Hall. p. 829. ISBN 978-0136006633.
  • Bruce Dang; Alexandre Gazet; Elias Bachaalany (2014). Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation. Wiley. p. 384. ISBN 978-1118787311.

External links[edit]

  • Inside the Windows Vista Kernel (TechNet Magazine)
  • struct LOADER_PARAMETER_BLOCK
  • Driver Development Part 1: Introduction to Drivers

На рис. приведена общая архитектура
Windows NT и ее компонентов. Элементы над
разделительной линией представляют
собой процессы пользовательского
режима, а под ней располагаются процессы
операционной системы, выполняемые
ядром. Потоки пользовательского режима
выполняются в защищенном адресном
пространстве. Однако, во время их
выполнения в режиме ядра, они получают
доступ к системному пространству. Таким
образом, системные процессы, процессы
сервера (службы), подсистема среды или
пользовательское приложение имеют свое
собственное адресное пространство.

Режим ядра

Важные для производительности операционной
системы компоненты выполняются в режиме
ядра, где они взаимодействуют с
оборудованием и друг с другом без
использования переключателей контекста
и смены режимов. Например, менеджер
памяти, менеджер кэш-памяти, менеджер
объектов, менеджер системы безопасности,
сетевые протоколы, файловые системы,
управление потоками и процессами
работают в режиме ядра. Все эти компоненты
полностью защищены от выполняемых
приложений, которые не имеют прямого
доступа к коду и данным из привилегированной
части операционной системы.

Компоненты режима ядра Windows NT спроектированы
на основе принципов построения
объектно-ориентированных систем.
Например, они не работают напрямую со
структурами данных, поддерживаемых
индивидуальными компонентами. Вместо
этого для передачи параметров, доступа
и/или модификации структур данных они
используют формальный интерфейс. Вместе
с тем, несмотря на повсеместное
использование объектов для представления
разделяемых системных ресурсов, Windows
NT не является объектно-ориентированной
системой в точном смысле этого понятия,
поскольку основная часть кода системы
написана на Си из соображений обеспечения
высокой скорости выполнения и
переносимости.

В режиме ядра выполняются следующие
компоненты ОС:

  • исполняемая часть NT,которая включает
    управление памятью, процессами, потоками,
    безопасностью, вводом/выводом,
    межпроцессорными обменами;

  • ядро Windows NTвыполняет низкоуровневые
    функции операционной системы:
    диспетчеризация потоков, прерываний
    и исключений, синхронизация процессоров.
    Ядро также включает набор процедур и
    базовых объектов, используемый
    исполняемой частью для создания
    высокоуровневых конструкций;

  • слой абстракции от оборудования (HAL
    — Hardware Abstraction Layer),
    изолирует ядро,
    драйверы устройств и исполняемую часть
    NT от аппаратных платформ, на которых
    должна работать операционная система;

  • драйверы устройстввключают как
    файловую систему, так и аппаратные
    драйверы, которые транслируют
    пользовательские вызовы функций
    ввода/вывода в запросы физических
    устройств ввода/вывода;

  • функции графического интерфейса
    пользователя
    работают с окнами,
    элементами управления и рисунками.

Исполняемая часть

Исполняемая часть Windows NT — верхний слой
программы — ядра NTOSKRNL.EXE. (Само ядро — это
нижний слой). Исполняемая часть содержит
следующие компоненты.

  • Менеджер процессов и потоков управляет
    процессами и потоками.
    Фактически
    потоки и процессы поддерживаются в NT
    нижележащим слоем. Исполняемая часть
    добавляет дополнительную семантику и
    функции к этим объектам нижнего уровня.

  • Менеджер виртуальной памятииспользует схему управления, при которой
    каждый процесс получает собственное
    достаточно большое адресное пространство,
    защищенное от воздействия других
    процессов. Менеджер памяти также
    обеспечивает низкоуровневую поддержку
    для менеджера кэш-памяти.

  • Монитор безопасностипроводит
    политику обеспечения мер безопасности
    на локальном компьютере, охраняя
    системные ресурсы и выполняя процедуры
    аудита и защиты объектов.

  • Система ввода/выводаиспользует
    независимый от устройств ввод/вывод и
    отвечает за пересылку данных
    соответствующим драйверам для дальнейшей
    обработки.

  • Менеджер кэш-памятиулучшает
    производительность системы ввода/вывода
    файлов, размещая читаемые с диска данные
    в основной памяти для ускорения доступа
    к ним, а также откладывая на короткое
    время запись измененных данных на диск.

Кроме того, исполняемая часть включает
четыре главных группы функций, используемых
только что перечисленными компонентами.

  • Менеджер объектов,который создает,
    удаляет объекты и абстрактные типы
    данных, а также управляет ими. Объекты
    используются в Windows NT для представления
    таких ресурсов операционной системы,
    как процессы, потоки и объекты
    синхронизации.

  • LPCпередает сообщения между клиентским
    процессом и процессом сервера на том
    же самом компьютере. По сути, LPC — это
    оптимизированная версия известной
    процедуры удаленного вызова RPC (Remote
    Procedure Call), стандарта для организации
    взаимодействия процессов в архитектуре
    клиент/сервер.

  • Широкий набор библиотечных функций
    общего типа:
    обработка строк,
    арифметические операции, преобразование
    типов данных, обработка структур.

  • Процедуры распределения памяти,взаимообмен между процессами через
    память, два специальных типа объектов
    синхронизации — ресурсы и объекты fast
    mutex.

Ядро

Ядро NTOSKRNL.EXE выполняет большинство
основных операций NT, определяющих
порядок использования процессора:
диспетчеризация потоков; диспетчеризация
и обработка исключений; cинхронизация
работы процессоров; обеспечение базовых
объектов ядра, которые используются
исполняемой частью (и в некоторых случаях
экспортируются в режим пользователя).

В отличие от остальной исполняемой
части операционной системы, ядро никогда
не выгружается из оперативной памяти,
его выполнение никогда не прерывается
другими потоками. Код ядра написан в
основном на Си, а части, дающие наибольшую
нагрузку на процессор, на языке Ассемблере.

Объекты ядра. Одна из функций ядра —
обеспечение низкоуровневой базы для
хорошо определенных примитивов
операционной системы, которые обеспечивают
работу компонентов высшего уровня. Ядро
изолирует само себя от остальной части
ОС, что позволяет вынести принятие
политических решений из ядра, за
исключением диспетчеризации потоков.
Ядро использует набор простейших
объектов, называемых объектами ядра,
позволяющих управлять работой центрального
процессора и порядком создания вычисляемых
объектов. Большинство вычисляемых
объектов включает в себя один или более
объектов ядра, включая определенные
ядром атрибуты. Один из наборов объектов
называется объектами управления и
включает объект процесса ядра, объект
АРС, объект процедуры отложенного вызова
DPC (Deferred Procedure Call) и несколько объектов,
используемых системой ввода/вывода
(например, объект обработки прерывания).

Другой набор объектов ядра — объекты
диспетчеризации, включает объекты
синхронизации потоков, поток ядра,
mutex, объекты события, семафора, таймера,
таймера ожидания и ряд других.

Поддержка оборудования. Другой главнейшей
задачей ядра является абстрагирование
(или изоляция) исполняемой части и
драйверов устройств от различий
микропроцессорных платформ, на которых
способна работать Windows NT: х86 и Alpha AXP.
Специфичные для архитектуры функции
(такие, как контекстное переключение
потока) реализованы в ядре. Функции,
которые могут отличаться от машины к
машине, реализованы в составе HAL.

Ядро поддерживает набор интерфейсов,
семантически идентичных для всех
архитектур. Некоторые из интерфейсов
реализованы по-разному для разных
архитектур, однако, и идентичны внешне
интерфейсы реализованы с помощью
специфичного для архитектуры кода.
Независимый от архитектуры интерфейс
может быть вызван на любой машине, и его
семантика будет той же, несмотря на то,
зависит ли код от архитектуры или нет.
Некоторые интерфейсы ядра (например,
процедуры синхронизации SMP) реализованы
в HAL, поскольку их реализация может
изменяться даже внутри одного семейства
компьютеров. В качестве примера зависящего
от архитектуры кода можно назвать также
поддержку кэша центрального процессора.

Соседние файлы в папке Операционнные системы

  • #
  • #
  • #
  • #
  • #
  • #

Многим пользователям интересно, почему процесс System (Ntoskrnl.exe) использует так много системных ресурсов в Windows 10. Прежде всего, давайте посмотрим, что делает этот файл в вашей системе.

System (имя процесса Ntoskrnl.exe) — это исполняемый файл, предназначенный для ядра ОС Windows NT, который вы можете найти на вкладке «Сведения» диспетчера задач. Исполняемый файл является базовой частью операционной системы и заботится о некоторых важных сервисах, таких как управление процессом, управление памятью и аппаратная виртуализация.

Почему System (Ntoskrnl.exe) использует много системных ресурсов в Windows 10?

Если ваш вопрос заключается в том, почему System (Ntoskrnl.exe) использует столько системных ресурсов в Windows 10, то ответ простой — это не из-за своего собственного недостатка, так как данный процесс работает с другими компонентами, которые могут вызывать нагрузку на компоненты ПК. Исполняемый файл включает диспетчер памяти, диспетчер кэшей, контрольный монитор безопасности, ядро, планировщик заданий. Это довольно неверное представление о том, что System (Ntoskrnl.exe) увеличивает нагрузку на процессор и задействует больше памяти. Давайте посмотрим, почему?

System (Ntoskrnl.exe) несет ответственность за связь между упомянутыми выше процессами. Когда вы открываете приложение, то System (Ntoskrnl.exe) отправляет информацию о всех процессах для запуска, а Windows 10 начинает сжимать данные в памяти, в отличие от предыдущих версий, где он непосредственно записывал их на жесткий диск.

Таким образом, System (Ntoskrnl.exe) не имеет никакого вклада в увеличение вашей памяти или нагрузки на ЦП. Иногда поврежденный файл драйвера или вредоносная программа, начинают записывать данные в доступный исполняемый файл, каждый раз за разом. Поэтому, System (Ntoskrnl.exe) испытывает затруднения между процессами. Прерывание, делает ваше использование ЦП больше и больше, память также начинает пожирать больше Мб.

Как исправить высокую нагрузку на компоненты ПК, процессом System (Ntoskrnl.exe)

В первую очередь, попробуйте закрыть или обновить программы, которые вызывают проблему. Также, воспользуйтесь антивирусным сканером как Zemana или DrWeb, чтобы выявить вирусы, если они имеются.

channel

1. Запустить проверку системных файлов

Для такой проблемы, как высокий расход ресурсов из-за ntoskrnl.exe в Windows 10, повреждение или отсутствие системных файлов могут быть главной причиной. Запуск инструмента SFC поможет в этой ситуации.

  • Откройте командную строку от имени администратора и введите команду sfc /scannow.
  • Сканирование и восстановление системных файлов может занять длительное время, можете выпить чашечку кофе, после окончания процесса, перезагрузите компьютер.

Проверка и восстановление файлов

2. Проверьте неисправный драйвер и обновите его

Неисправный драйвер является основной причиной этой проблемы, поэтому внимательно проверьте и обновите, если это необходимо. Нажмите сочетание кнопок Win+R и введите devmgmt.msc, чтобы открыть диспетчер устройств.

Диспетчер устройств


Нажмите вкладку Вид и выберите из меню Показать скрытые устройства. Удалите все полупрозрачные драйверы устройств.


Далее разверните устройства и проверьте их на наличие желтого восклицательного знака. Если такой имеется, то нажмите на нем правой кнопкой мыши и нажмите Обновить. Также, обновите драйверы видеокарты до последней версии с официального сайта производителя.

Обновить драйвер устройства

3. Очистите автоматически виртуальную память при каждом запуске

Нажмите Win+R и введите regedit, чтобы открыть редактор реестра.

win+r


В реестре перейдите по пути, (можно скопировать и вставить в строку) указанному ниже. Справа найдите ClearPageFileAtShutDown, нажмите два раза мышкой по нему и задайте значение 1. Перезагрузите компьютер или ноутбук.

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

ClearPageFileAtShutDown

4. Настройка Windows для лучшей производительности

Нажмите Win+R и введите sysdm.cpl

win+r Свойства системы мой компьютер


Во вкладке Визуальные эффекты выберите Обеспечить наилучшее быстродействие.

Обеспечить наилучшее быстродействие

5. Сторонний антивирус

Если вы используете сторонний антивирус, то он может создавать нагрузку на систему процессом «System». Удалите на время сторонний антивирус и после перезагрузки компьютера, проверьте, сохраняется ли проблема. Из виновников нагрузки был замечен антивирус Eset32.

Почему не отключить сторонний антивирус на время? Антивирусы имеют встроенный брандмауэр, который работает даже после того, как вы отключите антивирусный продукт. По этому, полное удаление антивируса — это наилучший способ удостовериться в его невиновности.

6. Отключить индексирование

Если у вас установлен жесткий диск, то индексирование файлов и папок может вызывать высокую нагрузку процессом Ntoskrnl.exe (System). Отключим его.

Нажмите правой кнопкой мыши по локальному диску и выберите «Свойства«. Во вкладке «Общие» уберите галочку с пункта «Разрешить индексировать содержимое файлов на этом диске в дополнении к свойствам файлов«. Сделайте это для каждого локального диска, который у вас имеется в проводнике.

Примечание: Отключив индексирование, вы не сможете искать файлы и папки через поиск проводника или меню пуск. 

индексирование папок и файлов в Windows 10

7. Отключить службы

В ранних версиях Windows, служба System с именем процесса Ntoskrnl.exe может грузить жесткий диск до 90%, так как процесс записывает данные на сам диск, а не сжимает данные в памяти. Также, если слабый процессор, то и на него может идти нагрузка. Т.е. Если будут устанавливаться какие-либо обновления в фоновом режиме, то вы не заметите это пока не отключите службу «Центр обновления Windows», которая и создает нагрузку на жесткий диск и процессор — службой System.

Нажмите Win+R и введите services.msc, чтобы открыть службы. Найдите службы из списка ниже, щелкните по службе дважды, чтобы открыть свойства и «Остановить«, тип запуска «Отключена«.

  1. Центр обновления Windows
  2. Клиент отслеживания изменившихся связей
  3. Агент политики IPsec
  4. KtmRm для координатора распределенных транзакций
  5. Служба политики диагностики
  6. SysMain

Примечание: Отключайте по одной службе и смотрите нагрузку на систему. Может не быть резкого спада и нужно подождать хотя бы 1 минуту.

отключить службу центра обновления Windows


Смотрите еще:

  • Cлужба узла: Служба репозитория состояний грузит ЦП в Windows 10
  • Как откалибровать монитор в windows 10
  • Как переустановить браузер EDGE в Windows 10
  • Не удается подключиться к WiFi или Локальной сети в Windows 10
  • Как исправить ошибку Critical Process Died в Windows 10

[ Telegram | Поддержать ]

Аннотация: Общая схема архитектуры. Компоненты пользовательского режима. Компоненты режима ядра.

Общая схема архитектуры

Windows представляет собой операционную систему с гибридным ядром (см. лекцию 1 «Введение в операционные системы»). В ней основные системные функции по управлению процессами, памятью, устройствами, файловой системой и безопасностью реализованы в компонентах, работающих в режиме ядра; но существует ряд важных системных компонентов пользовательского режима, например системные процессы входа в систему, локальной аутентификации, диспетчера сеансов, а также подсистемы окружения.

Архитектура Windows представлена на рис.4.1 [5; 2].

Архитектура Windows

Рис.
4.1.
Архитектура Windows

Компоненты пользовательского режима

В пользовательском режиме работают следующие виды процессов:

  • системные процессы (system processes) – компоненты Windows, отвечающие за решение критически важных системных задач (т. е. аварийное завершение одного из этих процессов вызывает крах или нестабильную работу всей системы), но выполняемые в пользовательском режиме.
    Основные системные процессы:

    • Winlogon.exe – процесс входа в систему и выхода из неё;
    • Smss.exe (Session Manager – диспетчер сеансов) – процесс выполняет важные операции при инициализации системы (загрузка необходимых DLL, запуск процессов Winlogon и Csrss и др.), а затем контролирует работу Winlogon и Csrss;
    • Lsass.exe (Local Security Authentication Subsystem Server – сервер подсистемы локальной аутентификации) – процесс проверяет правильность введенных имени пользователя и пароля;
    • Wininit.exe – процесс инициализации системы (например, запускает процессы Lsass и Services);
    • Userinit.exe – процесс инициализации пользовательской среды (например, запускает системную оболочку – по умолчанию, Explorer.exe);
    • Services.exe (SCM, Service Control Manager – диспетчер управления службами) – процесс, отвечающий за выполнение служб – см. ниже;
  • службы (сервисы, services) – приложения, работающие в фоновом режиме и не требующие взаимодействия с пользователем. Службы могут быть как частью операционной системы (например, Windows Audio – служба для работы со звуком, или Print Spooler – диспетчер печати), так и частью пользовательского приложения (например, служба СУБД SQL Server). За службы отвечает системный процесс Services.exe;
  • пользовательские приложения (user applications) ¬– прикладные программы, запускаемые пользователем;
  • подсистемы окружения (environment subsystems) – компоненты, предоставляющие доступ приложениям к некоторому подмножеству системных функций. Windows поддерживает две подсистемы окружения:
    • собственно Windows – при помощи данной подсистемы выполняются 32 разрядные приложения Windows (Win32), а также 16 разрядные приложения Windows (Win16), приложения MS DOS и консольные приложения (Console). За подсистему Windows отвечает системный процесс Csrss.exe и драйвер режима ядра Win32k.sys;
    • POSIX (Portable Operating System Interface for UNIX – переносимый интерфейс операционных систем UNIX) – подсистема для UNIX-приложений. Начиная с Windows Server 2003 R2 компонент, реализующий эту подсистему, называется SUA (Subsystem for UNIX-based Applications). Компонент не устанавливается в Windows по умолчанию.

Все перечисленные процессы пользовательского режима (кроме подсистемы POSIX1Подсистема POSIX использует библиотеку Psxdll.dll.) для взаимодействия с модулями режима ядра используют библиотеки Windows DLL (Dynamic Link Library – динамически подключаемая библиотека). Каждая DLL экспортирует набор Windows API функций, которые может вызывать процесс.

Windows API (Windows Application Programming Interface, WinAPI) – это способ взаимодействия процессов пользовательского режима с модулями режима ядра. WinAPI включает тысячи функций и хорошо документирован [10].

Основные Windows DLL следующие:

  • Kernel32.dll – базовые функции, в том числе работа с процессами и потоками, управление памятью и вводом выводом;
  • Advapi32.dll – функции, в основном связанные с управлением безопасностью и доступом к реестру;
  • User32.dll – функции, отвечающие за управление окнами и их элементами в GUI приложениях (Graphical User Interface – графический интерфейс пользователя);
  • Gdi32.dll – функции графического пользовательского интерфейса (Graphics Device Interface, GDI), обеспечивающие рисование на дисплее и принтере графических примитивов и вывод текста.

Библиотека Ntdll.dll экспортирует в большинстве своем недокументированные системные функции, реализованные, в основном, в Ntoskrnl.exe. Набор таких функций называется Native API («родной» API).

Библиотеки Windows DLL преобразуют вызовы документированных WinAPI функций в вызовы функций Native API и переключают процессор на режим ядра.

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

Диспетчер системных сервисов (System Service Dispatcher) работает в режиме ядра, перехватывает вызовы функций от Ntdll.dll, проверяет их параметры и вызывает соответствующие функции из Ntoskrnl.exe.

Исполнительная система и ядро содержатся в Ntoskrnl.exe (NT Operating System Kernelядро операционной системы NT) (по поводу использования термина «ядро» в Windows см. лекцию 1 «Введение в операционные системы»).

Исполнительная система (Executive) представляет собой совокупность компонентов (называемых диспетчерами – manager), которые реализуют основные задачи операционной системы:

  • диспетчер процессов (process manager) – управление процессами и потоками (см. лекцию 6 «Процессы и потоки»);
  • диспетчер памяти (memory manager) – управление виртуальной памятью и отображение её на физическую (см. лекцию 8 «Управление памятью»);
  • монитор контроля безопасности (security reference monitor) – управление безопасностью (см. лекцию 9 «Безопасность»);
  • диспетчер ввода вывода (I/O manager), диспетчер кэша (cache Manager), диспетчер Plug and Play (PnP Manager) – управление внешними устройствами и файловыми системами (см. лекцию 10 «Управление устройствами» и лекцию 11 «Файловая система NTFS»);
  • диспетчер электропитания (power manager) – управление электропитанием и энергопотреблением;
  • диспетчер объектов (object manager), диспетчер конфигурации (configuration manager), механизм вызова локальных процедур (local procedure call) – управление служебными процедурами и структурами данных, которые необходимы остальным компонентам.

Ядро (Kernel) содержит функции, обеспечивающие поддержку компонентам исполнительной системы и осуществляющие планирование потоков (см. лекцию 7 «Планирование потоков»), механизмы синхронизации, обработку прерываний.

Компонент Windows USER и GDI отвечает за пользовательский графический интерфейс (окна, элементы управления в окнах – меню, кнопки и т. п., рисование), является частью подсистемы Windows и реализован в драйвере Win32k.sys.

Взаимодействие диспетчера ввода вывода с устройствами обеспечивают драйверы (drivers) – программные модули, работающие в режиме ядра, обладающие максимально полной информацией о конкретном устройстве (драйверы подробнее рассматриваются в лекции 10 «Управление устройствами»).

Однако, и драйверы, и ядро не взаимодействуют с физическими устройствами напрямую – посредником между программными компонентами режима ядра и аппаратурой является HAL (Hardware Abstraction Layer) – уровень абстрагирования от оборудования, реализованный в Hal.dll. HAL позволяет скрыть от всех программных компонентов особенности аппаратной платформы (например, различия между материнскими платами), на которой установлена операционная система.

Резюме

В лекции представлена архитектура операционной системы Windows и описаны основные компоненты пользовательского режима и режима ядра.

В следующей лекции рассматривается исследовательское ядро Windows (Windows Research Kernel) – вариант Ntoskrnl.exe с исходным кодом, доступным академическим организациям.

Контрольные вопросы

  1. К какому типу ядер в большей степени относится Windows NT, к монолитным или микроядрам? Ответ обоснуйте.
  2. Перечислите основные компоненты пользовательского режима.
  3. Перечислите основные компоненты режима ядра.
  4. Что такое Windows API? Где можно найти информацию по этому вопросу?
  5. Каковы основные функции исполнительной системы, входящей в состав Ntoskrnl.exe?
  6. Каковы основные функции ядра, входящего в состав Ntoskrnl.exe?
  7. Что такое HAL?

Чтобы выяснить, насколько хороша Windows на самом деле, нужно изучить ее ядро и понять, как оно устроено и что оно может. В данной статье мы сравниваем Windows с Linux и Mac OS X и выявляем сильные и слабые стороны этой операционной системы, имеющей так много пользователей и так мало поклонников.

 Многие области операционной системы от Microsoft в повседневной работе от нас скрыты. Как правило, пользователь видит лишь то, что работает в пользовательском режиме; режим ядра, в котором операционная система общается с оборудованием, ему недоступен. Многие области операционной системы от Microsoft в повседневной работе от нас скрыты. Как правило, пользователь видит лишь то, что работает в пользовательском режиме; режим ядра, в котором операционная система общается с оборудованием, ему недоступен.

Windows Debugger анализирует образ памяти и показывает причины сбоев — в нашем случае виноват драйвер режима ядра Windows Debugger анализирует образ памяти и показывает причины сбоев — в нашем случае виноват драйвер режима ядра  Файл NTOS — сердце ядра Windows, логически подразделяется на два слоя. Особенность состоит в том, что из соображений повышения производительности драйверы могут обращаться к оборудованию напрямую Файл NTOS — сердце ядра Windows, логически подразделяется на два слоя. Особенность состоит в том, что из соображений повышения производительности драйверы могут обращаться к оборудованию напрямую Ядро Linux отвечает за управление командами ввода-вывода, памятью и процессами. На самом низком уровне ядра находятся функции, управляющие прерыванием процессов Ядро Linux отвечает за управление командами ввода-вывода, памятью и процессами. На самом низком уровне ядра находятся функции, управляющие прерыванием процессов Доступ к ядру Linux открыт каждому. На рисунке — фрагмент конфигурации ядра версии 2.6.19 Доступ к ядру Linux открыт каждому. На рисунке — фрагмент конфигурации ядра версии 2.6.19 Ядро системы Apple основано на двух источниках: в нем используются функции основанной на Unix подсистемы BSD наряду с частями микроядра Mach Ядро системы Apple основано на двух источниках: в нем используются функции основанной на Unix подсистемы BSD наряду с частями микроядра Mach Со словом «Windows» связано много предубеждений и мифов. Например, бытует мнение, что работать в Windows крайне опасно, так как миллионы вирусов, гуляющих по Интернету, атакуют исключительно эту ОС. К тому же многие уверены, что детище Microsoft не отличается высокой производительностью: чем дольше вы пользуетесь этой системой, тем медленнее она работает. Что касается стабильности, то всем хорошо знаком пресловутый «синий экран». Это и неудивительно: Vista состоит из семидесяти миллионов строк кода — как тут не запутаться! Чтобы выяснить, справедливы ли все эти обвинения, необходимо заглянуть в самое ядро операционной системы и проверить, насколько оно отвечает трем критериям: безопасность, производительность и стабильность. А для сравнения возьмем ядра двух других систем — Linux и Mac OS X. Кроме того, мы подробно расскажем, какие методы используют Windows и ее конкуренты.

Контроль над системой

Ядро управляет операционной системой, и ее качество зависит именно от качества ядра. На нем держится буквально все. в частности, ядро выполняет роль интерфейса для компьютерного оборудования: оно общается с внешними устройствами и управляет встроенными компонентами, такими как оперативная память, центральный процессор и жесткий диск.

Чтобы обеспечить безопасность системы, ядро следит за всеми текущими процессами, определяя, какие программы и как долго могут пользоваться аппаратными ресурсами. Стабильность достигается за счет структурирования ресурсов. За этим стоят функции, к которым обращаются каждый день — например, отображение файловых систем на жестком диске. Высокая производительность важна при возникновении конфликтов доступа — например, когда две программы пытаются записать данные на жесткий диск одновременно. В этом случае ядро расставляет приоритеты и предоставляет доступ одной из программ, в то время как второй приходится ждать. Ниже мы подробно расскажем, как именно Windows справляется со всеми этими задачами.

Обзор типов ядер

Монолитное.

Одно большое ядро для всех задач — в этом заключается идея монолита. Такое ядро отвечает за управление памятью и процессами, за коммуникацию между процессами, а также предлагает функции для поддержки драйверов и оборудования. Именно к этой категории относятся Windows, Linux и Mac OS X.

Микро. Ошибка в ядре может вывести из строя всю операционную систему. Поэтому микроядро отличается предельно малыми размерами — чтобы свести ошибки и сбои к минимуму. Но поскольку ядро должно поддерживать широкий набор функций, оно подразделяется на несколько модулей, из которых только один работает в режиме ядра. Классическим примером является Mach — компонент Mac OS X. Так или иначе, до сих пор ни одна операционная система с микроядром не завоевала популярности среди домашних пользователей.

Гибрид.

Гибридное ядро представляет собой нечто среднее между монолитным и микроядром. Само ядро делается облегченным, а для дополнительных задач существуют динамические модули. В Linux и OS X тоже можно подгружать части ядра, но не в таких масштабах, чтобы отнести их ядра к гибридным.

Windows : работает на любом оборудовании

Начиная с NT, в архитектуре Windows выделяется два режима: пользовательский и привилегированный, или режим ядра. Это относится и к Vista.

В режиме пользователя работает практически все, что видит пользователь, то есть приложения вроде Word или Photoshop. В этом режиме программы не имеют прямого доступа к оборудованию или оперативной памяти. Таким образом, пользовательский режим надежно изолирован, а все обращения к глубинам системы направляются через специальные интерфейсы, такие как Win32 API с системными библиотеками DLL (Dynamic Link Libraries).

Такой режим ядра — фоновый и практически незаметен для пользователя. Все хорошо до тех пор, пока не возникнет какая-либо проблема — например, драйвер режима ядра (см. схему ядра Windows) не обрушит всю систему, и взору пользователя предстанет синий экран.

Центральное значение здесь имеет файл ntoskrnl.exe.

По аналогии с режимом ядра и пользовательским режимом его задачи также делятся на две группы — слой ядра и исполнительная система. Главная задача слоя ядра — планировать загрузку центрального процессора, то есть распределять процессорное время между отдельными программами. Исполнительная система отвечает за виртуальную память, процессы ввода-вывода и другие задачи.

Глубже всего в системе располагается уровень аппаратных абстракций (Hardware Abstraction Layer, HAL). Он предоставляет другим слоям ОС службы для работы со встроенным оборудованием. Так, слой ядра может распределять процессорное время между программами независимо от того, какой процессор используется в компьютере — двуядерный AMD или четырехъядерный Intel. Если бы не HAL, Microsoft пришлось бы разрабатывать отдельную Windows для каждого компьютера.

Средства для отладки Windows WINDBG Чтобы проанализировать состояние памяти при выдаче «синего экрана», вам понадобится программа-отладчик, такая как WinDbg. На странице загрузок Microsoft вы найдете также соответствующий файл символов. www.microsoft.com/whdc/DevTools/Debugging NotMyFault тестирует систему на прочность: эта программа провоцирует ошибки в Windows и пытается ее обрушить. Экспериментируйте осторожно! Process Explorer. Управление процессами — одна из главных задач операционных систем. Process Explorer показывает все текущие процессы, соответствующие дескрипторы и связи между процессами. http://download.sysinternals.com

Linux : подгружает модули при необходимости

Хотя ядро Linux (см. схему) основано на Unix, но сходства с Windows у него больше, чем можно подумать. Оно также располагается непосредственно над оборудованием и играет роль своеобразной прослойки между оборудованием и работающими программами. Стандартные задачи тоже сходны: как и в Windows, ядро сотрудничает с устройствами ввода-вывода и берет на себя управление памятью. Оно также управляет процессами, то есть решает, какая задача в данный момент имеет приоритет, и получает доступ к процессорному времени. Для этого на самых нижних уровнях ядра располагаются функции управления прерываниями (interrupts).

Запрос на прерывание посылает, к примеру, клавиатура, когда пользователь нажимает на любую клавишу. Этот запрос обрабатывается специальным системным механизмом — диспетчером. Он решает, насколько высока приоритетность прерывания и включает его в очередь текущих процессов. Как только появляется возможность выполнить прерывание, диспетчер приостанавливает протекающий процесс и сохраняет его статус. Только после этого прерывание, то есть введенная с клавиатуры команда, может быть реализовано.

Архитектура Linux, как и Windows, имеет монолитное строение. Тем не менее, ядро может динамически догружать различные модули. В основном они дополняют имеющиеся компоненты или даже полностью заменяют их.

В ядро Linux встроены интерфейсы системных и библиотечных вызовов, а также пользовательский интерфейс. При этом важную роль играет интерфейс системных вызовов: он отвечает за процессы в целом. Специальной командой процессы переключаются из пользовательского режима в режим ядра.

Mac OS X : сила двух ядер

Ядро Mac OS X сокращенно обозначается как XNU — X is Not Unix.

Эта аббревиатура соответствует действительности, потому что ядро операционной системы Apple скомбинировано из двух источников, и лишь его часть имеет отношение к Unix (см. рис.). Остальное компания взяла из проекта Mach — классического примера микроядра (см. рис.). При этом Mach используется только для передачи сообщений (message passing), то есть эффективной коммуникации между отдельными частями ядра. Помимо Mach XNU содержит код проекта FreeBSD, который основан на Unix. Эта часть отвечает за взаимодействие с пользователем, обработку сигналов и совместимость со стандартами POSIX.

Последнее гарантирует, что большинство программ для Unix будут функционировать и в Mac OS X.

Важным компонентом Mach является система ввода-вывода (I/O Kit).

Именно здесь заключается существенное отличие от Windows и Linux: I/O Kit представляет собой дополнительный слой абстракций между оборудованием и остальной системой.

Здесь находятся стандартные модели драйверов, на основе которых разработчики пишут специализированные драйверы. Это способствует стабильности и повышает вычислительную мощность.

Помимо служб ядра Mac OS X позволяет также использовать расширения ядра. Система загружает их динамически по мере необходимости. Часто в таких случаях говорят о гибридном ядре, однако эксперты относят ядро Mac OS X скорее к монолитным из-за особенностей его строения.

Процессы: цифровая подпись как средство защиты

Важной задачей ядра является управление процессами.

Под этим подразумевается не только расстановка приоритетов, но и обеспечение безопасности. В классическом варианте в Windows процессы запускаются и управляются через интерфейс Win32 API.

В ядре этим занимается исполнительная система NTOS.

Доступ к объектам ядра, относящимся к про цессу обеспечивают так называемые дескрипторы (handles). Процессы в Windows могут запускать новые процессы. Так, Word (процесс 1) может открыть новый документ (процесс 2). В классической модели Windows Word имеет право также стереть или изменить новый документ. Иными словами, по общему правилу процесс может распоряжаться порожденными собою же процессами.

Однако в стандартных процессах есть одна лазейка, позволяющая обойти структуру доступа. Это возможно при наличии полномочий на отладку программ — в данном случае администратору предоставляется полный доступ к процессу. Так он может заглянуть в адресное пространство процесса, считать и изменять используемые в процессе данные. Злоумышленникам это дает возможность добавить в процесс новые потоки.

В связи с этим Vista пересмотрела процессную модель специально для мультимедийных файлов и ввела новый тип процессов — защищенные. Возможности манипулирования ими существенно ограничены: хоть ядро и предоставляет диагностическую информацию о таких процессах, но непосредственный доступ закрыт даже для администраторов.

Согласно этому методу, кодек для просмотра фильма, например, может работать как защищенный процесс только при одном условии — его полный исполняемый код должен быть подписан цифровой подписью.

Защищенные процессы — показательный пример того, как Microsoft приспосабливает устаревшую архитектуру Windows к современным проблемам.

В Linux и Mac OS X процессная модель сходна с моделью Windows: процессы-«родители» контролируют порожденных ими «детей». Однако защищенных процессов, таких как в Vista, нет. Это неудивительно: Microsoft использует эту технологию в первую очередь для цифрового управления правами (Digital Rights Management).

Таким образом, при наличии администраторских (root) прав в Linux и Mac OS X можно делать все, даже анализировать процессы и манипулировать ими.

ASLR : «неуловимые» адреса

Современные процессоры имеют адресную шину шириной 64 бит, однако несколько бит изначально отводится под другие задачи.

Например, NX-бит препятствует исполнению данных DEP (Data Execution Prevention).

При попытке выполнить код, который находится в участке памяти, помеченном «не для исполнения», возникает внутренняя ошибка. В Windows отключить DEP для 64-битных программ и драйверов нельзя, зато для 32-битных (все еще весьма распространенных) — без проблем. Это позволяет злоумышленникам вызвать переполнение буфера. В результате они могут инфицировать такие процессы, как Internet Explorer, и проникнуть внутрь системы. После того как вредитель закрепился в Windows, он может использовать Windows-API в своих интересах — например, для того, чтобы считать нужные ему данные или изменить конфигурацию системы.

Поэтому Microsoft ввела новую функцию защиты ядра — Address Space Load Randomization (ASLR, «рандомизация адресного пространства»). Частично она была реализована уже в SP2 для ХР, но полностью — только в Vista. Ее суть заключается в следующем. В Windows входными воротами для злоумышленников обычно являются библиотеки DLL, которые в предшествовавших версиях системы всегда загружались в одни и те же участки памяти. С ASLR системные DLL и исполняемые файлы при каждой загрузке системы попадают в разные участки оперативной памяти, чтобы вредоносное ПО больше не могло атаковать системные операции по стандартным адресам. Для этого менеджер памяти имеет в своем распоряжении 256 различных адресов и при загрузке DLL выбирает один из них случайным образом. Такая «плавающая» стратегия ASLR имеет дополнительное преимущество: адресное пространство упаковано плотнее, чем в более ранних версиях Windows, так что непрерывных свободных участков в памяти остается больше.

В специальных дистрибутивах Linux, таких как Hardened Gentoo, ASLR уже полностью реализована. В стандартном же ядре содержится лишь неполный вариант. В современном OS X Build ASLR используется для нескольких библиотек, но их полноценная реализация, к сожалению, отсутствует.

Проверка подлинности: надежный код

В качестве противоядия Microsoft использует в Vista подпись кода в режиме ядра (KMCS), которая разрешает загружать лишь те драйверы устройств, которые снабжены цифровой подписью. Большинство драйверов получают подписи через лабораторию WHQl (Windows Hardware Quality Lab), однако разработчики могут подписывать свой код сами — правда, для этого им нужен действительный сертификат. Windows проверяет также, имеет ли выданный сертификат отношение к одному из центров сертификации, данные о которых содержатся в загрузчике Windows и ядре ОС. Надо сказать, что 32-битные системы Vista хотя и проверяют цифровые подписи драйверов, все-таки позволяют загрузить неподписанные драйверы.

В 64-битных Windows такой номер не пройдет.

Все модули ядра в Mac OS X и Linux, в принципе, могут иметь цифровую подпись. Хотя теоретически это относится и к драйверам, никаких механизмов проверки в этих операционных системах не встроено.

MMCSS : приоритет видео

Планировщик Windows жонглирует несколькими процессами, открытыми одновременно. Каждое приложение на определенное время получает доступ к вычислительным мощностям центрального процессора, затем уступает место другим и ждет снова своей очереди.

Чтобы такого не происходило, например, когда вы смотрите фильм, в Windows встроены специальные функции для мультимедийных файлов. Поэтому антивирусы и службы Windows в основном работают в фоновом режиме и не мешают просмотру.

В Vista приоритет фильмов и музыки обеспечивается службой планирования мультимедийных классов — MMCSS. Для этого мультимедийное приложение, такое как Media Player, сначала должно зарегистрироваться в этой службе. Данная служба, реализованная в файле %SystemRoot%System32Mmcss.dll, включает в себя поток для управления приоритетами. Windows предусматривает ступени приоритетности от 0 до 31, при этом MMCSS имеет очень высокую приоритетность — 27. Соответственно, приоритетность всех зарегистрированных мультимедийных потоков поднимается до 27. С 16-й ступени начинается режим реального времени, то есть потоку с приоритетом 16 остальные помешать уже не могут.

Linux предлагает еще более высокую градацию шкалы приоритетности — от 0 до 99. Для мультимедийных задач, например, на медиасерверах, такая разбивка подходит лучше. В Mac OS X планировщик является одним из используемых компонентов Mach.

Шкала приоритетности здесь еще мельче — от 0 до 127, и это не единственное подтверждение того, что Mach намного современнее, чем Linux и Windows. В OS X мультимедийное приложение может даже присвоить себе фиксированную долю вычислительного времени. При достаточной мощности это практически исключает риск образования узких мест.

Ввод-вывод: приоритетность задач

Высокая приоритетность при просмотре фильмов может негативно отразится на многозадачности. Так, до ХР в Windows существовали серьезные проблемы с фоновыми службами, например, автоматической дефрагментацией.

Конечно, это помогало поддерживать жесткий диск в порядке, но кому же понравится, когда, к примеру, Outlook выпадает из обоймы на два часа? Однако благодаря приоритетности ввода-вывода ждать больше не придется. Так, в Vista процессы «переднего плана» (не фоновые) всегда пользуются преимуществом, и дефрагментация приостановится до тех пор, пока пользователь не сделает в своей работе очередную паузу. Система ввода-вывода в Vista предполагает пять ступеней приоритетности — от «очень низкая» до «критически важная»; стандартный уровень — «нормальная». Фоновым задачам Windows автоматически присваивает низкую приоритетность, однако менеджер памяти всегда считается критически важным: действительно, когда оперативной памяти начинает не хватать, он должен незамедлительно сбросить данные на жесткий диск.

Команды ввода-вывода, посылаемые от драйверов устройств (такие как движение мыши), поступают в очередь со средней приоритетностью.

Еще одна ценная возможность заключается в том, что Vista может резервировать для операций ввода-вывода фиксированные диапазоны. Так, например, Media Player может потребовать от системы ввода-вывода гарантию, что фильм будет считываться с DVD в определенном темпе.

Тогда как в Vista приоритетность ввода-вывода — нововведение, в Mac OS X и Linux данный прием используется давно. В Mac OS X это заложено в архитектуре, так как для передачи сообщений используется Mach. В системах семейства Linux, начиная с ядра 2.6, тоже встроена эффективная схема приоритетов.

Адресное пространство: динамическое управление

32-битные процессоры накладывают на Windows и инсталлированные программы серьезные ограничения в отношении адресного пространства. Так, ядро Windows не может занимать больше 2 Гбайт. Когда нужно выделить место для драйверов, кеша файловой системы и стека, это может привести к определенным трудностям. Поэтому в Vista адресное пространство ядра динамическое. Оно занимается раздачей и разблокированием участков в зависимости от рабочих потребностей.

Операционные системы Linux и Mac OS X не имеют строгих ограничений. И в этих операционных системах общие размеры ядра имеют свой предел. В целом формат отдельных компонентов никак не ограничен. Действительно, в отличие от Windows в этих системах нет четкого разграничения между пространством ядра и пространством драйверов.

КТМ: предотвращение программных сбоев

Если приложение намерено предпринять ряд взаимосвязанных изменений, оно может создать либо дескриптор КТм («диспетчера транзакций ядра») и транзакцию DTC (Distributed Transaction Coordinator, «координатора распределенных транзакций»), либо просто дескриптор КТМ, и выполнять изменения файлов и ключей реестра в рамках этой транзакции. Если все прошло успешно, транзакция подтверждается — изменения приняты. До этого программа может в любой момент отменить весь процесс. Дополнительное преимущество заключается в том, что другие приложения видят эти изменения только после того, как транзакция принята.

Ядра Mac OS X и Linux тоже работают с транзакциями.

Пользователь, как правило, этого совсем не замечает, если не считать сбоев при установке обновлений. Впрочем, в обеих ОС это никак не подрывает стабильность системы, просто транзакции не будут исполнены.

Windows 7, 8, 9…

Не секрет, что Microsoft работает над новой архитектурой Windows. Прототипом операционной системы будущего (после Win7) должны стать два проекта.

Singularity обещает нам Windows без «синих экранов» и зависаний. Проект основан на трех ключевых функциях: программно-изолированные процессы (SIP), микроядро и каналы (channels).

Микроядро обеспечивает лишь неотъемлемые «ядерные» функции, такие как управление памятью, процессами и каналами, планировка процессорного времени и управление вводом-выводом. Все другие функции перекладываются на модули и реализуются изолированно друг от друга через SIP-процессы.

Проект Midori рассчитан на отдаленную перспективу. Его ядро будет иметь модульную структуру.

Преимущество заключается в том, что Windows будет лучше работать на различных платформах, таких как нетбуки, КПК или мобильные телефоны.

Вывод

Прошлые версии Windows на фоне Linux и Mac OS X смотрятся совсем неплохо. Хотя конкуренты несколько моложе, они во многом основаны на старых принципах Unix. Vista доказывает, что устаревшую архитектуру Windows можно компенсировать современными технологиями безопасности, такими как защищенные процессы или цифровые подписи кода для модулей ядра. Но, к сожалению, эти функции часто работают только в 64-битном мире, а в ХР они и вовсе отсутствуют. К тому же Linux и OS X не нуждаются в уловках вроде ASLR, поскольку они не так сильно подвержены атакам хакеров. Да и получить права администратора в Linux и Mac OS X сложнее, чем в Windows.

В Windows много застарелых проблем: например, даже в Vista дефектный драйвер все еще может обрушить всю систему. OS X выглядит несколько более современно: высокая производительность обеспечивается главным образом за счет использования компонентов Mach для коммуникаций внутри ядра, а также системы ввода-вывода I/O Kit.

В этом смысле Windows отстает, и компенсировать разрыв сумела только Vista. В пользу Linux говорит ее открытость: каждый может сконфигурировать ядро по своему усмотрению.

На чтение 3 мин. Просмотров 837 Опубликовано 02.08.2021

40

Если ваша Windows 10 работает медленно, и когда вы проверяете диспетчер задач и находите что элемент System загружает большую часть вашего процессора (или диска в некоторых случаях), вы не одиноки. Многие пользователи Windows сообщают об этой проблеме. Не беспокойтесь, это можно исправить.

* Щелкните правой кнопкой мыши элемент Система и выберите Свойства , вы см. новый элемент под названием ntoskrnl.exe .

Содержание

  1. Что такое ntoskrnl.exe?
  2. Как это исправить?
  3. Метод 1. Отключите службу поиска Windows
  4. Метод 2: проверьте несовместимые программы
  5. Метод 3: выполнить команду
  6. Метод 4. Используйте Windows Performance Toolkit, чтобы Диагностика

Что такое ntoskrnl.exe?

Ntoskrnl.exe, сокращение от ядро ​​операционной системы Windows NT , является фундаментальной частью системы. Обычно, когда вы видите необычное использование высокой загрузки ЦП или памяти, вам следует закрыть возможные программы, которые вызывают проблему.

Если это происходит часто, вы должны проверить, есть ли что-то не так с определенными настройками приложения или файлом в вашей системе.

Как это исправить?

Вот 4 метода, которые вы можете попробовать. Возможно, вам не придется пробовать их все; просто двигайтесь вниз, пока не найдете тот, который вам подходит.

Метод 1: отключить службу поиска Windows
Метод 2: проверить несовместимые программы
Метод 3: выполнить команду
Метод 4: использовать Windows Performance Toolkit для диагностики

ПРИМЕЧАНИЕ . Всегда рекомендуется обновлять драйверы устройств, чтобы исключить возможность возникновения таких проблем.

Driver Easy – это инструмент, который обнаруживает, загружает и обновляет драйверы (если вы переходите на версию Pro ). Вы можете использовать его для устранения любых проблем с драйверами. Если вы используете Pro, вы даже можете обновить все драйверы одним щелчком мыши. Если проблема высокой загрузки ЦП системы вызвана драйверами, вы можете использовать Driver Easy , чтобы быстро исправить это. Загрузите бесплатную версию, чтобы попробовать прямо сейчас!

Метод 1. Отключите службу поиска Windows

1) На клавиатуре нажмите клавишу Windows и X одновременно, затем нажмите Управление компьютером .

2) Разверните Services и Приложения и нажмите Службы .

3) Дважды щелкните Windows Search .

4) В General нажмите Остановить .

5) Подождите, пока служба остановится, затем нажмите OK , чтобы сохранить изменения и выйти.

Метод 2: проверьте несовместимые программы

Некоторые пользователи говорят, что это происходит только при использовании определенных программ. Особенно, когда антивирусное программное обеспечение работает в фоновом режиме. Антивирусное программное обеспечение может иметь некоторые конфликты с определенными программами. В следующий раз, когда вы столкнетесь с такой ситуацией, постарайтесь обратить особое внимание, чтобы увидеть, сможете ли вы найти программу, которая мешает работе вашей системы. Если такая программа может быть обнаружена, попробуйте переустановить ее или полностью удалить.

Метод 3: выполнить команду

1) На клавиатуре нажмите клавишу Windows и введите cmd . Щелкните правой кнопкой мыши Командная строка и нажмите Запуск от имени администратора .

2) Введите: Dism/Online/Cleanup-Image/RestoreHealth и нажмите Enter . Процесс может занять несколько минут.

3) После этого проблема должна исчезнуть. Если проблема не исчезнет, ​​попробуйте запустить эту команду еще раз после перезагрузки.

1) Установите Windows Performance Toolkit (WPT) . Узнайте больше на этой странице.

2) На клавиатуре нажмите клавишу Windows и введите cmd . Щелкните правой кнопкой мыши Командная строка и выберите Запуск от имени администратора .

3) Скопируйте и вставьте следующую команду в :

 xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl 

4) Выполните эту команду в течение 60 секунд, чтобы зафиксировать высокую загрузку ЦП. После запуска трассировки вы получите предупреждение, а затем вернетесь к приглашению C: .

5) Журнал будет храниться в C: Windows system32 с именем файла cpuusage.etl .

6) По диагностическому файлу вы должны увидеть, какие программы вызывают проблему.

Полезное

Смотреть что такое «Ntoskrnl» в других словарях:

  • Ntoskrnl — Noyau Windows NT Le noyau de Windows NT est le composant Microsoft qui assure l accès sécurisé des différentes tâches de Windows à la couche du matériel (Hardware abstraction layer). Sur un système 32 bits classique monoprocesseur, le noyau s… …   Wikipédia en Français

  • ntoskrnl.exe — (and ntkrnlpa.exe on systems with Physical Address Extension support) is the kernel image for the family of Microsoft Windows NT operating systems. It provides the Kernel and Executive layers of the Windows NT kernel space, and is responsible for …   Wikipedia

  • Ntoskrnl.exe — (and ntkrnlpa.exe on systems with Physical Address Extension support) is the kernel image for the family of Microsoft Windows NT operating systems. It provides the Microkernel and Executive layers of the Windows NT kernel space, and is… …   Wikipedia

  • Ntoskrnl.exe — (y ntkrnlpa.exe en sistemas con soporte de extensión de dirección física) es la imagen del kernel para la familia de sistemas operativos Microsoft Windows NT. Proporciona el núcleo y las capas del núcleo de Windows NT, y es responsable de… …   Wikipedia Español

  • Ntoskrnl.exe — (сокр. от англ. NT OS kernel «ядро операционной системы NT»)  файл ядра операционных систем семейства Windows NT (NT 4.0, 2000 …   Википедия

  • Ntoskrnl.exe — Noyau Windows NT Le noyau de Windows NT est le composant Microsoft qui assure l accès sécurisé des différentes tâches de Windows à la couche du matériel (Hardware abstraction layer). Sur un système 32 bits classique monoprocesseur, le noyau s… …   Wikipédia en Français

  • Native API — The Native API (with capitalized N) is the publicly and incompletely documented application programming interface used internally by the Windows NT family of operating systems produced by Microsoft.[1]. It is predominately used during system boot …   Wikipedia

  • BSOD — Écran bleu de la mort Un écran bleu sur un téléphone public. L écran bleu de la mort aussi abrégé BSoD de l anglais Blue Screen of Death se réfère à l écran affiché par le système d exploitation Microsoft Windows lorsqu il ne peut plus récupérer… …   Wikipédia en Français

  • BSoD — Écran bleu de la mort Un écran bleu sur un téléphone public. L écran bleu de la mort aussi abrégé BSoD de l anglais Blue Screen of Death se réfère à l écran affiché par le système d exploitation Microsoft Windows lorsqu il ne peut plus récupérer… …   Wikipédia en Français

  • Blue Screen of Death — Écran bleu de la mort Un écran bleu sur un téléphone public. L écran bleu de la mort aussi abrégé BSoD de l anglais Blue Screen of Death se réfère à l écran affiché par le système d exploitation Microsoft Windows lorsqu il ne peut plus récupérer… …   Wikipédia en Français

Понравилась статья? Поделить с друзьями:
  • Микрофризы на рабочем столе windows 11
  • Минимальное состояние процессора сколько ставить windows 10 на ноутбуке
  • Микрофризы в играх при высоком fps windows 10 ssd
  • Минимальное состояние процессора сколько ставить windows 10 для игр
  • Микрофризы в играх на мощном пк windows 11