Память Linux: Принцип работы

watch 21s
views 2

10:41, 01.12.2023

Содержание статьи
arrow

  • Методы управления подсистемой памяти
  • Управление пользовательской памятью
  • Область памяти
  • Отложенное выделение

В спецификациях компьютеров, особенно серверов, обычно указывается N гигабайт оперативной памяти для обозначения доступного объема физической памяти. Распределением этих ресурсов управляют операционные системы, поэтому каждое приложение имеет свой собственный набор ресурсов - виртуальные адресные пространства, чтобы каждое приложение функционировало так, как будто оно независимое.

Таким образом, программам не нужно знать об использовании памяти друг другом или об общем объеме доступной физической памяти.

Linux использует иерархический набор структур данных и специализированные аппаратные механизмы для отслеживания соответствия между физической и виртуальной памятью. Все вместе они называются MMU.

Для повышения эффективности память управляется большими блоками или страницами, каждая из которых обычно имеет вес 4 килобайта.

В Linux, в отличие от других операционных систем, сегментация памяти на аппаратном уровне не используется.

Понятие виртуальной памяти в Linux охватывает как оперативную память, так и все SWAP-разделы.

Процесс памяти, в свою очередь, может быть как резидентным (реально используемая физическая память), так и виртуальным (общая потенциальная доступная память). Обычно rss меньше, чем vsz.

Раздел SWAP - это раздел на диске, куда помещаются редко используемые данные из резидентной памяти, а иногда и все данные (в случае нехватки физической памяти). Linux может работать как с разделами подкачки, так и с файлами подкачки, позволяя переносить данные из физической памяти в специальный файл на жестком диске. В этом файле и в разделе подкачки используется тот же формат, что и в оперативной памяти.

Подробная информация об использовании памяти процессом хранится в файле proc/<pid>/.

Виртуальная память состоит из страниц. Это наборы ячеек памяти в виртуальном пространстве, которые соответствуют реальной дисковой памяти. Большинство страниц имеют стандартный размер 4 КБ, в некоторых случаях используются страницы большего размера (огромные страницы) (2 мегабайта или 1 гигабайт). Огромные страницы используются для работы с большими данными (базами данных и т. д.).

Методы управления подсистемой памяти

Управление памятью имеет решающее значение для производительности системы в Linux,

Методы выделения памяти в Linux включают bootmem (начальный базовый аллокатор), buddy (выделение смежных страничных фреймов), vmalloc (обработка несмежных областей физической памяти) и kmemcache (выделение небольших объектов внутри страничных фреймов). Эти аллокаторы служат для различных целей, от начальной загрузки до удовлетворения различных потребностей в распределении памяти.

NUMA (Non-Uniform Memory Access) в многопроцессорных системах - еще один аспект, которым эффективно управляет Linux. Он отвечает за оптимизацию доступа к памяти на основе физической близости памяти к процессорам, что повышает производительность.

Управление пользовательской памятью

Запросы alloc_pages() и kmalloc() приводят к немедленному выделению памяти, поскольку ядро является наиболее доверенным компонентом системы.

Адресное пространство процессов

Адресное пространство процесса - это линейные адреса, к которым обращаются процессы.

Процесс получает доступ к новым областям памяти через вызовы: malloc(), calloc(), mmap(), brk(), shmget() + shmat(), posix_memalign(), mmap() на основе void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset).

Дескриптор памяти

mm_struct, дескриптор памяти, содержит всю информацию об адресном пространстве.

Область памяти

Область памяти разделена на два поля - vm_start и vm_end. Они обозначают адрес начала и первого бита после конца выделенной области.

Все области соединяются в двунаправленный список, в котором они упорядочены по возрастанию адресов.

Выделение интервала линейных адресов

Выделенные линейные адреса либо связаны с файлом (FILE), либо нет (ANON), при этом процесс, запрашивающий память, может делиться ею с другими процессами или иметь к ней частный доступ.

(MAP_SHARED или MAP_PRIVATE).

Отложенное выделение

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

 понадобится.

Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

-13.1%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 512 HK Linux

7

При оплате за год

-26.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 1024 Metered Linux

10

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

115.5

При оплате за год

-15%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
80 Mbps
DDoS Protected SSD-wKVM 8192 Windows

101

При оплате за год

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

25.9

При оплате за год

-7.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 4096 Windows

21

При оплате за год

-9.6%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
wKVM-SSD 32768 Metered Windows

156

При оплате за год

-10%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 32768 Linux

96.8

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 2048 Linux

7.7

При оплате за год

-10%

CPU
CPU
2 Epyc Cores
RAM
RAM
1 GB
Space
Space
10 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 1024 Linux

7.2

При оплате за год

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.