Реальная память - это ОЗУ, жесткий диск, и т.д.
Виртуальная память - память которая "выделяется самой системой" (условно), если для выполнения программы, памяти ОЗУ недостаточно
Процесс "выделения" предполагает игру по "правилам". Тоесть ты обращаешся к некому менеджеру памяти и говоришь - дай мне 32 байта. Менеджер находит доступный кусочек и возвращает тебе указатель на выделенное.
Если играть не по правилам. Тоесть не уведомлять менеджер о том что ты что-то где-то использовал, то рано или поздно будет конфликт. Два процесса независимо друг от друга в мультизадачной среде будут читать и писать в общую память. Какие будут последствия - трудно представить.
никак.
если мне не изменяет память пользовательский процесс в винде (да и в линуксе) не имеет прямого доступа к реальной памяти, для него предоcтавляется линейная непрерывная виртуальная память через аппаратный MMU + TLB.
и почемуто помнится что драйвер уровня ядра может работать с реальной памятью
Ну, даже в пространстве ядра все равно аювиртуальная память, что в линуксе, что в винде. И если хотим кусочек памяти, например устройства, для доступа по DMA, то нужно специально попросить блок mmu, чтобы он трарслировал какой-то кусочек виртуальной памяти в реальные адреса. А в пространстве пользователя можно аллокировать невытесняемый кусочек памяти.
И если хотим кусочек памяти, например устройства, для доступа по DMA, то нужно специально попросить блок mmu, чтобы он трарслировал какой-то кусочек виртуальной памяти в реальные адреса.