объяснение

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

Виртуальный используется процессами. Там нет предела (кроме одного из-за размера указателя). Чтобы получить больше памяти, программа просто запрашивает ее (игнорируя, какую сумму можно запросить). Каждый адрес сопоставлен с разными физическими адресами.
Вот как процесс ограничен в том, что они могут читать из оперативной памяти.

Эта проблема

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

Таким образом, если чтение из-за ограничений (из-за уязвимости) происходит во время выполнения системного вызова в коде ядра. Может ли он вернуть память от других процессов?

2 ответа2

0

Код режима ядра может делать практически все, что захочет, включая отслеживание адресных пространств различных процессов.

Да, код режима ядра использует виртуальное адресное пространство. Ядро управляет физическим адресным пространством, но не работает в физическом адресном пространстве.

Пользовательский режим не может читать все, что он хочет, из ОЗУ, потому что у него нет возможности утверждать физические адреса.

Поскольку режим ядра работает с включенной трансляцией адресов, код режима ядра также может утверждать только виртуальные адреса. Но код k-mode может настроить записи таблицы страниц для определения виртуальных адресов, которые переводятся на любые физические адреса, к которым он может обратиться.

-1

Те системные вызовы, которые вызывает ядро, используют физическое адресное пространство.
Те системные вызовы, которые вызываются процессами, используют виртуальное адресное пространство.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .