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 ответов

20 просмотров

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

Посмотрите, если интересно, как реализована работа 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
как

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

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").

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

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

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

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

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

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

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

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

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта