Пространство виртуальной памяти ядра и пространство виртуальной памяти процесса - PullRequest
1 голос
/ 05 февраля 2020

Я читал учебник «Компьютерные системы: взгляд программиста» в главе 9.7.2: Linux Система виртуальной памяти (третье издание), в которой говорится о виртуальной памяти.

Я был немного смущен структура виртуальной памяти для процесса linux, как показано ниже:

memory schematic

Мой вопрос таков: сохраняет ли виртуальная память ядра работу ядра и оставшуюся часть сохранить виртуальную память для пользовательского процесса? Что делает код ядра и данные? А что значит физическая память в виртуальной памяти ядра?

1 Ответ

1 голос
/ 05 февраля 2020

сохраняет ли виртуальная память ядра для работы ядро, а остальную часть виртуальной памяти сохраняет для пользовательского процесса?

Да, часть виртуальной памяти всегда резервируется для ядро и другая часть, которая остается доступной для процессов пользовательского пространства. Каждый отдельный процесс имеет собственную виртуальную память, но ядро ​​всегда отображается в верхнюю часть (более высокие адреса) виртуальной памяти. То, является ли это отображение видимым для процесса, зависит от Изоляция таблицы страниц ядра .

См. Также: Содержат ли виртуальные адресные пространства всех процессов одинаковое содержимое в своих Части «ядра»?

Что делают код и данные ядра?

Часть высокой виртуальной памяти является прямым отображением действительного образа ядра. То есть исполняемый файл ядра и все его данные. Вы можете увидеть это более подробно здесь на этой странице документации ядра, помеченной как "отображение текста ядра, сопоставленное с физическим адресом 0" .

См. Также : Какая польза от наличия части ядра в пространстве виртуальной памяти Linux процессов?

А что означает физическая память в виртуальной памяти ядра?

Эта часть изображения вводит в заблуждение. Я не знаю точно, какую информацию пытались донести авторы книги, но физическая память определенно не является частью виртуальной памяти ядра. Вероятно, они пытались учесть тот факт, что существует прямое отображение всей физической памяти в виртуальной памяти ядра, что можно снова увидеть на той же странице документации ядра, помечен как «прямое отображение всей физической памяти» .

Под физической памятью понимается реальная память системы (т.е. ОЗУ). Каждая область виртуальной памяти сопоставляется с некоторой областью физической памяти. Это виртуально-физическое отображение полностью прозрачно для процессов и управляется ядром. Например, два исполняемых файла, в которых один и тот же файл открыт в режиме только для чтения, обычно совместно используют одну и ту же область памяти физическая , в то время как видят два разных адреса virtual .

Это более точное описание взаимосвязи между виртуальной и физической памятью:

virtual memory mapping

Источник: https://computationstructures.org/lectures/vm/vm.html

...