Страницы

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

понедельник, 6 января 2020 г.

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

#linux #windows #macos #память


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


Ответы

Ответ 1



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

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

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