The design of the UNIX Operating System 62 страница



 

Страничные демоны

 

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


Основы операционных систем 96

сменить стратегию замещения. Их задача - поддерживать систему в состоянии наилучшей производи-тельности.

 

Примером такого рода процесса может быть фоновый процесс - сборщик страниц, реализующий облег - ченный вариант алгоритма откачки, основанный на использовании рабочего набора и применяемый во многих клонах ОС Unix (см., например,[Bach, 1986]). Данный демон производит откачку страниц, не входящих в рабочие наборы процессов. Он начинает активно работать, когда количество страниц в спи - ске свободных страниц достигает установленного нижнего порога, и пытается выталкивать страницы в соответствии с собственной стратегией.

 

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

 

В ОС Windows 2000 аналогичную роль играет менеджер балансного набора (Working set manager), кото-рый вызывается раз в секунду или тогда, когда размер свободной памяти опускается ниже определенного предела, и отвечает за суммарную политику управления памятью и поддержку рабочих множеств.

 

Программная поддержка сегментной модели памяти процесса

 

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

 

Чаще всего виртуальная память процесса ОС разбивается на сегменты пяти типов: кода программы, дан-ных, стека, разделяемый и сегмент файлов, отображаемых в память (см. рис. 10.5).

 

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

 

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


 

Рис. 10.5. Образ процесса в памяти


Основы операционных систем 97

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


Дата добавления: 2021-01-21; просмотров: 106; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!