Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

LINUX|| Управление памятью в ОС Linux. Карта памяти

Читайте также:
  1. A) Постоянно находится в памяти.
  2. Double сохраняется в памяти 15-16 десятичных знаков.
  3. I. Территориальное управление Роспотребнадзора
  4. III. Распределение виртуальной памяти
  5. LINUX|| Алгоритм замещения страниц в ОС Linux.
  6. LINUX|| Загрузка в ОС Linux.
  7. LINUX|| Задачи и интерфейсы Unix-подобных систем.
  8. LINUX|| Процессы в ОС Linux. Общие понятия.
  9. LINUX|| Процессы в ОС Linux. Этапы создания процесса.
  10. LINUX|| Реализация потоков в ОС Linux.

Управление физической памятью. Каждый процесс в системе linux на 32-разрядной машине получает 3 Гб виртуального адресного пространства для себя, а оставшийся 1 Гб памяти резервируется для его страничных таблиц и других данных ядра. 1 Гб ядра не виден в пользовательском режиме, но становится доступным в режиме ядра. Память ядра обычно находится в нижних физических адресах, но отображается в верхний гигабайт виртуального адресного пространства процесса. Адресное пространство создается с помощью вызова fork и перезаписывается при помощи системного вызова exec. Чтобы несоклько процессов могли совместно использовать физическую память linux отслеживает использование физической памяти, выделяет при необходимости дополнительную память пользовательским процессам и компонентам ядра, динамически отображает области физической памяти на адресное пространство различных процессов. В linux различают 3 зоны памяти:

1. ZONE_DMA – это страницы, которые можно использовать для операций DMA

2. ZONE_NORMAL – это нормальные отображаемые страницы

3.ZONE_HIGHMEM – Страницы с адресами в верхней области памяти, которые не имеют постоянного отображения. Точные границы и компоновка этих зон памяти зависит от архитектуры, например на платформах x86 некоторые устройства могут выполнять DMA операции только в 1-х 16 мегабайтах, следовательно зона DMA находится в диапазоне от 0 до 16 мегабайт. Ядро поддерживает структуру ZONE для каждой из этих 3-х зон и может выполнять выделение памяти для этих 3-х зон поотдельности. Основная память linux состоит из 3-х частей: 1-е две части – ядро и карта памяти (не вытесняются), остальная память разделена на страничные блоки, каждый из которых может содержать страницу текста, данных, стека, страницу с таблицей страниц или списки свободных страниц. Ядро поддерживает карту памяти, которая содержит всю информацию об использовании физической памяти системы.

Карта памяти организована следующим образом:

1. page desctiptor –описывает каждый физический страничный блок системы. Каждый дескриптор содержит указатель на адресное пространство, которому принадлежит страница, пару указателей, которые позволяют ему сформировать дважды связный список с другими дескрипторами (если страницы свободны) и прочие поля, размер дескриптора страницы равен 32 байтам.

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

3.Дискриптор узла - Наличие данной структуры обусловлено возможностью системы linux переноса на архитектуру NUMA. Каждый дескриптор узла содержит информацию об использовании памяти и зонах для данного конкретного узла.

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

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

Виртуальный адрес страницы в linux состоит из 5 частей:

1. Глобальный каталог

2. Верхний каталог

3. Средний каталог

4. Страница

5. Смещение

В системе linux используется 4-х уровневая схема таблиц страниц. Поля каталогов используются как индекс в соответствующем каталоге страниц. Глобальный каталог указывает на верхний каталог, верхний каталог указывает на средний и средний указывает на конкретную страницу, которую необходимо использовать в данный момент времени.

 

 

11.. ||LINUX|| Алгоритм выделения памяти. Следующим проблемам выделения памяти в ОСРВ уделяется больше внимания, нежели в операционных системах общего назначения.

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

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

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

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




Дата добавления: 2014-12-19; просмотров: 94 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав