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



Компьютеры - Slab

15 мая 2011


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



Распределение slab – это механизм управления памятью, предназначенный для более эффективного распределения памяти и устранения значительной фрагментации. Основой этого алгоритма является сохранение выделенной памяти, содержащей объект определенного типа, и повторное использование этой памяти при следующем выделении для объекта того же типа. Этот метод был впервые введен в SunOS Джефом Бонвиком и сейчас широко используется во многих операционных системах Unix, включая FreeBSD и Linux.

Основа

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

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



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


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