Два процесса в виртуальной памяти - PullRequest
0 голосов
/ 25 января 2012

Я читал о виртуальной памяти. У меня есть сомнения. Предположим, есть два процесса P и Q. Оба будут иметь одинаковую адресацию виртуальной памяти. У них обоих есть свои таблицы страниц. Будет общесистемная таблица страниц. Тогда как эти два процесса различаются в ОЗУ, если мы используем общесистемную таблицу страниц?

Ответы [ 3 ]

1 голос
/ 23 сентября 2012

Это потому, что виртуальный адрес разделен на пространство пользователя и ядра. После запуска процесса загрузки включается модуль подкачки, который внезапно переходит в виртуальный адрес пространства ядра и, наконец, передает управление в пространство пользователя. Общесистемная таблица страниц предназначена для ядра, и каждый процесс имеет свою собственную таблицу страниц.

Когда он запускается в ядро, он использует таблицу страниц ядра, а когда переключается обратно на пользователя, он использует таблицу страниц пользовательского процесса.

Каждый процесс имеет свою собственную таблицу страниц, и поэтому он различает два процесса

1 голос
/ 25 января 2012

Каждый процесс имеет виртуальное адресное пространство, которое сопоставляется с физической памятью, но затем также может быть виртуализировано, как правило, на диск.

0 голосов
/ 25 января 2012

Если существует системная табличная таблица, используемая все время, то это не сработает, поскольку будет только одно виртуальное отображение, и 2 процесса перейдут в память друг друга.

* nix-системы однакосохраняйте одну таблицу страниц для каждого процесса (проще говоря) и переключайтесь между ними, когда ядро ​​планирует запуск процесса.Таким образом, у каждого процесса могут быть одинаковые виртуальные адреса, сопоставленные с разными физическими адресами, и проблем нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...