Адресное пространство памяти ядра - PullRequest
1 голос
/ 20 февраля 2011

Я читал, что в 32-разрядной системе с системной памятью 4 ГБ 2 ГБ выделяется для пользовательского режима, а 2 ГБ выделяется для режима ядра. Но если бы у меня была система с 512 МБ памяти, была бы она разделена как 256 МБ для пользователя и 256 МБ для адресного пространства ядра?

Ответы [ 3 ]

2 голосов
/ 20 февраля 2011

Вы путаете физическую и виртуальную память.2 ГБ выделяется пользователю / системе, но это виртуальная память.Еще правильнее будет сказать, что они не распределены, а составляют пространство адресации.Изначально это пространство вообще не связано с физической памятью.Когда приложению действительно требуется память (при первом запуске) выделяется физическая память, и некоторые адреса из адресного пространства сопоставляются с ней.Когда память выделена, но не используется достаточно долго, или на ПК не хватает физической памяти, данные могут быть выгружены в файл подкачки и оставаться там до запроса.Это отображение прозрачно для приложения и не имеет представления, где находятся данные: на чипе или на жестком диске.Таким образом, адресное пространство всегда разделяется одинаково.

0 голосов
/ 20 февраля 2011

Речь идет не о памяти (физической или виртуальной), а об адресном пространстве.

Вы можете подключить 16 ГБ физической памяти к вашему компьютеру и создать файл подкачки объемом 100 ГБ, но 32-разрядная (не корпоративная) Windows по-прежнему будет отображать только 4 ГБ (и вычитать 0,75 ГБ для памяти графического процессора и тому подобное). Через PAE он может использовать больше, но не корпоративные версии этого не сделают.

Помимо фактического объема памяти , имеется адресное пространство, которое также ограничено 4 ГБ. По сути, это не больше и не меньше, чем набор «чисел» (которые в данном случае являются адресами), которые могут быть представлены 32-битным числом. Так как ядру также понадобится память, то будет проведена некоторая произвольная линия, которая оказывается на границе 2 ГБ для 32-битной Windows, но также может быть настроена по-другому.

не имеет никакого отношения к объему памяти на вашем компьютере (виртуальному или физическому), но это ограничивающий фактор того, сколько памяти вы можете использовать в одном экземпляре программы. Однако не является ограничивающим фактором для памяти, которую могут использовать несколько программ.

0 голосов
/ 20 февраля 2011

Насколько я могу судить, вы имеете в виду ограничения того, сколько памяти можно выделить . Это сильно отличается от того, сколько памяти выделено ОС во время выполнения.

...