русс | укр

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

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

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

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


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

Управление памятью в Linux


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


 

ВАП (Вирт. Адр простр) процесса делится на однородные непрерывные области, состоящие из соседних страниц с одинаковым режимом защиты и свойствами подкачки. Например, сегменты текса и отображенных файлов.

Каждый процесс имеет список областей, где каждая область представлена структурой vm_area_struct. Эта структура содержит следующую информацию:

1. Режим защиты (чтение, чт/запись)

2. Является ли данная область фиксированной или выгружаемой

3. Направление роста области

4. Является ли область приватной или совместно используемой

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

 

В Linux используется трехуровневая система страничной подкачки. Каждый виртуальный адрес разбит на четыре поля:

- Каталог (используется как индекс в каталоге /proc, который содержит ссылку на среднюю таблицу страниц)

- Середина (указывает на таблицу из средней таблицы страниц)

- Страница (указывает на страницу из таблицы станиц)

- Смещение (указывает на текущее слово)

 
 

 


Рисунок 4.8 - Трехуровневая система страничной подкачки Linux

 

Для управления памяти в Linux используются три алгоритма, взятые из System V.

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

 

 

Рисунок 4.9 – Дружественный алгоритм

 

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



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

 

В Linux реализована страничная подкачка по требованию без предварительной загрузки страниц и без концепции рабочего набора.

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

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

В управлении памятью используется еще один демон, bdflush. Он следит за тем, чтобы количество «грязных» страниц (бит обращения очищен, но страница хранит информацию) не превышало определенного уровня. Если превысило, демон начинает сохранять их на диск.

 



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


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


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

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

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


 


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

 
 

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

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