@SergeySerge11

Какой тип виртуальной памяти Сегментная или Страничная, сейчас используется? Как утроена виртуальная память?

Бесповоротно запутался. В разных источниках по разному. И почти всегда начинается с того как было 50 лет назад устроено. Что только сбивает.
На виндовс, icore 5 процессоре вот сейчас, какой тип памяти работает. И какой тип виртуальной памяти на Risc 5 архитектурах. (Возможно вопрос вообще не корректный)

К примеру. сложности понимания. При страничной памяти, вроде типа самой продвинутой. Вот запускается программа. Что происходит. Типа создается процесс, в MMU в таблице страниц генерируется номер страницы PID>>24 + 0x4000000h адрес примерно. И заноситься в таблицу (https://ru.bmstu.wiki/MMU_(Memory_Management_Unit) ) Создаются типа страницы для данных. Окей
И вот тут вообще не понятно. А как программа вообще может в такой системе вызвать функцию из внешней библиотеки, то есть какой-то другой области памяти, ???? Или как 2 экземпляра программы могут ссылаться на 1
область?
Но любая программа в 2022 году дизассемблируется в сегмент: Адрес. То есть где сегмент тогда применяется тут.

Потом вот есть MMU, которое типа работает с страничной памятью. (И опять где там +cs +ss +ds сегменты используется, во всех форматах их чет не видно на входящих данных.)
Что за таблица дескрипторов. Где она находиться. так же в MMU? Как связана с таблицей страниц?
Что в конечном итоге храниться TLB буфере???? Там типа кэш физических адресов. Но во всех схемах, опять же я не нашел где там применяются сегментные регистры.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Чтобы прояснить картину адресации прочитай про линейный адрес и походи по ссылкам, ок?

На виндовс, icore 5 процессоре вот сейчас, какой тип памяти работает. И какой тип виртуальной памяти на Risc 5 архитектурах.

Забудь про сегментную организацию, она есть только в семействе x86, была сильно урезана в x86_64 и в современных ОС почти не используется.

Вот запускается программа. Что происходит. Типа создается процесс, в MMU в таблице страниц генерируется номер страницы PID>>24 + 0x4000000h адрес примерно. И заноситься в таблицу (https://ru.bmstu.wiki/MMU_(Memory_Management_Unit) ) Создаются типа страницы для данных. Окей

Это какое-то странное описание, особенно часть PID>>24 + 0x4000000h, это вообще что?
Если программа получает новое адресное пространство, то оно изначально пустое, программа ни с кем его не делит. Есть вот такая книжка про организацию памяти в linux: https://pdos.csail.mit.edu/~sbw/links/gorman_book.pdf Рекомендую ознакомиться с главой 4.

как программа вообще может в такой системе вызвать функцию из внешней библиотеки

первым делом программа загружает внешнюю библиотеку в своё адресное пространство. Дальше уже понятно?

Что за таблица дескрипторов. Где она находиться.

Находится где-то в физической памяти. Определяет свойства, размеры сегментов и в какие линейные адреса преобразуются логические адреса внутри этих сегментов. Если ты прочитал про линейные адреса эта часть должна тебе быть понятна. В современных ОС все процессы используют один и тот же селектор для кода и один и тот же селектор для данных, а логические адреса cs:0 ds:0 es:0 и ss:0 транслируется в линейный адрес 0. Это называется "плоская модель памяти".

Как связана с таблицей страниц?

Никак. Совершенно ортогональная структура, может работать даже когда страничная адресация выключена.

Что в конечном итоге храниться TLB буфере????

Мэппинг "линейный адрес" -> "физический адрес".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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