OSDev
http://osdev.su/

переключение страничных режимов
http://osdev.su/viewtopic.php?f=6&t=857
Страница 1 из 1

Автор:  dixie [ 23 янв 2014, 12:27 ]
Заголовок сообщения:  переключение страничных режимов

Вопрос забавный - никто не пробовал переключаться - между 32битным и PAE страничными режимами "на лету"?
Дока гордо сообщает, что "так можно"...
Ну вот поставил я бит в CR4 - процессор радостно ломанулся перечитывать CR3 по правилам PAE - т.е. PDPTE оттуда читать - и что? Тройное исключение и ребут? ;)

Вопрос, в общем, академический - делал для полуоси драйвер рамдиска в памяти выше 4Gb, но методом "заката солнца вручную" - т.е. cli->выключение 32битных страниц->включение PAE->копирование->тож самое в обратном порядке... И, в общем, оно даже не медленно, но что именно интел имел в виду этим своим "можно"?

Автор:  418ImATeapot [ 23 янв 2014, 15:36 ]
Заголовок сообщения:  Re: переключение страничных режимов

dixie писал(а):
Вопрос забавный - никто не пробовал переключаться - между 32битным и PAE страничными режимами "на лету"?
Дока гордо сообщает, что "так можно"...
Ну вот поставил я бит в CR4 - процессор радостно ломанулся перечитывать CR3 по правилам PAE - т.е. PDPTE оттуда читать - и что? Тройное исключение и ребут? ;)

А смысл?

Автор:  dixie [ 23 янв 2014, 21:33 ]
Заголовок сообщения:  Re: переключение страничных режимов

Что смысл? Переключаться напрямую?
Ну так, может, упростить процесс где-ньть можно... Из страничного-то выйти в работающей 32-битной системе - уже процесс интересный...

Автор:  Himik [ 23 янв 2014, 23:32 ]
Заголовок сообщения:  Re: переключение страничных режимов

dixie писал(а):
Ну вот поставил я бит в CR4 - процессор радостно ломанулся перечитывать CR3 по правилам PAE - т.е. PDPTE оттуда читать - и что? Тройное исключение и ребут? ;)

Наверно подразумевается, что перед установкой бита CR4.PAE ты таблицу PD32 перезапишешь таблицей PDPTE (предварительно сохранив копию PD32 в другом месте). Надо было привести абзац текста, чтобы было понятней о чём там написано.

Автор:  dixie [ 25 янв 2014, 17:55 ]
Заголовок сообщения:  Re: переключение страничных режимов

Угу
Цитата:
Software can make transitions between 32-bit paging and PAE paging by changing the value of CR4.PAE with MOV to CR4.
и всё.

Ну, т.е. - записать в первые 8 входов page dir - данные PDPTE и переключать CR4? Это ж переключение надо за пределами 32 мегов держать - на всякий пожарный.... Кривовато оно как-то, мягко говоря ...

Автор:  phantom-84 [ 26 янв 2014, 10:52 ]
Заголовок сообщения:  Re: переключение страничных режимов

...за пределами 32 мег ВАП. С учетом того, что ядро располагается в верхней части ВАП, это нормально. После того, как я отключаю тождественное преобразование в начале ВАП, user space все равно превращается в одну большую "hole" - делай там все, что хочешь (почти).

Автор:  dixie [ 26 янв 2014, 12:48 ]
Заголовок сообщения:  Re: переключение страничных режимов

Ну да, сам драйвер в первые 32 метра линейных не попадёт... Т.е., возможно, в принципе.
Но не факт, конечно, что errat-у какую-ньть не огребешь на таком редком методе ;)

Автор:  phantom-84 [ 26 янв 2014, 17:51 ]
Заголовок сообщения:  Re: переключение страничных режимов

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

dixie писал(а):
и всё.
Кстати, не все. Я нашел в руководстве схему, подтверждающую возможность такого переключения (в имеющейся у меня версии она находится в п. 4.1.2 Paging-Mode Enabling).

Автор:  dixie [ 27 янв 2014, 12:02 ]
Заголовок сообщения:  Re: переключение страничных режимов

phantom-84 писал(а):
Ну, мне пока не приходило в голову использовать такой способ переключения. Для этого в момент переключения должны присутствовать таблицы страниц сразу двух типов :shock:
Ну тут задача довольно специфичная и помогает то, что драйвер диска получает буфер для данных в виде списка физ.адресов... Поэтому в PAE намаплено линейно, большими страницами....

Цитата:
Я нашел в руководстве схему, подтверждающую возможность такого переключения (в имеющейся у меня версии она находится в п. 4.1.2 Paging-Mode Enabling
Ага, это из этого же раздела цитата... ;)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/