В чем отличие работы аппаратуры компьютера в пользовательском режиме и в режиме ядра
Чтобы защитить жизненно важные системные данные от доступа и (или) внесения изменений со стороны пользовательских приложений, в Windows используются два процессорных режима доступа (даже если процессор, на котором работает Windows, поддерживает более двух режимов): пользовательский режим и режим ядра.
Код пользовательского приложения запускается в пользовательском режиме, а код операционной системы (например, системные службы и драйверы устройств) запускается в режиме ядра. Режим ядра — такой режим работы процессора, в котором предоставляется доступ ко всей системной памяти и ко всем инструкциям центрального процессора. Предоставляя программному обеспечению операционной системы более высокий уровень привилегий, нежели прикладному программному обеспечению, процессор гарантирует, что приложения с неправильным поведением не смогут в целом нарушить стабильность работы системы.
ПРИМЕЧАНИЕ В архитектурах процессоров x86 и x64 определены четыре уровня привилегий (или четыре кольца) для защиты системного кода и данных от непреднамеренной или злонамеренной перезаписи в результате выполнения кода, имеющего более низкий уровень привилегий. Windows использует уровень привилегий 0 (или кольцо 0) для режима ядра, и уровень привилегий 3 (или кольцо 3) для пользовательского режима. Причина, по которой в Windows используются только два уровня, заключается в том, что в некоторых аппаратных архитектурах, поддерживаемых в прошлом (например, Compaq Alpha и Silicon Graphics MIPS), были реализованы только два уровня привилегий.
Хотя у каждого Windows-процесса есть свое собственное закрытое адресное пространство, код операционной системы и код драйвера устройства, используют одно и то же общее виртуальное адресное пространство. Каждая страница в виртуальной памяти имеет пометку, показывающую, в каком режиме доступа должен быть процессор для чтения и (или) записи страницы. Доступ к страницам в системном пространстве может быть осуществлен только из режима ядра, тогда как доступ ко всем страницам в пользовательском адресном пространстве может быть осуществлен из пользовательского режима.
Станицы, предназначенные только для чтения (например, те страницы, которые содержат статические данные), недоступны для записи из любого режима. Кроме того, при работе на процессорах, поддерживающих защиту той памяти, которая не содержит исполняемого кода (no-execute memory protection), Windows помечает страницы, содержащие данные, как не исполняемые, предотвращая тем самым неумышленное или злонамеренное выполнение кода из областей данных.
32-разрядные версии Windows не защищают закрытую системную память чтения-записи, используемую компонентами операционной системы, запущенными в режиме ядра. Иными словами, в режиме ядра код операционной системы и драйвера устройства имеют полный доступ к системному пространству памяти и могут обойти систему защиты Windows, получив доступ к объектам. Поскольку основная часть кода операционной системы Windows работает в режиме ядра, очень важно, чтобы компоненты, работающие в этом режиме, были тщательно проработаны и протестированы, чтобы не нарушать безопасность системы или не становиться причиной нестабильной работы системы.
Отсутствие защиты также подчеркивает необходимость проявлять особую осторожность при загрузке драйвера устройства стороннего производителя, потому что программное обеспечение, работающее в режиме ядра, имеет полный доступ ко всем данным операционной системы. Этот недостаток стал одной из причин введения в Windows механизма подписи драйверов, который выводит предупреждение пользователю при попытке добавления автоматически настраиваемого (Plug and Play) драйвера, не имеющего подписи (или, при определенной настройке, блокирует добавление такого драйвера). Помимо этого верификатор драйверов — Driver Verifier — помогает создателям драйверов выискивать просчеты (например, переполнение буферов или допущение утечек памяти), способные повлиять на безопасность или стабильность работы системы.
В 64-разрядных версиях Windows политика подписи кода в режиме ядра —Kernel Mode Code Signing (KMCS) — требует, чтобы все 64-разрядные драйверы устройств (не только автоматически настраиваемые) были подписаны криптографическим ключом, присвоенным одним из основных центров сертификации кода.
Пользователь не может напрямую заставить систему установить не подписанный драйвер, даже имея права администратора, за единственным исключением: эти ограничения могут быть отключены вручную во время загрузки системы путем нажатия клавиши F8 и выбора дополнительного параметра загрузки Disable Driver Signature Enforcement (Выключить принуждение к подписыванию драйверов). При этом выключаются водяной знак на обоях для рабочего стола и определенные функции системы управления правами на цифровые материалы — digital rights management (DRM).
В цикле статей «Архитектура системы» будет показано, что пользовательские приложения осуществляют переключение из пользовательского режима в режим ядра при осуществлении вызова системной службы. Например, Windows-функции ReadFile, в конечном счете, необходим вызов внутренней стандартной программы Windows, управляющей чтением данных из файла. Поскольку эта стандартная программа обращается к структурам внутренних системных данных, она должна работать в режиме ядра.
Переход из режима пользователя в режим ядра осуществляется за счет использования специальной инструкции процессора, которая заставляет процессор переключиться в режим ядра и войти в код диспетчеризации системных служб, вызывающий соответствующую внутреннюю функцию в Ntoskrnl.exe или в Win32k.sys. Перед тем как вернуть управление пользовательскому потоку, процессор переключается в прежний, пользовательский режим работы. Таким образом, операционная система защищает саму себя и свои данные от прочтения и модификации со стороны пользовательских процессов.
ПРИМЕЧАНИЕ Переход из пользовательского режима в режим ядра (и назад) не влияет на планирование работы потоков как таковое — переход из режима в режим не является переключением контекста.
Таким образом, пользовательский поток вполне может выполняться часть времени в пользовательском режиме, а другую часть времени — в режиме ядра.
Фактически, из-за того, что основная масса графики и оконная система также работают в режиме ядра, приложения, интенсивно использующие графику, проводят большую часть своего времени в режиме ядра, нежели в пользовательском режиме. Это легко проверить, если запустить приложение, интенсивно использующее графику, например, Microsoft Paint или Microsoft Chess Titans, и посмотреть, как распределяется время между пользовательским режимом и режимом ядра, используя для этого один из счетчиков производительности, перечисленных в таблице.
Более сложные приложения могут использовать такие новые технологии, как Direct2D и создание составных изображений (compositing), которые проводят основной объем вычислений в пользовательском режиме и отправляют ядру только исходные данные поверхностей, сокращая время, затрачиваемое на переходы между пользовательскими режимами и режимами ядра.
Процессор на компьютере под управлением Windows имеет два разных режима: режим пользователя и режим ядра.
Процессор переключается между двумя режимами в зависимости от типа кода, выполняемого на процессоре. Приложения выполняются в пользовательском режиме, а основные компоненты операционной системы выполняются в режиме ядра. Хотя многие драйверы работают в режиме ядра, некоторые драйверы могут работать в пользовательском режиме.
Сводка - Пользователь Режим против режима ядра
Компьютер работает либо в пользовательском режиме, либо в режиме ядра. Разница между пользовательским режимом и режимом ядра заключается в том, что пользовательский режим - это ограниченный режим, в котором работают приложения, а режим ядра - это привилегированный режим, в который компьютер входит при доступе к аппаратным ресурсам. Компьютер переключается между этими двумя режимами. Частое переключение контекста может замедлить скорость, но невозможно выполнить все процессы в режиме ядра. Это потому; в случае отказа одного процесса может выйти из строя вся операционная система.
Что такое режим ядра?
Ядро - это программа, которая используется для доступа к аппаратным компонентам компьютерной системы. Ядро работает как промежуточное программное обеспечение для аппаратного и прикладного программного обеспечения / пользовательских программ. Режим ядра обычно зарезервирован для доверенных функций низкого уровня операционной системы.
Есть несколько типов системных вызовов. Системные вызовы управления процессами создают процессы и завершают их. Система управления файлами вызывает чтение, запись, создание, удаление, открытие и закрытие файлов. Система управления устройствами вызывает устройства запроса и освобождает устройства, получает и устанавливает атрибуты устройства. Также существуют системные вызовы информационного обслуживания. Их можно использовать для получения системных данных, времени, даты. Ресурс, требуемый одним процессом, может удерживаться другим процессом. Следовательно, процессы должны взаимодействовать с помощью системных вызовов связи. Системные вызовы связи могут создавать и удалять соединения, отправлять и получать информацию о состоянии.
В чем разница между пользовательским режимом и режимом ядра?
Загрузите PDF-версию пользовательского режима и режима ядра
Вы можете скачать PDF-версию этой статьи и использовать ее в автономных целях в соответствии с примечанием к цитированию. Загрузите PDF-версию здесь. Разница между пользовательским режимом и режимом ядра.
Создание новой библиотеки DLL принтера в пользовательском режиме
Для разработки новой библиотеки графического DLL принтера, выполняемой в пользовательском режиме, можно продолжать использовать все функции DDI графики, используемые библиотеками DLL режима ядра. Однако у вас также есть следующие варианты:
Для функций с префиксом ENG, имеющих точные эквиваленты Win32, настоятельно рекомендуется вызывать функции Win32. В следующей таблице перечислены эти функции с префиксами ENG, а также их эквиваленты в Win32.
каковы различия между пользовательским режимом и режимом ядра, почему и как вы активируете любой из них, и каковы их использования?
Режим Ядра
в режиме ядра исполняемый код имеет полный и неограниченный доступ к аппаратному. Он может выполнить любую инструкцию CPU и ссылка на любой адрес памяти. Ядро режим обычно зарезервирован для самые низкоуровневые и надежные функции операционной системы. Сбои в режим ядра катастрофичен; они остановит весь компьютер.
Режим Пользователя
в пользовательском режиме, выполняющийся код не имеет возможности прямого доступа аппаратная или справочная память. Код запуск в пользовательском режиме должен делегировать системные API для доступа к оборудованию или память. Из-за защиты такого рода изоляции, аварии в пользовательский режим всегда можно восстановить. Наиболее кода, запущенного на вашем компьютере будет выполняться в пользовательском режиме.
Это два разных режима, в которых может работать ваш компьютер. До этого, когда компьютеры были как большая комната, если что – то падает-это останавливает весь компьютер. Поэтому компьютерные архитекторы решили изменить его. Современные микропроцессоры реализуют в аппаратном обеспечении не менее 2-х различных состояний.
- режим, в котором выполняются все пользовательские программы. Он не имеет доступа к ОЗУ и оборудование. Причина этого в том, что если все программы запущены ядро режим, они смогут перезаписать память друг друга. Если он должен получить доступ к любой из этих функций – это вызов базовых API. Каждый процесс, запущенный windows, кроме системы процесс выполняется в пользовательском режиме.
- режим, в котором выполняются все программы ядра (разные драйверы). Оно имеет доступ ко всем ресурсам и базовому оборудованию. Любая инструкция CPU может быть выполнен, и каждый адрес памяти может быть доступен. Этот режим есть зарезервированы для водителей, которые работают на самом низком уровне
Как происходит переключение.
переключение из режима пользователя в режим ядра не выполняется автоматически процессором. CPU прерывается прерываниями (таймеры, клавиатура, ввод-вывод). При возникновении прерывания процессор прекращает выполнение текущей запущенной программы, переходит в режим ядра, выполняет обработчик прерываний. Этот обработчик сохраняет состояние ЦП, выполняет его операции, восстанавливает состояние и возвращает пользователю режим.
процессор на компьютере под управлением Windows имеет два различных режима: режим пользователя и режим ядра. Процессор переключается между двумя режимами в зависимости от того, какой тип код выполняется на процессоре. Приложения работают в пользовательском режиме, а основные компоненты операционной системы-в режиме ядра. Хотя многие драйверы работают в режиме ядра, некоторые драйверы могут работать в пользовательском режиме.
при запуске приложения в пользовательском режиме Windows создает процесс для приложения. Процесс обеспечивает приложение с частным виртуальным адресным пространством и частной таблицей дескрипторов. Поскольку виртуальное адресное пространство приложения является частным, одно приложение не может изменять данные, принадлежащие другому приложению. Каждое приложение работает изолированно, и если приложение аварийно завершает работу, сбой ограничивается этим одним приложением. Другие приложения и операционная система не пострадали от аварии.
помимо приватности, виртуальное адресное пространство приложения пользовательского режима ограничена. Процессор, работающий в пользовательском режиме, не может получить доступ к виртуальным адресам, зарезервированным для операционной системы. Ограничение виртуального адресного пространства приложения в пользовательском режиме не позволяет приложению изменять и, возможно, повреждать критические данные операционной системы.
весь код, который работает в режиме ядра, имеет одно виртуальное адресное пространство. Это означает, что драйвер режима ядра не изолирована от других драйверов и самой операционной системы. Если драйвер режима ядра случайно записывает на неправильный виртуальный адрес, данные, принадлежащие операционной системе или другому драйверу могут быть скомпрометированы. При сбое драйвера в режиме ядра происходит сбой всей операционной системы.
Если вы являетесь пользователем Windows, один раз пройти по этой ссылке вы получите больше.
Я собираюсь взять удар в темноте и догадаться, что вы говорите об окнах. Короче говоря, режим ядра имеет полный доступ к оборудованию, но пользовательский режим-нет. Например, многие, если не большинство драйверов устройств, записываются в режиме ядра, поскольку им необходимо контролировать более мелкие детали своего оборудования.
другие ответы уже объяснили разницу между Пользователем и режимом ядра. Если вы действительно хотите вдаваться в детали, вы должны получить копию Windows Internals, отличная книга, написанная Марком Руссиновичем и Дэвидом Соломоном, описывающая архитектуру и внутренние детали различных операционных систем Windows.
CPU кольца являются наиболее четкое различие
в защищенном режиме x86, процессор всегда находится в одном из 4 колец. Ядро Linux использует только 0 и 3:
это самое жесткое и быстрое определение kernel vs userland.
как определяется текущее кольцо?
текущее кольцо выбирается комбинацией из:
глобальная таблица дескрипторов: таблица в памяти записей GDT, и каждая запись имеет поле Privl , который кодирует кольцо.
инструкция LGDT задает адрес текущей таблицы дескрипторов.
сегмент регистрирует CS, DS и т. д., которые указывают на индекс записи в GDT.
например, CS = 0 означает, что первая запись GDT в настоящее время активна для исполняемого кода.
что может сделать каждое кольцо?
чип процессора физически построен так, что:
кольцо 0 может сделать ничего
ring 3 не может запускать несколько инструкций и записывать в несколько регистров, в частности:
не может изменить свое собственное кольцо! В противном случае, он может установить себя в кольцо 0 и кольца будут бесполезны.
другими словами, невозможно изменить текущий дескриптор сегмента, который определяет текущее кольцо.
невозможно изменить таблицы страниц:как х86 подкачки работа?
другими словами, невозможно изменить регистр CR3, а сама подкачка предотвращает изменение таблиц страниц.
это предотвращает один процесс от просмотра памяти других процессов по соображениям безопасности / простоты программирования.
не удается зарегистрировать обработчики прерываний. Они настраиваются путем записи в места памяти,что также предотвращается подкачкой.
обработчики бегут в кольце 0, и сломали бы модель защиты.
другими словами, нельзя использовать инструкции LGDT и LIDT.
не ИО инструкции как in и out , и, таким образом, имеют произвольный аппаратный доступ.
в противном случае, например, права доступа к файлам были бы бесполезны, если бы любая программа могла непосредственно читать с диска.
еще раз спасибо Майкл Петч: на самом деле ОС может разрешить инструкции ввода-вывода на кольце 3, это фактически контролируется сегмент состояния задачи.
что невозможно для кольца 3, чтобы дать себе разрешение на это, если у него его не было в первую очередь.
как сделать, как программы и операционные системы переход между кольца?
когда CPU включен, он начинает запускать начальную программу в кольце 0 (ну, вроде, но это хорошее приближение). Вы можете думать, что эта начальная программа является ядром (но обычно это загрузчик, который затем вызывает ядро все еще в кольце 0).
когда процесс userland хочет, чтобы ядро сделало что-то для него, например, запись в файл, он использует инструкцию, которая генерирует прерывание, такое как int 0x80 сигнал ядра.
когда это происходит, CPU вызывает и прерывает обработчик обратного вызова, который ядро зарегистрировало во время загрузки.
этот обработчик работает в кольце 0, который решает, позволит ли ядро это действие, выполнить действие и перезапустить программу userland в кольце 3.
если программа пытается сделать что-то непослушное, как запись в запрещенный регистр или адрес памяти (из-за подкачки), CPU также вызывает некоторый обработчик обратного вызова ядра в кольце 0.
но так как userland был непослушным, ядро может убить процесс на этот раз или дать ему предупреждение с помощью сигнал.
когда ядро загружается, оно настраивает аппаратные часы с некоторой фиксированной частотой, которая периодически генерирует прерывания.
эти аппаратные часы генерируют прерывания, которые запускают кольцо 0, и позволяют ему планировать, какие процессы userland просыпаться.
таким образом, планирование может произойти, даже если процессы не делают никаких системных вызовов.
какой смысл иметь несколько кольца?
есть два основных преимущества разделения ядра и userland:
- легче создавать программы, поскольку вы более уверены, что один не будет мешать другому. Например, один процесс userland не должен беспокоиться о перезаписи памяти другой программы из-за подкачки или о вводе оборудования в недопустимое состояние для другого процесса.
- это более безопасно. Е. Г. разрешения файла и разделение памяти могло бы предотвратить хакерское приложение для чтения банковских данных. Это предполагает, конечно, что Вы доверяете ядру.
как играть с ним?
у меня не было терпения, чтобы сделать пример userland, к сожалению, но я зашел так далеко, как настройка подкачки, поэтому userland должен быть возможный. Я бы хотел увидеть запрос на вытягивание.
кроме того, модули ядра Linux работают в кольце 0, поэтому вы можете использовать их для выполнения привилегированных операций, например, читать управляющие регистры:как получить доступ к регистрам управления cr0, cr2, cr3 из программы? Получение ошибки сегментации
здесь удобная настройка QEMU + Buildroot, чтобы попробовать его, не убивая хозяина.
недостатком модулей ядра является то, что другое kthread на всех платформах работает и может вмешиваться в ваши эксперименты. Но теоретически вы можете взять на себя все обработчики прерываний с модулем ядра и владеть системой, что было бы интересным проектом.
отрицательный кольца
хотя отрицательные кольца фактически не упоминаются в руководстве Intel, на самом деле есть режимы процессора, которые имеют дополнительные возможности, чем само кольцо 0, и поэтому хорошо подходят для " отрицательного кольца" имя.
одним из примеров является режим гипервизора используются в виртуализации.
ARM
в ARM кольца называются уровнями исключений, но основные идеи остаются теми же.
в ARMv8 существует 4 уровня исключений, обычно используемых как:
EL0: пользовательские программы
EL1 начинает: ядра
гипервизор для ОС, что ОС для userland.
например, Xen позволяет запускать несколько ОС, таких как Linux или Windows, в одной и той же системе одновременно, и изолирует ОС друг от друга для безопасности и простоты отладки, так же, как Linux делает для userland программы.
гипервизоры являются ключевой частью современной облачной инфраструктуры: они позволяют нескольким серверам работать на одном оборудовании, сохраняя использование оборудования всегда близко к 100% и экономя много денег.
AWS, например, использовал Xen до 2017 года, когда его переход на КВМ сделал новость.
EL3: еще один уровень. Пример TODO.
на эталонная модель архитектуры ARMv8 DDI 0487C.а - глава D1-модель программиста системного уровня AArch64-рисунок D1-1 прекрасно иллюстрирует это:
обратите внимание, как ARM, возможно, из-за преимущества ретроспективы, имеет лучшее соглашение об именах для уровней привилегий, чем x86, без необходимости отрицательных уровней: 0 является более низким и 3 самым высоким. Более высокие уровни, как правило, создаются чаще, чем нижних.
что
в основном разница между режимами ядра и пользователя не зависит от ОС и достигается только путем ограничения некоторых инструкций для запуска только в режиме ядра с помощью аппаратного обеспечения. Все другие цели, такие как защита памяти, могут быть выполнены только этим ограничением.
Как
Это означает, что процессор живет либо в режиме ядра, либо в пользовательском режиме. Используя некоторые механизмы, архитектура может гарантируйте, что всякий раз, когда он переключается в режим ядра, код ОС извлекается для запуска.
почему
имея эту аппаратную инфраструктуру, они могут быть достигнуты в общих ОС:
Содержание:
Режим пользователя
При запуске приложения в пользовательском режиме Windows создает процесс для приложения. Этот процесс предоставляет приложению частное виртуальное адресное пространство и таблицу частных дескрипторов. Так как виртуальное адресное пространство приложения является частным, одно приложение не может изменять данные, принадлежащие другому приложению. Каждое приложение выполняется в изоляции, и если приложение аварийно завершает работу, оно ограничивается одним приложением. Другие приложения и операционная система не затрагиваются сбоем.
Помимо частного, виртуальное адресное пространство приложения в пользовательском режиме ограничено. Процессор, работающий в пользовательском режиме, не может получить доступ к виртуальным адресам, зарезервированным для операционной системы. Ограничение виртуального адресного пространства приложения в пользовательском режиме предотвращает изменение и, возможно, повреждение критически важных данных операционной системы.
Использование DDI для графики в пользовательском режиме
Библиотека DLL принтера пользовательского режима не ограничена вызовом служб поддержки GDI и других функций обратного вызова DDI для ENG графики. Однако необходимо соблюдать некоторые правила.
Как и графические библиотеки DLL в режиме ядра, библиотеки DLL графического пользовательского режима должны вызывать графические ДДИС, которые создают или изменяют поверхность рисования. Эти функции обратного вызова являются службами поддержки GDI, и вызов эквивалентов Win32 для этих функций рисования не допускается.
Для библиотек DLL пользовательского режима вызовы функций обратного вызова рисования перехватываются клиентом GDI пользовательского режима, который передает вызовы в режиме ядра (GRE) интерфейса GDI.
Следующий список функций DDI для ENG графики не может вызываться библиотеками пользовательского режима:
Графические библиотеки DLL для принтера в пользовательском режиме могут продолжать использовать функции DDI графики для служб GDI с плавающей точкой.
Каковы сходства между пользовательским режимом и режимом ядра?
- Компьютер может переключаться между обоими режимами.
Режим ядра
Весь код, выполняющийся в режиме ядра, использует одно виртуальное адресное пространство. Это означает, что драйвер в режиме ядра не изолирован от других драйверов и самой операционной системы. Если драйвер в режиме ядра случайно записывает неправильный виртуальный адрес, данные, принадлежащие операционной системе или другому драйверу, могут быть скомпрометированы. Если драйвер в режиме ядра аварийно завершает работу, вся операционная система завершает работу.
На этой схеме показан обмен данными между компонентами пользовательского режима и режима ядра.
Выполнение пользовательского режима для графических библиотек DLL принтера обеспечивает следующие преимущества по сравнению с выполнением в режиме ядра.
Неограниченное пространство стека.
Доступ к API-интерфейсам Win32.
Меньшая вероятность возникновения сбоев системы.
Упрощенная отладка с помощью отладчиков пользовательского режима.
Улучшенные возможности операций с плавающей запятой, поскольку использование функций с плавающей запятой графики не требуется.
возможность вызывать любые настраиваемые, предоставляемые поставщиком библиотеки dll пользовательского режима, не входящие в состав описываемой архитектуры драйвера принтера Microsoft Windows 2000 и более поздних версий
в Windows Vista невозможно установить драйвер принтера, работающий в режиме ядра. если приложение пытается сделать это, функции аддпринтердривер и аддпринтердриверекс (описанные в документации Windows SDK) завершатся ошибкой с кодом ошибки ERROR_KM_DRIVER_BLOCKED.
В следующей таблице показаны Разрешенные режимы выполнения драйвера принтера.
пользователь или ядро
Windows XP и Server 2003
режим ядра, доступный для существующих принтеров; для установки новых принтеров требуется пользовательский режим
Ключевое отличие - пользователь Режим против режима ядра
Компьютер работает в двух режимах: пользовательском режиме и режиме ядра. Когда на компьютере запущено прикладное программное обеспечение, он находится в пользовательском режиме. После запроса программного обеспечения для оборудования компьютер переходит в режим ядра. Ядро - это ядро компьютерной системы. Впоследствии компьютер часто переключается между пользовательским режимом и режимом ядра. Наиболее важные задачи операционной системы выполняются в режиме ядра. В ключевое отличие между режимом пользователя и режимом ядра заключается в том, что пользовательский режим - это режим, в котором работают приложения, а режим ядра - это привилегированный режим, в который переходит компьютер при доступе к аппаратным ресурсам.
1. Обзор и основные отличия
2. Что такое режим пользователя
3. Что такое режим ядра
4. Сходства между пользовательским режимом и режимом ядра
5. Параллельное сравнение - режим пользователя и режим ядра в табличной форме
6. Резюме
Преобразование существующей библиотеки DLL принтера в пользовательский режим
Если вы ранее разработали библиотеку DLL для принтера, которая выполняется в режиме ядра, библиотеку DLL можно преобразовать в выполнение в пользовательском режиме. Для преобразования просто добавьте в библиотеку DLL функцию дрвкуеридриверинфо , а затем следуйте правилам создания библиотеки DLL для принтера.
Пользовательский режим и режим ядра
Что такое режим пользователя?
Когда компьютерное приложение запущено, оно находится в пользовательском режиме. Некоторые примеры: приложение Word, PowerPoint, чтение файла PDF и просмотр веб-страниц. Это прикладные программы, поэтому компьютер находится в пользовательском режиме. Когда процесс находится в пользовательском режиме и требует каких-либо аппаратных ресурсов, этот запрос отправляется ядру. Поскольку в этом режиме есть ограниченный доступ к оборудованию, он известен как менее привилегированный режим, подчиненный режим или ограниченный режим.
В пользовательском режиме процессы получают собственное адресное пространство и не могут получить доступ к адресному пространству, которое принадлежит ядру. Таким образом, отказ одного процесса не повлияет на операционную систему. Если есть прерывание, оно влияет только на этот конкретный процесс.
Видео: Разница между пользовательским режимом и режимом ядра | Сравните разницу между похожими терминами
Читайте также:
- Что позволяют компьютеры проектировать конструкторам выберите один ответ
- Лесоустроительный планшет что это
- Установите соответствие между характеристикой и видом памяти двигательная смысловая образная
- Asrock game blaster обзор
- Сохранение не удалось невозможно подключиться к игровым сервисам rockstar ps4