2016-02-18 5 views
2

Что произойдет, если у вас есть запись в таблице страниц, которая отображает страницу в PPN, которая находится за пределами доступной ОЗУ на машине. Будет ли ошибка страницы или она просто игнорирует MSB рассчитанного адреса? Или что-то другое?Доступ к адресам за пределами доступной памяти

ответ

1

Я сделал что-то подобное раньше, когда я играл с ядром Linux, непреднамеренно, конечно. Во всяком случае, попытка доступа к физической странице, которая превышает ваш максимальный адрес, заставляет ядро ​​паниковать.

Более конкретно, ошибка страницы возникает, если ваша виртуальная страница недоступна в основной памяти и должна быть извлечена (заменена) с вашего жесткого диска. Или, если он доступен в основной памяти, но с разными правами доступа (доступно в основной памяти для чтения, и ваш запрос должен быть написан). В обоих случаях ОС обрабатывает этот запрос путем замены на странице, что дает вам доступ или убийство процесса запроса с ошибкой сегментации (пресловутый Segmentation fault (core dumped)). При запуске ядро ​​создает начальный и конечный PFN (номер кадра страницы) и заполняет таблицу страниц, поэтому в принципе невозможно, чтобы такие вещи случались.

Если по какой-то причине (что не должно произойти, если вы не манипулировали ядро) Ваша страница таблица содержит недопустимое PFN или ППН, это заставит ядро ​​паниковать и производить что-то вроде этого:

BUG: unable to handle kernel paging request at ffffea0df0668018 

Я не знаю о других ОС, но я думаю, что это то же самое. Но снова это не должно произойти, если в ядре не будет чего-то не так.

Смежные вопросы