Я разрабатываю операционную систему на C и борюсь за пейджинг.Я тестирую свою кучу ядра в цикле, выделяя память и выводя низкоуровневый вывод выделения памяти, который обрабатывает физическое и виртуальное распределение страниц.
Когда PDE 0
, все прекрасно работает для страниц 0-1023
, но каккак только распределение переходит на PDE 1
, возникает ошибка страницы с установленным текущим флагом, а иногда и с флагом rw
, если я начинаю выделять с другого физического адреса.
Нужно ли мне получатьошибочный адрес из cr2
и сопоставить его с PDE
и страницей, к которой он принадлежит, а затем установить или адрес с 3?После этого мне нужно перезапустить инструкцию, но как мне это сделать?Есть предложения?