Почему одна таблица страниц на процесс
Сначала я думал, что для всей системы существует только одна таблица страниц. Но на самом деле есть одна таблица страниц на процесс? Какой смысл иметь многостраничную таблицу вместо одной страничной.
Я реализую часть os161
1 ответ
Таблица страниц обычно имеет фиксированное количество записей и поэтому описывает только часть всего виртуального адресного пространства. Вот почему вам нужно несколько из них, чтобы покрыть все адресное пространство. Теперь во многих ОС процессы имеют отдельные (другими словами, не совместно используемые с другими) виртуальные адресные пространства, что помогает защитить процессы друг от друга. Это еще одна причина наличия нескольких таблиц страниц.
Таблица страниц преобразует виртуальные адреса страниц в физические. Поскольку каждый процесс имеет собственное виртуальное адресное пространство и обычно отображает один и тот же виртуальный адрес на другой физический адрес, ему требуется отдельная таблица страниц. Любопытно, что несколько процессов могут отображать разные виртуальные адреса в одну и ту же физическую память. Это можно использовать для реализации разделяемых библиотек или межпроцессного взаимодействия.