Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_os.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
626.79 Кб
Скачать

13.Подкачка в ос Linux.

Единицей управления памятью в linux является страница. и почти весь компонент управления памятью работает с точностью до страницы. основная идея подкачки страниц очень проста и тесна связана с алгоритмом PFRA (page frame algorithm)

идея подкачки в linux:

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

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

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

подкачка частично реализована ядром и частично процессом. называется Page Daemon. его приоритет равен 2.

Работа данного процесса можно представить следующим образом:

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

Операционная система linux является системой с подкачкой страниц по требованию без упреждающей подкачки.

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

подкачка страниц из отдельного раздела диска, доступ к которому осуществляется как к отдельному устройству, не содержащему файловую систему, более эффективно по нескольким причинам:

1. не требуются отображения блоков файлов в блоки диска. (Не нужен лишний перевод из физического уровня в логический)

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

3. страница всегда пишется на диск в виде единого непрерывного участка. (В файле подкачки это может быть не так)

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

14.Алгоритм замещения страниц в ос Linux.

Алгоритм замещения страниц работает следующим образом: система linux пытается поддерживать некоторые страницы свободными, чтобы их можно было предоставить при необходимости. Множество таких свободных страниц должно постоянно пополняться. Основным алгоритмом замещения страниц в linux является алгоритм PFRA (Page Frame Reclaming algorithm).

Подкачиваемость системы – это отношение количества страниц с резервным хранением к количеству страниц, нуждающихся в вытеснении. В алгоритме PFRA подкачиваемость является настраиваемым параметром. Прежде всего linux различает 4 разных типа страниц:

1) Неиспользуемые страницы – страницы, которые не могут вытесняться в подкачку

2) Подкачиваемые страницы – страницы, которые должны быть записаны в область подкачки перед тем, как их можно будет использовать.

3) Синхронизируемые страницы – страницы, которые должны быть записаны на диск в том случае, если они были помечены как грязные.

4) Отбрасываемые страницы – страницы, которые могут быть использованы немедленно.

Во время загрузки процесс init (приоритет 1) запускает страничные демоны kswapd и настраивает их на периодическое срабатывание. При каждом пробуждении поток kswapd проверяет, есть ли достаточное количество свободных страниц для этого он сравнивает нижний и верхний пределы с текущим уровнем использования памяти в каждой области памяти. Если памяти достаточно, то он отправляется обратно спать, хотя он может быть разбужен раньше, если внезапно понадобятся дополнительные страницы. Если доступной памяти в одной из зон становится меньше нижнего предела, то kswapd инициирует алгоритм востребования страниц PFRA. Во время каждого прохода востребуется только определенное заданное количество страниц. Это число ограничено, чтобы сдерживать объем ввода-вывода. При каждом выполнении алгоритма PRFA, он сначала пытается востребовать легкодоступные страницы, после чего переходит к труднодоступным. Востребованя ность страниц рассматривается в следующей очередности:

1) Отбрасываемые страницы и станицы, на которые нет ссылок.

2) Страницы с резервным хранением, на которые не было ссылок в последнее время

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

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

4) Обычные пользовательские страницы.

Алгоритм PRFA при выборе старых страниц (в какой-либо из категорий) для вытеснения использует алгоритм, подобный алгоритму часов. В основе этого алгоритма лежит цикл, которые сканирует список активных и неактивных страниц каждой зоны, пытаясь востребовать страницы различных типов. Большое значение имеет параметр срочности. Значение срочности передается как параметр, который сообщает процедуре о том, сколько усилий нужно потратить для востребования страницы. Обычно он указывает, сколько страниц нужно обследовать до того, как прекратить работу. Во время работы алгоритма PRFA страницы переносятся между списками активных и неактивных страниц. Для реализации поиска страниц, на которые не было ссылок и которые вряд ли понадобятся в ближайшее время, алгоритм PRFA поддерживает 2 флага для каждой страницы:

1) активная и неактивная

2) ссылки есть или нет

Этими двумя флагами можно обозначить 4 состояния:

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]