digital-garden/dev/fundamental/Slab allocator.md
Struchkov Mark 388efb36b1
All checks were successful
continuous-integration/drone/push Build is passing
Эффективная встреча.md
2024-09-19 16:48:10 +03:00

40 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- maturity/🌱
date: 2024-09-19
zero-link:
- "[[../../meta/zero/00 Разработка|00 Разработка]]"
parents:
- "[[../../../../knowledge/dev/Аллокация|Аллокация]]"
linked:
---
Slab allocator — это метод выделения памяти, который используется для управления объектами фиксированного размера, таких как структуры данных или буферы в ядре операционной системы (например, в Linux). Он помогает оптимизировать использование памяти и уменьшить фрагментацию.
Slab allocator делит память на несколько областей, называемых **slabs** (слабы). Каждая slab — это блок памяти, который может содержать несколько объектов одного и того же размера. Когда требуется выделить память для объекта, система аллокатора выделяет память из заранее подготовленного блока slab, что делает процесс выделения и освобождения очень быстрым.
Вот основные концепции:
- **Slab** — это область памяти, содержащая несколько объектов одного типа и размера.
- **Cache (кэш)** — набор slabs, который управляется для определённого типа объекта. Каждый кэш предназначен для объектов одного типа (например, для структур данных).
- **Page ([[Страница|страница]])** — это базовая единица памяти, используемая системой (обычно 4 КБ), которая может содержать один или несколько slabs.
**Почему это эффективно?**
- **Уменьшение фрагментации**: slab allocator позволяет эффективно использовать память для объектов одного типа и размера, избегая проблем с фрагментацией памяти.
- **Быстрое выделение/освобождение**: поскольку память выделяется из заранее подготовленных областей, процесс выделения и освобождения памяти выполняется быстрее.
- **Оптимизация работы кэша процессора**: объекты одного типа часто используются вместе, что улучшает работу кэша процессора.
**Пример использования**
- Slab allocator широко используется в ядре Linux для управления памятью ядра. Он выделяет память для часто используемых структур данных, таких как дескрипторы файлов, процессы и буферы ввода-вывода.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
**Родитель**:: [[../../../../knowledge/dev/Аллокация|Аллокация]]
**Источник**::
**Создана**:: [[2024-09-19]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->