170 похожих чатов

Народ, а это правда что в современных процессорах интел и

амд нет возможности обращаться к памяти по физическим адресам и обязательно нужно засетапить виртуальную память с маппингом виртуальных страниц на физические?
Вот я нашел такой ответ https://stackoverflow.com/questions/70609634/is-it-possible-to-enter-long-mode-without-setting-up-paging и эту тему на одном форуме https://forum.osdev.org/viewtopic.php?f=15&t=33816&start=0
Если это правда то это ппц полный. Как-то давно после просмотра этого доклада (https://www.youtube.com/watch?v=dFquxC6qTSA) я думал "ну что поделать - такую цену мы платим за изоляцию процессов друг от друга" но при этом я почему-то всегда предполагал что если тебе эта изоляция не нужна и у тебя есть скажем высоконагруженное приложение которое оккупирует всю железку (например база данных) то у тебя всегда есть возможность выбросить операционную систему с ее абстракцией виртуальной памяти и запустив приложение на голом железе в неком ring-0 режиме и дальше работать с физической памятью напрямую.
А сейчас оказывается что это невозможно и обязательно нужно засетапить маппинг виртуальных страниц даже если виртуальные адреса будут 1-к-1 маппиться на физические. И суть проблемы не в сложности сетапа этих страниц сколько в производительности - после несложного подсчета получаем что TLB кеши в современных процессорах покрывают десяток, максимум сотню гигабайт (да и то с дополнительной задержкой эквивалетной L2/L3 кешу) и получаем что на оперативке объемом несколько терабайт >95% запросов к памяти будет сопровождаться несколькими дополнительными запросами в память из-за TLB-промаха после которого начинается тормозной page-walk процесс

34 ответов

13 просмотров

не переключай процессор в защищённый режим, и обращайся по физическим адресам

Посмотрите, если интересно, как реализована работа hugepagеs в DPDK, они там решают похожий вопрос

Богдан- Автор вопроса
Denis P
не переключай процессор в защищённый режим, и обра...

в том то и проблема что судя по ссылкам которые я привел выше это невозможно

Да. Для long mode - paging обязателен, в отличие даже от protected

Богдан- Автор вопроса
Dmitriy [Отпуск]
Да. Для long mode - paging обязателен, в отличие д...

Кстати я тут встретил еще один режим процессора - SMM. Кто-нибудь знает - может в этом режиме можно отключить paging и обращаться сразу по физическим адресам к оперативке?

Dmitriy [Отпуск]
А как жить без long mode?)

ну изначальный вопрос был кажется как обращаться по физическим адресам без трансляции)

Богдан
Кстати я тут встретил еще один режим процессора - ...

В этом режиме Ваш код исполняться не будет.

Богдан
Почему?

потому что он недостижим для пользователя, и доступен только интелу

Богдан
Почему?

потому что вы не пишете OS

Boris Usievich
потому что вы не пишете OS

кажется это на уровень ниже ос)

Богдан- Автор вопроса

Я где-то встречал на хабре статью где рассказывалось как написать UEFI-приложение где можно написать какой-то хендлер прерывания который будет испольняться в SMM режиме

Богдан
Я где-то встречал на хабре статью где рассказывало...

Во-первых, это уязвимости. Во-вторых, оно адресовать всю память не может - TSEG поддерживает максимум 8мб :)

Конечно не обязательно, можно и по физической напрямую.

feedable
как

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

Berkus Decker
Просто не включай маппинг в мму. Это будет гораздо...

как его не включить ткни в нужные регистры

Dmitriy [Отпуск]
Адресовать терабайты напрямую?)

Терабайтов тоже не будет. Будет ровно столько адресного пространства сколько у тебя ОЗУ. Минус девайсы и прочая легасятина.

feedable
как его не включить ткни в нужные регистры

Бит 0 в cr0 кажется. Long mode тебе очевидно не нужен.

ТС хочет напрямую пользоваться >64 Гб физической памяти

Dmitriy [Отпуск]
ТС хочет напрямую пользоваться >64 Гб физической п...

нужно ещё учитывать, что на современных машинах не вся физическая память идёт по непрерывным адресам ;)

Богдан- Автор вопроса

А как это сделать? По этой ссылке https://stackoverflow.com/questions/70609634/is-it-possible-to-enter-long-mode-without-setting-up-paging есть такой ответ Paging is required for long mode, you cannot enter long mode without setting up 4-level or 5-level paging first. See volume 3A section 9.8.5 of the Intel manual. Specifically, the transition check is made right when enabling paging setting CR0.PG to 1, which checks if both CR4.PAE and IA32_EFER.LME are set, and if so enters IA32-e mode (Intel's name for "long mode").

Богдан
А как это сделать? По этой ссылке https://stackove...

Не переходить в long mode, очевидно же.

Denis P
не переключай процессор в защищённый режим, и обра...

Не надо переключать в лонгмод, но тогда будет ограничение в 4 гига

feedable
потому что он недостижим для пользователя, и досту...

Он доступен только вендорам железяк, в основном материнок

Denis P
кажется это на уровень ниже ос)

Это даже круче чем гипервизор

disba1ancer
Это даже круче чем гипервизор

это в целом хардварный гипервизор, ну можно назвать второго уровня но на самом деле пофиг

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Карта сайта