В. Столлингс - Операционные системы (1114679), страница 82
Текст из файла (страница 82)
е Последний активированный процесс. Маловероятно, что у этого процесса рабочее множество резидентно. е Процесс с минимальным резидентным множеством. Этот выбор минимизиРует будущие затраты на загрузку данного процесса. К сожалению, таковыми являются процессы с высокой степенью локализации. е Наибольший процесс.
При этом выборе мы освобождаем большое количество кадров перегруженной процессами памяти, снижая тем самым количество процессов, которые должны быть деактивированы. Процесс с максимальным остаточным южном исполнения. В большинстве схем планирования процесс может выполняться только определенное количество квантов времени до прерывания и перемещения его в конец очереди активных процессов. Данный выбор приближается к стратегии планирования, предоставляющей преимущество процессам с наименьшим временем работы.
Как и во многих других областях разработки операционных систем, выбор стРатегии основан на здравом смысле и зависит от множества Факторов, как, например„характеристик выполняемых в системе программ. ПРАВЛЕНИЕ ПА1ИЯ1ЪЮ.„В -ЮЯ И 80ЕАИХЯ Система управления памятью в 1ПЯ1Х варьируется в разных операционных с"стемах. Ранние версии 1Ля1Х использовали переменное распределение памяти без и 8о~ег1э применения виртуальной памяти.
Современные реализации включая БУВ4 и ~ег1э 2.х, используют страничную виртуальную память. В БTЯ4 и Бо1агтз, по сути, имеются две раздельные схемы управления память тью Страничная система обеспечивает реализацию возможностей виртуальттой и й памяти, распределяя кадры основной памяти среди процессов, а также среди б; "Уферов диска.
Хотя описанная схема эффективно работает с пользовательскимт ма„, тми процессами и дисковым вводом-выводом страничная виртуальная память Ъ агто приспособлена для управления памятью ядра. для этой ц ли используется Раси определение памяти ядра. Рассмотрим оба механизма. 'Часть 3. П ; ~лава 8. Виртуальная память 433 , аиичная система Номер кадра Возраст рп, Модифицироввнв Обращения В памяти Зв Копи ванне призяписи гв в) Запись таблицы страниц Нпмер блока устрпйствз Тип памяти б) Дескриптор дискового блока указатель;,к.; нз данные квдн)1ф: Спстпянив страницы Лпгическсе устройство Номер блока в) Ззписьтвблицы кадров г) Таблица использования свопингз 'г- 8.21. Структуры данных системы управления памятью Б1т1Х ЯИИ Структуры данных Для страничной виртуальной памяти ТЛч1Х использует ряд структур ' которые ~с минимальной коррекцией) являются машинно-независ рпс.
8.21 и табл. 8.6). Страница таблиц. Обычно для каждого процесса используется одна та страниц, в которой каждой странице виртуальной памяти процесса со стнует одна запись. Дескриптор дискового блока. В этой таблице каждой странице пр ответствует запись, описывающая дисковую копию этой страницы. Таблица кадров. Описывает каждый кадр реальной памяти; таблица и ' ' дексирована номерами кадров.
Таблица использования свопинга. Для каждого устройства свопинга ся своя таблица, в которой для каждой страницы на этом устройстве и' ся своя запись. Таблица 8.6. Параметры структур данных системы управления памятью 731з)1Х БЪ'В4 Запись таблицы страниц Номер кадра Указывает кадр в реальной ттамяти. Возраст Указывает, как долго страница находится в памяти без обращения к ней. Длина и содержимое данного поля зависят от используемого процессора. Копирование при записи Устанавливается, когда страница разделяется несколькими процессами. Если один из процессов производит запись в страницу, сначала должны быть сделаны отдельные копии страницы для каждого из совместно использующих ее пропессов. Эта возможность позволяет отложить операцию копирования до тех пор, пока онв не станет необходима, и избежать ее в тех случаях„когда онз не является таковой.
Модифицирована Указывает, изменено ли содержимое страницы. Обращения Указывает, что к странице были с)бращения. Этот бит устанавливается равным нулю при первой загрузке страницы и м)зжет периодически сбрасываться алгоритмом замещения страниц. В памяти Указывает, что страница находится в основной памяти. Заититцеи ность Указывает, что разрешена операция записи. Дескриптор дискового блока Номер устроиства свопиига Номер логического устройства вторичной памяти, хранящей соответствующую страницу.
Номер блока устройства Расположение блока страницы на устройстве вторичной памяти. Тип памяти Вторичная память может представлять собой модуль свопинга или исполнимый файл. В последнем случае имеется признак, указывающий, должна ли распределяемая виртузльнзя память быть предварительно очищенной. Запись таблицы кадров Состояние страницы Указывает, свободен ли кадр или содержит страницу, В этом случае указывает статус страницы: нз устройстве свопинга, в выполнимом файле, илн выполняется прямое обраптение к памяти. Количество ссылок Количество процессов, обращающихся к странице. Лоптческое устройство Логическое ческое устройс*во, содержащее копию страницы.
Номер блока Рпсп л о ожение блока копии страницы нз логическом устройстве. Указатель на данные кадра ~ т ие з писи 'таблицы и спи ке свооодных с гр стрзниц. $ 'Часть 3'. Глава 8. Виртуальная память Ф Квнецсииска ттаналв свивка страниц страниц раблица использования свопинга ~1аа А Ва 8. Виртуальная цамигь- Часть 3. П Сттличество ссылок Количество ааттисей таблицы страниц, указывающих на страницы на устройстве сво :1лентифякатор странвцы Илентттфтткатор страницы в модуле вторичной памяти. Большинство полей, приведенных в табл.
8.6, не требуют пояснений. возраста в записи таблицы страниц указывает, как давно программа не об лась к этому кадру. Размер и частота обновления этого поля зависят от ко ной реализации. Таким образом, нет универсального использования опер ной системой 1ЛЯ1Х этого поля при реализации стратегии замещения стран Наличие поля типа памяти в дескрипторе дискового блока необход следующей причине: когда выполнимый Файл используется для создания нр процесса, в реальную память может быть загружена только часть кода и':.
ных. Позже, при возникновении прерывания из-за отсутствия страницы, й; мять загружаются новые порции кода или данных. Страницы виртуально$', мяти создаются и связываются с определенными положениями на устрой'" свопинга только в момент первоначальной загрузки. В этот момент опер ная система решает, следует ли очистить (установить равными 0) ячейки страницы перед первой загрузкой блока кода или данных. Замещение страниц Для замещения страниц используется таблица кадров.
Для создания., снов в этой таблице применяются несколько указателей. Все доступные объединены в один список свободных кадров, в которых могут размеща страницы. Когда количество доступных страниц становится ниже некоторого.; рогового значения, ядро в качестве компенсации отдает ряд страниц загру ных процессов. Алгоритм замещения страниц, использованный в ЯЪ'В4, представляет:-; бой Усовершенствованный часовой алгоритм ~см.
Рис. 8.16), известный подт званием часового алгоритма с двумя стрелками ~рис. 8.22). Этот алгоритМ, пользует бит обращений из записи таблицы страниц для каждой из ст памяти, которая может быть выгружена из основной памяти (т.е. не забл Рована). Этот бит устанавливается равным 0 при первоначальной загр страницы, и равным 1 — при обращении к ней для чтения или записи.
П ний указатель проходит по страницам, содержащимся в списке пригодных выгрузки страниц, и устанавливает бит обращений каждой из них рави Несколько позже по тем же страницам проходит задний указатель и прове, бит обращений. Если он равен 1, значит, к данной странице было обращен между проверками ее передним и задним указателями, и такая страница и1'. Рируется. Страница же, бит обращений которой остался равен О, переноси список выгружаемых страниц. Работа алгоритма определяется двумя параметрами. ° Частота сканирования. Частота, с которой указатели сканируют с страниц ~в кадрах в секунду).
° Охват. Интервал между передним и задним указателями. рис. 8.22. Ч асовой алгоритм замещения с двумя стрелками Эти параметры в процессе загрузки операционной системы получают значения по умолчанию основ анные на количестве физической памяти.
Частота сканирования в пооцессе аботы мо р ты может изменяться, чтобы соответствовать изменяющимся условиям аботы р системы. Параметр линейно изменяется от минимального значения до максим л мального, определенных при настройке системы, с изменением количества сво"о ободной памяти от максимального до минимального— иными словами, чем меньше сво е свободной памяти в системе, чем чаще выполняется сканирование. Охват оп е еляет Р д яет интервал между указателями и вместе с частоте сканирования оп е еляе р д т промежуток времени, в течение котоРого к страице должно произойти об а ращение, чтобы она оставалась в основной памяти. Рае определение памяти ядра я Ядро в процессе аботы ча р ы часто генерирует и уничтожает маленькие таблицы ~"~Н т'и Уфера, память для каж о Л96т и д аждого из которых выделяется динамически.
В 1 перечислены следующие примеры. Преобразование имени пути из по ути может запросить буфер для копирования имени льзовательского пространства. Подпрограмма э11ос 1оси, ~ ~ выделяет буфера произвольного Разме а. ера. яд реализаций ОХРАХ вы еля деляют зомби -структуры для хранения информации о состоянии выхо а и и д спользовании ресурсов завершенными процессами. и.
8'1,тВ4 и Во1аг1в ядро динамически распределяет множество таких, как структуры процессов, блоки дескрипторов файлов и др,). ~замер большинства этих блоков гораздо меньше типичного размер»~,;" памяти и, соответственно, использование страничного механизма в д "" е крайне неэффективно. В ЯЪтй4 используется модификация системьг»' 1(описанной в разделе 7.2).
'.тоимость выделения свободного блока памяти в системе двойников з сяучае использования стратегий первого или наилучшего по 79 "»1. Однако при управлении памягью ядра выделение и освобождение »о выполняться с максимально возможной скоростью. Недостатком же иков являются затраты времени на разделение и слияние блоков, ~еркли (Ваг)е)еу) и Ли (? ее) из АТйТ предложили модификацию, из ленивая" система двойников (ВАВК89), которая принята в ВЪК4. ено, что СЬПХ часто демонстрирует устойчивое состояние памяти щра, т.' гво требующихся блоков определенного размера мало меняется со вре ' ~ образом, вполне возможна ситуация, когда освобождающийся блок »»3 вается со своим двойником в блок размером 2, который тут же вновь:.' ' я на два блока размером 2' в соответствии с запросом системы. Чтобы и зних слияний и разделений блоков, слияние освобожденных блоков ~ до того момента, когда оно оказывается действительно необходимым (к::," водится максимально возможное количество слияний блоков).