Режимы работы процессора: Лекция 2. Процессор. Режимы работы процессора. Пользовательские регистры процессора.

Лекция 2. Процессор. Режимы работы процессора. Пользовательские регистры процессора.

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

·         Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.

·         Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

·         Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

·         Тактовый генератор, или

генератор тактовых импульсов, задаёт рабочую частоту процессора.

2.2. Режимы работы процессора.

Процессор архитектуры x86 может работать в одном из пяти режимов и переключаться между ними очень быстро:

1.        Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним  программным обеспечением (DOS-программами).

2.        Защищенный режим (protected mode) — режим, который впервые был реализован в 80286  процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3.        Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования  программ  реального  режима,  причем дает возможность одновременной работы нескольких таких программ, что в реальном  режиме невозможно.

Режим V86 предоставляет аппаратные средства для формирования виртуальной  машины, эмулирующей процессор8086. Виртуальная машина формируется программными  средствами  операционной  системы.  В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы  от работающих DOS-приложений.

4.        Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5.        Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

При загрузке компьютера процессор всегда находится в реальном режиме, в этом режиме  работали  первые  операционные системы, например MS-DOS, однако современные операционные системы, такие  как Windows и Linux переводят процессор в защищенный режим. Вам, наверное, интересно, что защищает процессор в защищенном режиме? В защищенном режиме процессор защищает выполняемые программы в памяти от взаимного влияния (умышленно или по ошибке) друг на друга, что легко может произойти в реальном режиме.

Поэтому защищенный режим и назвали защищенным.

2.3. Регистры процессора (программная модель процессора).

Для понимания работы команд ассемблера необходимо четко представлять, как выполняется адресация данных, какие регистры процессора и как могут использоваться при выполнении инструкций. Рассмотрим базовую программную модель процессоров Intel 80386, в которую входят:

·         8 регистров общего назначения, служащих для хранения данных и указателей;

·         регистры сегментов — они хранят 6 селекторов сегментов;

·         регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

·         регистр-указатель EIP выполняемой следующей инструкции процессора;

·         система команд (инструкций) процессора;

·         режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

32-битные регистры ЕАХ (аккумулятор), ЕВХ (база), ЕСХ (счетчик), EDX (регистр данных) могут использоваться без ограничений для любых целей – временного хранения данных, аргументов или результатов различных операций. Названия регистров происходят от того, что некоторые команды применяют их специальным образом: так, аккумулятор часто необходим для хранения результата действий, выполняемых над двумя операндами, регистр данных в этих случаях получает старшую часть результата, если он не умещается в аккумулятор, регистр-счетчик работает как счетчик в циклах и строковых операциях, а регистр-база – при так называемой адресации по базе. Младшие 16 бит каждого из этих регистров применяются как самостоятельные регистры с именами АХ, ВХ, СХ, DX. На самом деле в процессорах 8086 – 80286 все регистры были 16-битными и назывались именно так, а 32-битные ЕАХ – EDX появились с введением 32-битной архитектуры в 80386.

Кроме этого, отдельные байты в 16-битных регистрах АХ – DX тоже могут использоваться как 8-битные регистры и иметь свои имена. Старшие байты этих регистров называются АН, ВН, СН, DH, а младшие — AL, BL, CL, DL (см.    рис.4.1).

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ — EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны).

Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров — CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением.

Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, — регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

TF – флаг ловушки. Он был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой программной команды управление временно передается отладчику.

IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF=0 – наоборот.

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

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

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

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды. Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды. Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов. Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды. АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память. Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

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

 

Режимы работы центрального процессора

 

В 1976 году фирма Intel закончила разработку 16-разрядного микропроцессора i8086. Он имел разрядность регистров 16 бит и системной шины адреса 20 бит, за счет чего мог адресовать до 1 Мбайт оперативной памяти.

В 1982 году был создан i80286. Этот микропроцессор представлял собой улучшенный вариант i8086. Он поддерживал уже несколько режимов работы: реальный, когда формирование адреса производилось по правилам i8086, и защищенный, который аппаратно реализовывал многозадачность и управление виртуальной памятью, i80286 имел также большую разрядность шины адреса — 24 разряда против 20 у i8086, и поэтому он мог адресовать до 16 Мбайт оперативной памяти. Первые компьютеры на базе этого микропроцессора появились в 1984 году.

В 1985 году фирма Intel представила первый 32-разрядный микропроцессор i80386, аппаратно совместимый снизу вверх со всеми предыдущими микропроцессорами этой фирмы. Он был гораздо мощнее своих предшественников, имел 32-разрядную архитектуру и мог прямо адресовать до 4 Гбайт оперативной памяти. Микропроцессор i386 стал поддерживать новый режим работы — режим виртуального i8086, который обеспечил не только большую эффективность работу программ, разработанных для i8086, но и позволил осуществлять параллельную работу нескольких таких программ.

В настоящее время микропроцессор с 32-битной Intel-архитектурой может работать в одном из четырех режимов:

  • реальный режим
  • системный режим
  • защищенный режим
  • режим виртуального i8086
Реальный режим (Real Mode)

После инициализации (системного сброса) центральный процессор находится в реальном режиме. В реальном режиме центральный процессор работает как очень быстрый i8086 с возможностью использования 32-битных расширений. Механизм адресации, размеры памяти и обработка прерываний (с их последовательными ограничениями) микропроцессор 8086 полностью совпадают с аналогичными функциями других микропроцессоров с 32-битной Intel архитектурой в реальном режиме.

Режим системного управления (System Management Mode).

В новых поколениях микропроцессоров Intel появился режим системного управления. Он предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже от операционной системы. Микропроцессор переходит в этот режим только аппаратно. Никакой программный способ не предусмотрен для перехода в этот режим. Микропроцессор возвращается из режима системного управления в тот режим, при работе в котором был получен соответствующий сигнал по команде RSM. Эта команда работает только в режиме системного управления и в других режимах не распознается, генерируя исключение #6 (недействительный код операции).

Защищенный режим (Protected Mode)

Защищенный режим является основным режимом работы микропроцессора. Ключевые особенности защищенного режима: виртуальное адресное пространство, защита и многозадачность. В защищенном режиме программа оперирует с адресами, которые могут относиться к физически отсутствующим ячейкам памяти, поэтому такое адресное пространство называется виртуальным. Размер виртуального адресного пространства программы может превышать емкость физической памяти и достигать 64Тбайт.

Виртуальный режим i8086 (V86)

В режим V86 процессор может перейти из защищённого режима, если установить в регистре флагов EFLAGS бит виртуального режима (VM-бит, бит 17). Когда процессор находится в виртуальном режиме, его поведение во многом напоминает поведение процессора i8086. В частности, для адресации памяти используется схема <сегмент:смещение>, размер сегмента составляет 64 килобайта, а размер адресуемой в этом режиме памяти — 1 мегабайт.  Виртуальный режим предназначен для работы программ, ориентированных на процессор i8086 (или i8088). Но виртуальный режим – это не реальный режим процессора i8086, имеются существенные отличия. Процессор фактически продолжает использовать схему преобразования адресов памяти и средства мультизадачности защищённого режима.

В виртуальном режиме используется трансляция страниц памяти. Это позволяет в мультизадачной операционной системе создавать несколько задач, работающих в виртуальном режиме. Каждая из этих задач может иметь собственное адресное пространство, каждое размером в 1 мегабайт.
Все задачи виртуального режима обычно выполняются в третьем, наименее привилегированном кольце защиты. Когда в такой задаче возникает прерывание, процессор автоматически переключается из виртуального режима в защищённый. Поэтому все прерывания отображаются в операционную систему, работающую в защищённом режиме.

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

Назад

Назад: Язык ассемблера

Добро пожаловать в Real Digital

  1. Микропроцессоры
  2. Тема: Режимы работы процессора

15782

Режимы процессора

Многие процессоры одновременно запускают более одного процесса. В многопроцессорной (или многопользовательской) системе каждый процесс получает контроль над процессором и его памятью, портами и устройствами ввода-вывода в течение ограниченного «отрезка» времени. По истечении отведенного ему отрезка времени каждый процесс должен отказаться от управления и праздно ждать, пока его запланированный отрезок времени не вернется снова. Контролирующее «системное» программное обеспечение (часто называемое операционной системой или ОС) планирует время для различных задач. Иногда каждый процесс получает одинаковое количество времени, а иногда процессы с более высоким приоритетом получают более длинные или более частые временные интервалы.

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

Чтобы помочь справиться с такими ситуациями, большинство процессоров имеют разные режимы работы, которые обеспечивают разные уровни «привилегированного» доступа к областям памяти, системным настройкам, периферийным устройствам и другим ресурсам. Как правило, режим с самым низким приоритетом — это «пользовательский» режим, который используется обычными приложениями/программами пользователя. Процессам, работающим в пользовательском режиме, можно запретить доступ к определенным областям памяти, определенным регистрам и определенным периферийным устройствам. Этот ограниченный доступ необходим для создания стабильной общей среды обработки.

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

ARM имеет несколько режимов работы, которые используются для различных целей:

  • Пользовательский режим — это основной режим, в котором работают прикладные программы. Пользовательский режим является единственным непривилегированным режимом и имеет ограниченный доступ к системным ресурсам. Как правило, процессор проводит более 99% своего времени в пользовательском режиме.
  • Системный режим обеспечивает неограниченный доступ ко всем системным ресурсам. В режим супервизора можно войти только определенными управляемыми способами (обсуждаемыми ниже), и обычно он включается только тогда, когда это необходимо для управления определенным ресурсом.
  • Режим супервизора также обеспечивает неограниченный доступ ко всем системным ресурсам. Режим супервизора включается при сбросе или включении питания, или когда программное обеспечение выполняет команду вызова супервизора (SVC). Режим супервизора аналогичен системному режиму, но предлагает доступ к еще нескольким регистрам.
  • Режим прерывания вводится, если программа пытается получить доступ к несуществующей ячейке памяти. Режим отмены также предлагает доступ к нескольким закрытым регистрам, недоступным для других режимов.
  • Неопределенный режим вводится для любых исключений, связанных с инструкциями, включая любую попытку выполнить нереализованную инструкцию.
  • Режим IRQ вводится в ответ на обычный запрос прерывания от внешнего устройства.
  • Режим FIQ вводится в ответ на запрос быстрого прерывания от внешнего устройства. Он используется для более быстрого обслуживания более срочных запросов.
  • Режим монитора доступен в некоторых реализациях для переключения между безопасным и незащищенным состояниями, а также для отладки.
  • Режим гипервизора доступен в некоторых реализациях для управления определенными расширениями виртуализации.

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

Режимы системы и супервизора позволяют системному программному обеспечению манипулировать регистрами состояния, быстрее реагировать на определенные исключения и справляться с непредвиденными условиями. Режимы IRQ и FIQ существуют для оптимизации реакции процессора на прерывания. Системный режим и режим IRQ используются регулярно (но временно) для доступа к определенным защищенным ресурсам, и эти режимы будут использоваться при инициализации и обработке прерываний. Другие режимы — это специальные режимы, которые редко используются в обычных операциях и далее здесь не описываются.

Режим работы определяется младшими пятью битами в CPSR (биты 4:0), как показано на рисунке со страницы B1-1139 AARM.

Рисунок 1. Режимы процессора (Справочное руководство по архитектуре Arm, стр. B1-1139)

ARM поддерживает несколько отдельных/дублирующих регистров, которые доступны только тогда, когда процессор работает в определенном режиме. Как показано в таблице ниже, пользовательский и системный режимы используют одни и те же регистры. Другие режимы имеют свои собственные локальные/частные SP, LR и PSR, а режим FIQ также имеет отдельные регистры R8-R12. Эти дублирующиеся регистры (включая дублирующие GPR в режиме FIQ) делают переключение режима и контекста более быстрым и эффективным, а также уменьшают объем работы, необходимой для правильного переключения контекста при смене режимов.

Рисунок 2. Регистры ARM

с R0 по R12 не дублируются ни в одном режиме, кроме FIQ. При входе в один из этих режимов, отличных от FIQ, возможно, в результате выполнения подпрограммы обработки исключений/прерываний, содержимое регистров должно быть сохранено в стеке, а затем восстановлено. В режиме FIQ есть отдельные регистры R8-R12, доступ к которым возможен только в режиме FIQ, поэтому эти регистры не нужно сохранять и восстанавливать (это позволяет быстрее обслуживать «быстрые прерывания»). Обратите внимание, что программное обеспечение, работающее в любом режиме, «видит» регистры, указанные в столбце Application View таблицы выше. Контроллер определяет, к какому регистру осуществляется доступ, комбинируя режим с адресом регистра. Так, например, программное обеспечение в режиме IRQ будет обращаться к SP как «R13» или «SP», точно так же, как программное обеспечение, работающее в пользовательском режиме, и SP в режиме IRQ будет использоваться автоматически (запись «SP_irq» в таблице только чтобы определить, что существует отдельный регистр).

APSR — это доступный только для чтения псевдоним CPSR. Иногда программному обеспечению необходимо записать данные в CSPR (например, чтобы изменить режим работы или включить прерывания). Поскольку CPSR нельзя изменить в пользовательском режиме, программное обеспечение должно перейти в режим супервизора, чтобы получить доступ для записи (в режим супервизора можно войти, выполнив инструкцию SVC или в определенных исключениях). В режиме супервизора для доступа к CPSR можно использовать две специальные инструкции перемещения (MRS и MSR). «MRS Rd, CPSR» будет считывать содержимое CPSR в Rd, а «MSR CPSR_n, Rd» может записывать новые значения в CPSR. Для целей записи CPSR разбивается на четыре байта, которые используют спецификаторы _f, _s, _x и _c для обозначения битов CPSR 31:24, 23:16, 15:8 и 7:0 соответственно (спецификаторы используются в место _n в инструкции, показанной выше). Это помогает предотвратить непреднамеренную перезапись битов в этом чувствительном регистре. Чтобы записать только младшие восемь бит CPSR, можно использовать инструкцию MSR CPSR_c. Для записи всех битов можно использовать MSR CPSR_fsxc.

Пользовательский режим и режим ядра — драйверы Windows

Обратная связь Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 2 минуты на чтение

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

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

Пользовательский режим

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *