@sddvxd

Как windows выделяет память для процессов?

Здравствуйте! Нужно было разобраться с устройством DLL файлов, их проецированием в память - начал читать Джеффри Рихтера. Все шло хорошо, пока не добрался до виртуальной памяти. Материал стал очень плохо идти, почти ничего не понимаю.
Может кто скинуть ресурсы про виртуальную память, как она взаимодействует с ОЗУ и инструкции по взаимодействию ко всему этому через WinAPI
  • Вопрос задан
  • 658 просмотров
Решения вопроса 4
Jump
@Jump Куратор тега Windows
Системный администратор со стажем.
как она взаимодействует с ОЗУ и инструкции по взаимодействию ко всему этому через WinAPI
В таком контексте - никак.

Все программы работают с виртуальной памятью - другой нет.
А уже сама ОС решает как взаимодействовать с реальным хранилищем данных, будь то планка ОЗУ, или файл подкачки. И вы не можете никак на это влиять.

Задача Windows как раз и стоит в том чтобы полностью изолировать вас от таких вещей как ОЗУ.
Ответ написан
Комментировать
ApeCoder
@ApeCoder
Я бы посоветовал книжку "Windows Internals" Марка Руссиновича. Там описан процесс выделения памяти и вообще Memory Manager.

Так же стоит ознакомиться с тем как это делает процессор. Например вот описание

Почитать справку по функциям VirtuallAllocEx, VirtualLock и вокруг
Ответ написан
Комментировать
@diadiafiodor
какой-то человек с улицы
Насколько я могу судить, с oc windows сложилась крайне маразматическая ситуация из-за политики кампании согласно которой они не могут разглашать данные об архитектуре системы, это секрет Полишинеля, но, поскольку все многозадачные ОС более или менее похожи, об архитектуре операционных систем вы можете осведомиться у конкурентов, например есть русский автор Сергей Дунаев, который прекрасно освещает тему памяти в юниксподобных системах тут после прочтения раздела посвященного свопингу для вас не составит большого труда понять что значит
размер страничного файла и т.д.
потому что там все разжевано.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Виртуальная память реализуется аппаратно-программным способом, т.е. без поддержки процессора не обойтись, поэтому ОС тут вовсе не "законодатели мод", а всего лишь используют подход предложенный разработчиками железа. Конечно, писатели осей могут то же поучаствовать в процессе проектирования железа и часто так и происходит, даже можно предположить, что сама виртуальная память появилась именно из-за хотелок разработчиков ОС. Этот подход принципиально одинаков что в винде что в линуксе для интеловских процов, т.к. диктуется спецификацией процессора, естественно разные реализации, но делают они одно и то же.
Поэтому смело можете читать по этому поводу литературу о том как работает линукс с виртуальной памятью (если найдете), в общих чертах винда работает так же.
Так же можно читать интеловскую документацию.
Но, на самом деле, если вы не собираетесь разрабатывать ядра ОС, достаточно понимать в общих чертах как это работает.

Вообще Рихтер хорошо пишет, попробуйте перечитать :-)

Виртуальная память не "взаимодействует с ОЗУ" - ОЗУ неотъемлемая часть виртуальной памяти.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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