2012-05-26 3 views
1

Я прочитал книгу о пейджинге (схемы управления памятью).Операционная система - paging

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

Но я не понимаю, на самом деле две основные вещи:

  1. Если мы имеем процесс А и процесс В, как мы можем убедиться, что она не преобразует их линейный адрес в тот же физический адрес?

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

ответ

2

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

Кроме того, большинство современных процессоров содержат структуру, называемую Translation Lookaside Buffer (TLB). Эта структура является кешем для таблиц страниц, упомянутых ранее. Доступ к таблице страниц является дорогостоящей операцией, и TLB делает эту операцию быстрее.

Существуют и другие возможности для обеспечения разделения между адресными пространствами процессов, например segmentation. Вы можете больше узнать о виртуальной памяти в целом here.

0

В отношении вопросов 1 и 2 сопоставление нескольких виртуальных адресов на одной и той же физической странице иногда является желательным поведением, особенно для разделов кода. Например, общая библиотека может использоваться многими независимыми процессами. Вместо избыточных копий одной и той же библиотеки, в которой есть ОЗУ, ОС может загружать библиотеку только один раз и сопоставлять одни и те же физические страницы в каждом виртуальном адресном пространстве процессов. Для страниц данных чтения/записи некоторые методы взаимодействия между процессами используют общую физическую память.

Смежные вопросы