Резервное хранилище

Рассматривая алгоритмы замещения страниц, мы видели, как выбирается страница для удаления, но не уделяли слишком много внимания тому, куда она помещается на диске при выгрузке. Настало время рассмотреть некоторые вопросы, связанные с управлением работой дискового устройства.

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

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

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

Но с этой простой моделью связана одна проблема: размеры процессов после их запуска могут изменяться. Хотя размер текста программы обычно не меняется, область данных иногда может расти, а стек всегда склонен к росту. Следовательно, может быть лучше резервировать отдельные области подкачки для текста, данных и стека и давать возможность каждой из этих областей состоять более чем из одного дискового участка.

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

Эти два альтернативных варианта показаны на рис. 3.26.

Рис. 3.26. Таблица страниц: а — замещение страниц со статической областью подкачки; б — динамическое резервное хранение страниц


На рис. 3.26, а показана таблица страниц с восемью страницами. Страницы 0, 3, 4 и 6 находятся в оперативной памяти, страницы 1, 2, 5 и 7 — на диске. Размер области свопинга совпадает по размеру с виртуальным адресным пространством процесса (восемь страниц), а у каждой страницы есть фиксированное место, в которое она записывается при удалении из основной памяти. Для вычисления этого адреса нужно знать только о том, где начинается принадлежащая процессу область замещения страниц, поскольку страницы хранятся в ней рядом, в порядке их виртуальных номеров. У страницы, находящейся в памяти, всегда есть ее копия на диске (закрашенная область), но эта копия может устареть, если страница с момента загрузки подверглась изменению. На рис. 3.26, а в памяти закрашенными областями показаны отсутствующие в ней страницы. Страницы, соответствующие закрашенным областям, на диске должны быть заменены (в принципе) копиями в памяти, хотя, если страница памяти должна быть сброшена на диск и не подвергалась модификации со времени своей загрузки, то будет использована ее дисковая (закрашенная) копия.

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

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

файловой системы. Именно такой подход используется в Windows. Но для уменьшения объема необходимого дискового пространства здесь может быть использована оптимизация. Поскольку текст программы каждого процесса берется из какого-нибудь исполняемого файла, принадлежащего файловой системе, этот исполняемый файл может быть использован в качестве области подкачки. Еще лучше то, что, поскольку текст программы обычно имеет статус «Только для чтения», когда в памяти становится тесно и страницы программы должны быть из нее удалены, они просто считаются уничтоженными и считываются снова из исполняемого файла по мере надобности. Таким же образом можно работать и с совместно используемыми библиотеками.

3.6.6.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Резервное хранилище:

  1. V. 2. МОДЕЛЬ ПАРЦИАЛЬНОГО ХРАНИЛИЩА ПАМЯТИ ЧЕЛОВЕКА
  2. V. 2. 5. Структура парциального хранилища памяти.
  3. Лица, производящие обыск, должны учитывать, что при изготовлении тайников и различных хранилищ преступники в некоторых случаях учитывают целый ряд факторов психологического характера.
  4. ПАМЯТЬ: МОДЕЛЬ ТРЕХКОМПОНЕНТНАЯ
  5. V. 2. 4. Границы адекватности модели.
  6. V. 2. 1. Теоретические предпосылки модели.
  7. Статья 158. Ограничение относительно выпуска ценных бумаг и относительно выплаты дивидендов
  8. Требование к держателям лицензий на неэфирное телерадиовещание.
  9. Статья 143. Устав общества с ограниченной ответственностью
  10. V. 2. 2. Описание модели.
  11. Как использовать телепсихику в повседневной практике
  12. Прямой доступ к информации и предузнавание