Интернет магазин китайских планшетных компьютеров



Компьютеры - Slab - Реализация

15 мая 2011


Оглавление:
1. Slab
2. Реализация
3. Slab
4. Системы, использующие распределение slab



Понимание распределения slab требует определения следующих терминов:

  1. Кэш: кэш представляет собой небольшой объём очень быстрой памяти. Здесь мы используем кэш как память для хранения таких объектов, как семафоры, дескрипторы процессов, объекты файлов и т. д. Каждый кэш способен хранить только один тип объектов.
  2. Slab: slab представляет собой непрерывный участок памяти, обычно составленный из нескольких физических смежных страниц. Кэш состоит из одного или более slab’ов.

Когда программа создает кэш, она выделяет ряд объектов в него. Их количество зависит от размера связанных slab’ов. Slab может находиться в одном из следующих состояний:

  1. пустой – все объекты в slab’e помечены как свободные
  2. частично занятый – slab содержит как используемые, так и пустые объекты
  3. заполненный – все объекты в slab’е помечены как используемые

Изначально система помечает каждый slab как «пустой». Когда процесс обращается за новым объектом ядра, система делает попытку найти свободное место для этого объекта в частично занятом slab’е в кэше для этого типа объектов. Если такого места не находится, система выделяет новый slab из смежных физических страниц и передает их в кэш. Новый объект размещается в этом slab’е, а это местоположение помещается как «частично занятое». Основное преимущество алгоритма slab заключается в том, что память выделяется точно в том объёме, в котором требуется. Таким образом, отсутствует внутренняя фрагментация памяти. Распределение происходит быстро, поскольку система создает объекты заранее и легко выделяет их из slab’а.



Просмотров: 3581


<<< Malloc
Дескрипторные таблицы >>>