какие регистры меняются при переходе из режима пользователя в режим ядра ?! и в чем причина перехода в режим ядра?

какие регистры меняются при переходе из режима пользователя в режим ядра ?! и в чем причина перехода в режим ядра?

почему эти причины не являются причиной перехода в режим ядра:

  1. создать нового администратора с правами суперпользователя или администратора
  2. Если я получаю пропущенный TLB, почему мы не переходим в режим ядра
  3. когда мы записываем в битовую страницу, измененную в таблицах страницы

-2

Решение

Из ваших вопросов я обнаружил, что вы очень бедны в понятиях операционной системы.
Хорошо, позвольте мне объяснить, (я предполагаю, что вы используете Linux, а не Windows).

«какие регистры изменяются при переходе из режима пользователя в режим ядра?» Чтобы узнать ответ на этот вопрос, вам необходимо узнать об управлении процессами.
Но я могу просто сказать, что Linux использует интерфейс системных вызовов для перехода от пространства пользователя к пространству ядра. Интерфейс системного вызова использует некоторые регистры (на основе вашего процессора) для передачи номера системного вызова и аргументов для системного вызова.

0

Другие решения

В общем случае переход в режим ядра происходит, когда

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

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

0

msgstr «какие регистры меняются при переходе из режима пользователя в режим ядра ?!»

В типичной архитектуре на основе x86 с ядром linux происходит следующее:

  1. программа запускает прерывание 0x80 по инструкции: int $ 0x80
  2. CPU изменит регистр счетчика программы & селектор кода для ссылки
    место, где в памяти существует обработчик системного вызова linux (linux применяет виртуальный
    концепция памяти).
  3. До сих пор затрагиваются регистры: регистр CS, EIP и EFLAGS. процессор также меняется
    Селектор стека (SS) и указатель стека (ESP) для обозначения вершины стека ядра.
  4. Наконец, ядро ​​меняет Выбор данных и Дополнительный выбор данных (DS & ES) для
    выберите сегмент данных режима ядра.
  5. Ядро должно поместить программный контекст в стек ядра и общее назначение.
    регистры (например, аккумуляторы) изменятся из-за выполняемого кода ядра.

Как видите, все зависит от операционной системы и архитектуры.

«а в чем причина перехода в режим ядра?»

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

Ядро, конечно, должно работать в режиме ядра (по крайней мере, ядро ​​ядра). Например, прикладное программное обеспечение может потребовать записи данных в файл на диске. прикладное программное обеспечение не имеет доступа к диску (потому что оно работает в пользовательском режиме). единственный способ добиться этого — вызвать ядро ​​(которое работает в режиме ядра) для выполнения этой работы. Вот почему вам нужно перейти из режима пользователя в режим ядра и наоборот.

0
По вопросам рекламы [email protected]