OSDev
http://osdev.su/

[реализовано] Менеджер физической памяти (v. 2)
http://osdev.su/viewtopic.php?f=22&t=276
Страница 1 из 1

Автор:  grindars [ 16 июн 2009, 20:19 ]
Заголовок сообщения:  [реализовано] Менеджер физической памяти (v. 2)

Физическая память разделяется на регионы. Регион - это непрерывная область памяти, имеющая начало, длину, атрибуты, имя (не обязательно) и счетчик ссылок. Атрибутов два - "зарезервирован" и "разделяемый". Если установлен "зарезервирован", менеджер не выдаст этот регион при обычном запросе на память.
Ядро поддерживает два списка регионов: свободные (со счетчиком ссылок = 0) и занятые (со счетчиком ссылок > 0).

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

Регионы могут быть разделяемыми. Есть два типа разделения регионов:
[*]С помощью флага "разделяемый", при установленном имени. Любой процесс может запросить такой регион, но получит доступ только для чтения. Такое разделение будет использоваться при разделении библиотек в памяти.
[*]Передача от владельца. При таком разделении, процесс-владелец региона разрешает процессу-получателю региона подключить регион к себе (для записи или только для чтения), и передает ему идентификатор региона через другие средства IPC. Так же применим к регионам 1 типа, если необходимо получить доступ для записи. Такое разделение может использоваться, например, в графическом сервере.

Автор:  whitequark [ 16 июн 2009, 20:23 ]
Заголовок сообщения:  Re: Менеджер физической памяти

труЪ.

Автор:  sadko [ 16 июн 2009, 20:37 ]
Заголовок сообщения:  Re^2: Менеджер физической памяти

Хе, а у меня, походу, регионы попродвинутее будут :).
Я, как раз, их сейчас реализую.
У меня есть такие типы регионов:
- SHARED - разделяемый между процессами
- MMIO - memory-mapped IO
- FLAT - прямое отображение виртуальной памяти на физическую
- OPTIMISTIC - выделение страницы осуществляется только при обращении к памяти

Каджый регион - это группа страниц.
Регион может быть однократно и более, целиком или по частям замонтирован на виртуальное адресное пространство.
Поэтому у меня регион содержит не только счётчик ссылок, но и список точек монтирования на виртуальные адресные пространства. Вот так.

Автор:  grindars [ 16 июн 2009, 20:43 ]
Заголовок сообщения:  Re^3: Менеджер физической памяти

У меня в принципе тоже самое, только не реализовано MMIO, OPTIMISTIC будет для всех регионов, SHARED не выделено отдельно, а FLAT - это зарезервированный регион.

А зачем список точек монтирования?

Автор:  sadko [ 17 июн 2009, 10:47 ]
Заголовок сообщения:  Re: Менеджер физической памяти

А как ты будешь выгружать страницу из памяти, не зная, к какому адресному пространству и по какому адресу она подмонтирована ;)?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/