Страницы

Поиск по вопросам

вторник, 12 февраля 2019 г.

какую модель памяти сегментную или страничную использует windows, linux, macos?

При прочтении Таненбаума возникли сложности с пониманием организации памяти в ОС. Какая модель используется в современных ОС? Сегментная, страничная, сегментно-страничная? В частности привело смущение сказанное про компиляторы, что для них использование сегментной организации памяти гораздо удобнее, но компилятор же запускается в ОС. Это и запутало. Как я понимаю как работать с памятью реализовано в ОС, но разве программа может изменить этот способ?


Ответ

В современных ОС используется либо страничная, либо сегментно-страничная организация памяти. Сегментная не выгодна с точки зрения рациональности использования физической памяти (возможна фрагментация).
За всю работу по переводу логического адреса в физический ответственна аппаратура ( MMU ), а за формирование правил и таблиц по которым будет осуществлен перевод - ОС.
То есть, компилятор (и любая другая программа) не может перейти в другой режим адресования.
С точки зрения прикладной программы, она (программа) находится в линейном адресном пространстве размером около 2Гб (для 32 битной windows), так как, 2 ГБ виртуального адресного пространства занимает код ОС, драйверов и DLL.
Хочу заметить, что виртуальный адрес не имеет ничего общего с физическим
Очень утрированно процесс управления памятью показан на картинке ниже:

Комментариев нет:

Отправить комментарий