Re[13]: Конец интел?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.09.24 04:47
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

N>>Поэтому это просто красивый пшик...


PD>Ну не совсем. Да, в итоге будет 32 бита. Но limit в дескрипторе не отменен, и если он не 4Г, то нарвешься не на page fault, а на general protection fault. А так да, в итоге 4 Г, конечно


Формально, GPF — это термин Windows, и распространяется он на оба случая. В процессоре есть разница между #GP (13) и #PF (14). Но это я уже придираюсь к терминам.
Но важнее тут именно то, что при наличии страничной защиты, и активном нежелании программистов бодаться со сложной структурой адресации (вместо одной плоской) — этот механизм тут же перестал использоваться, как только появилась первая возможность. В книгах по тому, как переходить с программирования под Win16 — под Win32, это было написано английским (или переведённым) по фоновому много раз.

N>>Не просто можно, а это постоянно и делали. Если у тебя все страницы со старшим битом линейного адреса равным 0 (если вообще существуют) имеют права доступа пользователя, а 1 — супервизора. Сейчас в 64 битах повторяется то же самое с поправкой на используемую длину виртуального (линейного) адреса (48 или 57 бит).

PD>Это если со старшим. А если сегменты как я нарисовал, то так не получится.

Так сегменты в таком виде немедленно перестали использовать. Кому оно такое нужно?

А схема "старшая половина — супервизору" — не знаю кто первый придумал, но в VAX она была закреплена в железе. (Точнее, там было просто 3 квадранта (один в резерве) и каждый под любое, и формально могли их переставить наоборот, но никто так не делал.) А вслед за ним это начали делать чуть менее чем все.

N>>А то, что ты показал считалочку с сегментами — "перемножается" на это: имеют значение в итоге минимальные права из двух источников. Если тебе дали сегмент с правом доступа юзера (ring 3) но на адрес, через страничный механизм доступный только супервизору (считаем, ring 0) — всё, доступа нет.


PD>Насчет доступа — согласен, а в остальном все остается. Лежат себе в 32-битном пространстве 1 Мб куски с правами S и U вперемежку. Почему лежат — а так LDT настроили. И не получится никакого разделения АП на U/S части. А запретить нельзя.


Неее, ну так можно и на страничной схеме сделать. Вот устроим чередование, что каждый следующий мегабайт — другого доступа. Можно? Можно, DAT с его каталогами страниц по 4KB такое позволяет в полный рост. Но зачем? Опять троллейбус из буханки?

Во многих версиях ОС, на самом деле, к супервизору относилась не только старшая половина, но и первые (индекс 0) 4MB. Потому что 1) было удобно идемпонентно отражать первый мегабайт, у которого спец. функции, 2) удобно делать это цельным подкаталогом, 3) NULL должен был давать исключение. Но потом от этого в основном ушли.

Так что, повторюсь, можно. И даже удобнее, если вдруг кому надо, это делать на страничном механизме, чем на сегментации. Но — в обоих никому не нужно. Вот сегментация и умерла.

N>>Да, эта сегментная хрень по факту легаси и уже не использовалась никем в здравом уме и твёрдой памяти — именно поэтому AMD в long mode просто вырубило нафиг это, ничего не потеряв. Да, у дескриптора остаётся DPL, которое задаёт, с какими правами вообще это исполнять (kernel vs. user), и L (исполнять в 32 или 64 битах). Остальные бесполезны.


PD>Конечно, не использовалась. Но не могла фирма Intel не дать возможность ее использовать. Даже если понимала, что никому не понадобится — все равно обеспечить возможность должна была дать.


Реально они могли отменить это не на 64 битах (как AMD позже), а уже на 32. Но на это им не хватило решительности.

N>>Меня в этом удивило именно то, что "с виртуальными машинами".


PD>Вот это я точно помню. Помню (не дословно) и текст. Примерно так — хотели отказаться от сегментных регистров, но разработчики виртуальных машин столкнулись с непреодолимыми трудностями.


Если найдёте откуда, прошу закинуть сюда.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.