Как сопоставление виртуального адресного пространства может быть приемлемым с точки зрения производительности? - PullRequest
2 голосов
/ 16 августа 2010

Этот вопрос направлен на любую ОС, использующую модель VAS, но я собираюсь указать windows nt, так как это система, которую я знаю лучше всего.

Как все мы знаем, по умолчанию, процессы на 32Битовые окна получают 2 ГБ памяти самостоятельно.Эта память может быть расположена в системной памяти, в файле подкачки, на USB-диске и т. Д.

Это означает, что нескольким процессам может быть выделена память по адресу 0x12345678, однако, конечно, невозможно, чтобы это сопоставлялось с одним и тем же физическимПамять.

Мой вопрос: как это сделать без полного снижения производительности?Есть ли у процессоров какой-то механизм для отображения адресов памяти?

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

Ответы [ 3 ]

4 голосов
/ 16 августа 2010

Существует аппаратное устройство, которое выполняет перевод - оно называется Блок управления памятью (MMU). Большинство современных процессоров, даже те, которые используются в таких устройствах, как смартфоны, включают MMU.

2 голосов
/ 18 августа 2010

Описание ранней реализации виртуальной памяти

http://www.multicians.org/multics-vm.html

2 голосов
/ 16 августа 2010

Да, они есть, и для этого нужна виртуальная память. Каждый доступ к памяти по виртуальному адресу 0x12345678 отображается аппаратно в ячейку физической памяти (или вызывает прерывание, потому что для этого виртуального адреса нет физической памяти)

...