Современные операционные системы

Современные операционные системы
Управление памятью / Запуск нескольких программ без абстракций памяти

Запуск нескольких программ без абстракций памяти




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

При наличии некоторого специального дополнительного оборудования появляется возможность параллельного запуска нескольких программ даже без использования свопинга. На ранних моделях IBM 360 эта проблема решалась следующим образом: память делилась на блоки по 2 Кбайта, каждому из которых присваивался 4-битный защитный ключ, содержащийся в специальных регистрах за пределами центрального процессора. Машине с объемом памяти в 1 Мбайт нужно было иметь лишь 512 таких 4-битных регистров, и все хранилище ключей занимало в итоге 256 байт памяти. Слово состояния программы — PSW (Program Status Word) также содержало 4-битный ключ. Аппаратное обеспечение IBM 360 перехватывало любую попытку запущенного процесса получить доступ к памяти с ключом защиты, отличающимся от ключа PSW. Поскольку изменить ключи защиты могла только операционная система, пользовательские процессы были защищены от вмешательства в работу друг друга и в работу самой операционной системы.

Тем не менее это решение имело серьезный недостаток, показанный на рис. 3.2. Здесь изображены две программы, каждая из которых имеет объем 16 Кбайт. Они показаны на рис. 3.2, а и б. Первая из них закрашена, чтобы показать, что у нее другой ключ памяти, чем у второй. Первая программа начинается с перехода на ячейку памяти с адресом 24, в которой содержится команда MOV. Вторая программа начинается с перехода на ячейку памяти с адресом 28, в которой содержится команда СМР. Команды, не имеющие отношения к рассматриваемому вопросу, на рисунке не показаны. Когда две программы загружаются друг за другом в память, начиная с ячейки с адресом 0, мы получаем ситуацию, показанную на рис. 3.2, в. В этом примере мы предполагаем, что операционная система находится в верхних адресах памяти и поэтому не показана.



Полное описание: Запуск нескольких программ без абстракций памяти




С этим описанием рассматриваются следующие темы:


Память без использования абстракций
Простейшей абстракцией памяти можно считать полное отсутствие какой-либо абстракции. Ранние универсальные машины (до 1960 года), ранние мини-компьютеры (до 1970 года) и ранние персональные компьютеры (до 1980 года) не использовали абстракции памяти. Каждая программа просто видела физическую память. Когда программа выполняла следующую команду MOV REGISTER1.1000 компьютер просто перемещал содержимое физической ячейки памяти 1000 в REG-ISTER1. Таким образом, модель памяти, предоставляемая программи ... Читать

Абстракция памяти: адресные пространства
В конечном счете предоставление физической памяти процессам имеет ряд серьезных недостатков. Во-первых, если пользовательские программы могут обращаться к каждому байту памяти, они легко могут преднамеренно или случайно испортить операционную систему, раздробить ее код и довести до остановки работы (в отсутствие специального аппаратного обеспечения наподобие ключевых схем и блокировок на IBM 360). Эта проблема присутствует даже при запуске всего лишь одной пользовательской программы (приложения) ... Читать

Адресные пространства
Каждый компьютер обладает определенным объемом оперативной памяти, используемой для хранения исполняемых программ. В самых простых операционных системах в памяти присутствует только одна программа. Для запуска второй программы сначала нужно удалить первую, а затем загрузить в память вторую на её место. Более изощренные операционные системы позволяют одновременно находиться в памяти нескольким программам. Чтобы исключить взаимные помехи (и помехи работе операционной системы), нужен какой-то защит ... Читать

Страничная организация памяти
Большинство систем виртуальной памяти использует технологию под названием страничная организация памяти (paging), к описанию которой мы сейчас и приступим. На любом компьютере программы ссылаются на набор адресов памяти. Когда программа выполняет следующую команду MOV REG.1000 она осуществляет копирование содержимого ячейки памяти с адресом 1000 в REG (или наоборот, в зависимости от компьютера). Адреса могут генерироваться с использованием индексной адресации, базовых регистров, сегментных регис ... Читать

После загрузки программы
После загрузки программы могут быть запущены на выполнение. Поскольку у них разные ключи памяти, ни одна из них не может навредить другой. Но проблема имеет иную природу. При запуске первой программы будет выполнена команда JMP24 и, как и ожидалось, осуществлен переход к другой команде. Эта программа будет успешно работать. Но после того как первая программа проработает достаточно долго, операционная система может принять решение на запуск второй программы, которая была загружена над первой прог ... Читать