20550_1.jpg
article.cd_.dvd_.jpg


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

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

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

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

Но после того как первая программа проработает достаточно долго, операцион­ная система может принять решение на запуск второй программы, которая была загружена над первой программой, начиная с адреса 16384. Первой исполняемой командой будет JMP28, осуществляющая переход к команде ADD первой програм­мы вместо того, чтобы перейти к предполагаемой команде СМР, Скорее всего, это приведет к сбою программы на первой же секунде.

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

занимаемый ею набор адресов. Давайте вкратце рассмотрим, как это достигается. На IBM 360, например, в процессе загрузки буквально на лету осуществлялась модификация второй программы, при этом использовалась технология, известная как статическое перемещение. Она работала следующим образом: когда программа загружалась с адреса 16384, в процессе загрузки к каждому адресу в программе прибавлялось постоянное значение 16384. При всей исправности работы этого механизма он был не самым универсальным решением, которое к тому же замедля­ло загрузку. Более того, это решение требовало дополнительной информации обо всех исполняемых программах, служащей признаком, в каких словах содержатся, а в каких не содержатся перемещаемые адреса.

 
Поиск

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

Реклама