Чтобы прояснить картину адресации прочитай про
линейный адрес и походи по ссылкам, ок?
На виндовс, 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 буфере????
Мэппинг "линейный адрес" -> "физический адрес".