MinWin

MinWin — это понятие, используемое Microsoft для описания ядра и операционной системы, основные компоненты которых начали разрабатываться одновременно с Windows Vista. Данное понятие впервые использовалось в 2003 для описания примерно 95 % компонентов операционной системы (правда, со временем этот процент снизился). Это самый популярный вариант минималистичной модульной сборки компонентов Windows, который изначально планировалось сделать ядром Windows 7.

4 ноября 2008 года Марк Руссинович, член технического совета корпорации Microsoft, в своей веб-трансляции на MSDN Channel 9 сообщил, что в Windows 7 всё же внедрено ядро MinWin, но принцип его реализации основан на разделении ядра на слои, где базовый слой (KernelBase.dll и т. д.) суммарно занимает 30 Мб, а остальная функциональность остаётся в старых библиотеках (к примеру, kernel32.dll и т. д.). Для работы приложений и драйверов устройств это изменение незаметно, благодаря тщательно продуманной схеме разделения функциональности.


Устройство и работа

[править | править код]

Чтобы выделить MinWin, пришлось переработать некоторые компоненты (разделить или объединить). Например, библиотека kernel32.dll разделилась на kernel32.dll и kernelbase.dll. А чтобы эти изменения не коснулись программ высших уровней, вызовы всех «удаленных» функций в старых DLL перенаправляются в библиотеки от MinWin. Например:

  • Kernel32.dllKernelbase.dll
  • Advapi32.dllKernelbase.dll

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

Например: api-ms-win-core-errorhandling-l1-1-0.dll, где номера обозначают уровень иерархии в системе, мажорную и минорную версию. Схема отображения виртуальных DLL в физические хранится в Apisetschema.dll.

Все виртуальные DLL существуют физически, но не содержат в себе реализаций функций:

C:\Windows\System32>dir /a api* /B

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-delayload-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-fibers-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-io-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-1-0.dll
api-ms-win-core-localregistry-l1-1-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-misc-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-threadpool-l1-1-0.dll
api-ms-win-core-ums-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-core-xstate-l1-1-0.dll
api-ms-win-security-base-l1-1-0.dll
api-ms-win-security-lsalookup-l1-1-0.dll
api-ms-win-security-sddl-l1-1-0.dll
api-ms-win-service-core-l1-1-0.dll
api-ms-win-service-management-l1-1-0.dll
api-ms-win-service-management-l2-1-0.dll
api-ms-win-service-winsvc-l1-1-0.dll