Когда говорят, что в память загружаются 3 программы (исполняемые файлы), макет может выглядеть примерно так:
alt text http://img97.imageshack.us/img97/3460/processesm.jpg
У меня есть следующие вопросы:
-
Является ли понятие виртуальной памяти ограничено пользовательскими процессами? Потому что, мне интересно, где находится ядро операционной системы, драйверы? Как его макет памяти? Я хочу узнать больше о памяти ядра. Я знаю, что его конкретная операционная система делает ваш выбор (windows/linux).
-
Является ли концепция виртуальной памяти на каждый процесс? Я имею в виду, правильно ли мне сказать 4 ГБ процесса1 + 4 ГБ процесса2 + 4 ГБ процесса3 = 12 ГБ виртуальной памяти (для всех процессов). Это звучит не так. Или из всего 4 ГБ пространства 1 ГБ берется ядром, а остальные 3 ГБ - это общий доступ к всем процессам.
-
Говорят, на 32-битной машине в адресном пространстве 4 ГБ. Половина его (или совсем недавно 1 ГБ) занята ядром. На этой диаграмме я вижу, что "Виртуальная память ядра" занимает 0xc0000000 - 0xffffffff (= 1 ГБ). Они об этом говорят? Или что-то еще? Просто хочу подтвердить.
-
В чем точно содержит
Kernel Virtual Memory
каждого из этих процессов? Каков его макет? -
Когда мы делаем IPC, мы говорим об общей памяти. Я не вижу никакой памяти, разделяемой между этими процессами. Где он живет?
-
Ресурсы (файлы, реестры в окнах) являются глобальными для всех процессов. Таким образом, таблица описаний ресурсов/файлов должна находиться в некотором глобальном пространстве. В какой области это будет?
-
Где я могу узнать больше об этом материале ядра.