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

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

Из того, что я прочитал, ядро и пользовательский режим - это просто два разных режима процессора в Windows. Пользовательский режим используется для приложений, системных процессов, служб и т.д., А режим ядра - для Windows Executive, драйверов устройств и файловой системы, HAL, самого кода ядра, GDI и т.д. Процессор, работающий в Windows, переключается между этими двумя режимами в зависимости от код, который он выполняет.

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

Чтобы показать мое понимание, давайте возьмем пример MS Paint. Если я запустил рисование, а затем попытался открыть изображение, введя имя файла, поток в процессе mspaint.exe будет переключен процессором в режим ядра, чтобы получить доступ к файловой системе, которая находится в ядре. режим, который позволит ему просмотреть все файлы, присутствующие на диске и найти файл, который соответствует имени файла. При обнаружении файла потоку mspaint предоставляется дескриптор объекта файла в режиме ядра, а затем процессор переключается обратно в режим пользователя.

Пожалуйста, поправьте меня, если я ошибаюсь, и если так, то очень хороший пример того, как это работает, будет очень признателен

0