Я хочу знать точную концепцию виртуального адреса

#operating-system

#операционная система

Вопрос:

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

Ответ №1:

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

Для реализации концепции на 80×86; виртуальные адреса преобразуются в линейные адреса с использованием сегментации, затем линейные адреса преобразуются в физические адреса с использованием подкачки. Однако; сегментацию можно настроить так, чтобы «virtual = linear» (установив базы сегментов равными нулю, а ограничения сегментов максимальными, в том числе в 64-разрядном коде, если FS и GS настроены так, что они ничего не делают); и подкачка страниц может быть отключена, что приведет к «linear = physical»; и если ни сегментация, ни подкачка страниц не используются, вы получите «virtual = linear = physical».

Большинство операционных систем для 80×86 не используют сегментацию, но используют подкачку; поэтому виртуальные адреса могут быть описаны как линейные адреса для большинства операционных систем (и большинства приложений) на 80×86; но «технически могут» не является веской причиной для усиления путаницы, и почти никто не назвал бы их линейными адресами (вместо виртуальных адресов) без причины — обычно вы видите слово «линейный», используемое, только если разница может иметь значение.

Что касается логических адресов, я понятия не имею, где вы это видели, и без контекста я бы (правильно или неправильно) предположил, что это связано с пространством хранения и не имеет ничего общего с памятью (например, «адрес логического блока» в качестве альтернативы «адресации цилиндра, головки, сектора» для старых жестких дисков).

Комментарии:

1. selector:offset Пара, или дальний указатель, на x86 является логическим адресом (см. Руководство intel). Виртуальные и линейные адреса являются синонимами на x86, причем первый более убедительно указывает на то, что трансляция страниц включена.

Ответ №2:

Три основных понятия, которые вам нужно знать:

Физическое — реальное конкретное устройство

Логическое — перенаправление на устройство

Виртуальное — имитируемое устройство

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

У вас может быть виртуальная память, доступ к которой осуществляется по логическим адресам.