русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Страничное замещение


Дата добавления: 2014-11-28; просмотров: 1158; Нарушение авторских прав


Технология загрузки страниц по запросу (demand paging) появилась в системе UNIX после создания VAX-11/780 в 1978 году. В системах загрузки страниц по запросу память и адресное пространство процесса поделены на страницы фиксированного размера, которые помещаются в память или выгружаются по мере необходимости. Страницу физической памяти часто называют страничным фреймом (page frame) или физической страницей (physical page). В один момент времени могут выполняться сразу несколько процессов, при этом в физической памяти располагается лишь часть страниц каждого из них.

Рисунок 4.3 - Страницы и страничные фреймы

 

Каждая программа считает себя единственной в системе. Виртуальный адрес адреса состоит из номера страницы и смещение на этой странице. Аппаратная часть совместно с ОС преобразует номер виртуальной страницы в номер физического страничного фрейма и затем обращается к соответствующей ячейке памяти. Если требуемой страницы нет в оперативной памяти, ее необходимо туда загрузить. В идеальном случае ни одна из страниц не помещается в память до тех пор, пока она не потребуется. Большинство современных систем UNIX заранее загружают те страницы, которые, по мнению системы скоро потребуются.

Загрузка страниц по запросу может использоваться вместе с технологией свопинга, или отдельно.

Преимущества загрузки страниц по запросу:

- Размер программы ограничивается только максимальным объемом виртуальной памяти, который на 32-разрядных машинах равен 4 гигабайтам;

- Начальная загрузка программы происходит быстро, поскольку для начала работы программы не требуется полностью помещать ее в память;

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



- Перемещение отдельных страниц памяти намного проще для системы, чем свопинг процессов или сегментов целиком.

 

Под адресное пространство процесса отводится некоторый набор адресов, начиная от 0 до некоторого максимума. В простейшем случае максимальная величина адресного пространства меньше объема ОП. Тогда процесс может заполнить свое адресное пространство, и памяти хватит на то, чтобы содержать его целиком.

Если же образ процесса полностью не помещается в ОП, то ОС хранит в ОП лишь часть адресов, а другую часть хранит на диске в определенном месте и при необходимости меняет их местами.

 

Рисунок 4.4 – Возможное местонахождение страниц процесса

 

В любой момент времени конкретная страница памяти процесса может находиться в одном из следующих состояний:

резидентная (resident). Страница загружена в основную память. Элемент таблицы страниц содержит номер странчного фрейма;

заполненная по необходимости (fill-on-demand). Процесс пока не произвел ссылку на такую страницу. Она будет помещена в память при первом обращении к ней. Существует два типа страниц, заполняемых при необходимости:

заполненная текстом (fill-from-text). При первом обращении в страницу считываются коды и данные из исполняемого файла;

заполненная нулями (zero-fill). Страница используется для хранения неинициализированных данных, и заполняется нулями при необходимости;

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

 

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

///////Размер, содержимое и расположение сегментов в памяти определяется как самой программой (например, использованием библиотек, размером кода и данных), так и форматом исполняемого файла этой программы (COFF, ELF).///////

 

Рисунок 4.5 – Связь между структурами

 

Для контроля нахождения страниц в системе имеется специальная структура as, указатель на которую находится в структуре proc.

Структура as содержит:

- указатель на список описателей сегментов

- общий текущий размер физической памяти

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

 

Описатель каждого сегмента содержит индивидуальные характеристики сегмента:

- виртуальный адрес начала сегмента

- размер сегмента в байтах

- список операций, выполняемых над данными сегмента

- статус сегмента (напр, в каком режиме к нему возможен доступ, допускается ли совместное использование)

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

- прямые и обратные ссылки по списку описателей

- ссылка на общий описатель виртуальной памяти as

 

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

Рисунок 4.5 - Схема перемещения страниц

 

Если страница должна быть удалена из памяти повторно, ее сохранение в области свопинга происходит только в том случае, когда ее содержимое не совпадает с предыдущей копией. Так происходит в случае, когда страница была модифицирована после последнего чтения из области свопинга. Тогда страница является “грязной” (dirty). Следовательно, нужно уметь распознавать подобные страницы. Не нужно хранить в области свопинга текстовые страницы, так как их можно считать прямо из выполняемого файла.

 

Страничная система может использовать четыре различных типа карт трансляции адресов для поддержки виртуальной памяти.

 

 

Рисунок 4.7 - Преобразование адресов

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

Карта адресного пространства. Если аппаратная часть не может преобразовать адрес, генерируется страничная ошибка (page fault). Это происходит, если страница не находится в основной памяти или аппаратура не может произвести трансляцию адреса. В этом случае обработчик ошибки ядра, будет помещать нужную страницу в основную память.

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

Карта внешней памяти. Если нужная страница не находится в оперативной памяти, необходимо выделяет страничный фрейм и загрузить страницу из выполняемого файла, объектного файла разделяемой библиотеки или копии, находящейся в области свопинга. Такие страницы составляют внешнюю память по отношению к страницам процесса. Ядро поддерживает карты для нахождения страниц, находящихся во внешней памяти.

 

Страничная подкачка реализуется частично ядром, частично страничным демоном. Страничный демон (процесс номер 2). Как все демоны, страничный демон периодически запускается и смотрит, есть ли для него работа. Если он обнаруживает, что количество страниц в списке свободных страниц слишком мало, он инициализирует действие по освобождению дополнительных страниц.

Периодически для каждого процесса страничным демоном производятся следующие действия:

1. просматриваются таблицы отображения всех сегментов ВП этого процесса

2. если элемент таблицы отображения содержит ссылку на описатель физической страницы, то анализируется признак обращения

3. если признак установлен, то страница считается входящей в рабочий набор данного процесса, и сбрасывается в нуль счетчик старения данной таблицы

4. если признак не установлен, то к счетчику старения добавляется единица, а страница приобретает статус кандидата на выход из рабочего набора процесса

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

 

По ходу просмотра элементов таблиц отображения в каждом из них признак обращения гасится.

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

 



<== предыдущая лекция | следующая лекция ==>
Свопинг | Стратегия замещения страниц


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.845 сек.