2017-01-30 10 views
2

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

Поэтому мой вопрос: почему можно использовать одну и ту же программу при использовании двух пар регистров и невозможно использовать только одну пару?

То, что я думаю, я понимаю:

  1. При запуске исполняемого (программа), процесс создается.

Так первое сомнение в моей голове начинается здесь:
Как и та же программа совместно, если каждая программа представляет собой другой процесс?

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

Итак, как можно регистрировать регистры между двумя процессами?

+0

Я уверен, что он говорит о программном коде, который является общим. Код доступен только для чтения (по крайней мере, на x86), поэтому его совместное использование тривиально и сохраняет память (см. «Копирование-В-Запись»). – Downvoter

+2

Показать точную цитату и выделить то, что вы не понимаете. Это облегчает нам понимание вашего вопроса. – Downvoter

+0

Речь идет о сегментированном управлении памятью или выгружаемом? – user3344003

ответ

0

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

Вы можете открыть текстовый редактор дважды. Каждый из них - это другой процесс. Однако они получат доступ к той же памяти программы, которая содержит инструкции.

Следующая цитата из раздела «Концепции операционной системы 9-го издания».

Рассмотрим систему , которая поддерживает 40 пользователей, каждый из которых выполняет текстовый редактор. Если текстовый редактор состоит из 150 КБ кода и 50 КБ пространства данных, нам требуется 8 000 КБ до , которые поддерживают 40 пользователей. Однако, если код является реентерабельным кодом (или чистым кодом), он может использоваться совместно с . Каждый процесс имеет свою собственную страницу данных.

Более общее объяснение было бы следующим: Каждая программа действительно отличается от других? Как бы процессы могли вызвать выполнение других программ, поэтому два процесса mught хотят вызвать третий процесс. Поскольку его набор инструкций вы можете читать только, несколько процессов могут совместно использовать эту память.

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

  • Нет связанных вопросов^_^