Как блок управления памятью отображает виртуальный адрес на физический адрес - PullRequest
0 голосов
/ 29 апреля 2018

Если компьютерная система имеет основную память 1mb и виртуальное адресное пространство 16mb, а размер блока диска - 1kb. Как блок управления памятью отображает виртуальный адрес на физический адрес?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Управление памятью с использованием ЛОГИЧЕСКИХ адресов в ФИЗИЧЕСКИЕ адреса.

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

В простом случае таблица страниц - это просто массив, содержащий отображение между логическим и физическим адресом. Некоторое количество старших битов адреса служат индексом в таблице страниц. Соответствующая запись таблицы страниц задает физический фрейм страницы, на который отображается логическая страница.

Некоторое количество младших битов адреса сохраняются в качестве смещения во фрейме физической страницы.

Операционная система поддерживает таблицы страниц в том формате, в котором MMU ожидает их появления. MMU выполняет преобразование между логическими адресами в физические адреса прозрачно.

Размер блока диска не имеет значения для этого перевода.

0 голосов
/ 29 апреля 2018

Я предполагаю, что вы намереваетесь спросить "как MMU отображает виртуальную память в физическую память" (как в описании вашего вопроса).

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

Операционные системы будут хранить карту virtual_address -> физического_адреса для каждого отдельного процесса.

Например, если программа использует виртуальную страницу [0, 1, 2, 3], операционные системы могут отображать эти страницы на физические страницы как [64, 128, 256, 512].

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

Например, давайте упростим ваш случай, предполагая, что виртуальная память имеет 8 страниц, но физическая память может содержать только 4 страницы данных. Если процесс имеет данные на виртуальной странице [0,1,2,3,4], очевидно, что физическая память не может вместить все 5 страниц. Поэтому одна из виртуальных страниц будет помещена на диск, и отображения памяти системы будут выглядеть примерно так: [0-> 2, 1-> 1, 2-> 3, 4-> 0], и в этом случае виртуальная страница 3 будет заменено на диске.

enter image description here

Эти выгруженные страницы будут возвращаться в основную память ОС только в том случае, если программе нужны данные, и одну из страниц, ранее присутствовавших в основной памяти, необходимо заменить, чтобы освободить место. Другая тема (например, LRU, алгоритм синхронизации) - это алгоритмы, позволяющие определить, какую страницу нужно поменять.

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

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