Имеют ли современные компьютерные системы (архитектура x86) виртуальные адреса независимо от ОС? - PullRequest
0 голосов
/ 29 июня 2019

Извините, если этот вопрос звучит немного запутанным или перемешанным, но я чувствую некоторую путаницу по поводу этой концепции.

Что мне интересно, если бы я написал ядро ​​для «голого» компьютерного оборудования в C / Assembly, смог бы я использовать виртуальную адресацию?Я искал исходный код для ядер, и он, кажется, использует виртуальную адресацию, но как это возможно?Разве таблица страниц не реализована ОС?

Спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 01 июля 2019

«Современные архитектуры» имеют MMU , но небольшие контроллеры, например, Arduino , не имеют.Если вы посмотрите на исходные коды ядра Linux, у него есть реализации для архитектур MMU и no-MMU .

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

0 голосов
/ 30 июня 2019

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

...