Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Перемещение страниц




 

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

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

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

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

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

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

Обработка страничного прерывания происходит поэтапно:

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

- Запускается написанная на ассемблере программа для сохранения основных регистров и другой изменяемой информации и защиты ее от разрушения операционной системой. Программа вызывает операционную систему как процедуру.

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

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

- Если выбранный страничный блок был изменен, страница заносится в график записи на диск и блок помечается как занятый. Производится переключение контекста, которое приостанавливает процесс. Управление передается другому процессу до выполнения переноса страницы на диск.

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

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

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

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

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

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

 




Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 736; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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