КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Страничный обмен.⇐ ПредыдущаяСтр 67 из 67 Подкачка, или своппинг (swapping - обмен), - это процесс сброса редко используемых областей виртуального адресного пространства программы на диск или другое устройство внешней памяти. Такая внешняя память всегда намного дешевле оперативной, хотя и намного медленнее. Своппинг становится возможен благодаря тому, что далеко не все, что хранится в памяти системы, используется одновременно. В каждый заданный момент исполняется только часть программного обеспечения, и оно работает только с частью данных. Это приводит нас к идее многослойной или многоуровневой памяти, когда в быстрой памяти хранятся часто используемые код или данные, а редко используемые постепенно мигрируют на более медленные устройства. Естественно, для того чтобы автоматизировать данный процесс мы должны иметь какой-то легко формализуемый критерий, по которому определяется, какие данные считаются редко используемыми. При этом алгоритм автомата должен быть как можно более простым. Один простой критерий выбора очевиден - при прочих равных условиях, в первую очередь, мы должны выбирать в качестве жертвы для удаления тот объект, который не был изменен за время жизни в быстрой памяти. Самый простой алгоритм - выкидывать случайно выбранный объект. Можно также удалять то, что дольше всего находится в данном слое памяти, используя алгоритм FIFO. Видно, что это уже чуть сложнее случайного удаления - нужно запоминать, когда мы что загружали. Понятно также, что это лишь очень грубое приближение к тому, что нам требуется. Наиболее честным будет удалять тот объект, к которому дольше всего не было обращений в прошлом - LRU (Least Recently Used). Минус: в аппаратной реализации счётчика обращения для каждой страницы и сегмента памяти. clock-алгоритм. Дескриптор каждой страницы содержит бит, указывающий, что к данной странице было обращение. При первом обращении к странице, в которой clock-бит был сброшен, диспетчер памяти устанавливает этот бит. Программа, занимающаяся поиском жертвы, циклически просматривает все дескрипторы страниц. Если clock-бит сброшен, данная страница объявляется жертвой, и просмотр заканчивается - до появления потребности в новой странице. Если clock-бит установлен, то программа сбрасывает его и продолжает поиск. В случае, когда памяти не хватает, программе почти на каждой команде требуется новая страница, и производительность системы катастрофически - в тысячи раз - падает. Это называется оверсвоппинг (overswap) – очень большая ВП, а ОП маленькая – нехватка страниц, постоянно решаются задачи перемещения и замещения.
|