Memoria Linux: Principio de funcionamiento

watch 3m, 48s
views 2

15:24, 01.12.2023

En las especificaciones de los ordenadores, sobre todo de los servidores, se suelen incluir N gigabytes de RAM para indicar la memoria física disponible. La asignación de estos recursos la gestionan los sistemas operativos, de modo que cada aplicación tiene su propio conjunto de recursos, unos espacios de direcciones virtuales, para que cada aplicación funcione como si fuera independiente.

De este modo, los programas no tienen que estar al tanto del uso de memoria de los demás ni de la memoria física total disponible.

Linux utiliza un conjunto jerárquico de estructuras de datos y mecanismos de hardware especializados para rastrear la correspondencia entre la memoria física y la virtual. En conjunto se denominan MMU.

En aras de la eficiencia, la memoria se gestiona en grandes bloques o páginas, cada una de las cuales suele tener un peso de 4 kilobytes.

En Linux, a diferencia de otros sistemas operativos, no se utiliza la segmentación de memoria a nivel de hardware.

El concepto de memoria virtual en Linux engloba tanto la RAM como todas las particiones SWAP.

El proceso de memoria, a su vez, puede ser residente (memoria física real utilizada) o virtual (memoria potencial total disponible). Normalmente, la rss es menor que la vsz.

La partición SWAP es la partición de la unidad donde se colocan los datos raramente utilizados de la memoria residente y, a veces, todos los datos (en caso de que no haya suficiente memoria física). Linux puede trabajar tanto con particiones swap como con archivos swap, permitiendo que los datos de la memoria física sean transferidos a un archivo especial en el disco duro. En este archivo y en la partición de intercambio se utiliza el mismo formato que en la memoria RAM.

La información detallada sobre el uso de memoria de un proceso se almacena en el archivo proc/<pid>/.

La memoria virtual se compone de páginas. Éstas son conjuntos de celdas de memoria en el espacio virtual, que corresponden a la memoria real del disco. La mayoría de las páginas tienen un tamaño estándar de 4 KB, con algunos casos en los que se utilizan páginas más grandes (páginas enormes) (2 megabytes o 1 gigabyte). Las páginas enormes se utilizan para manejar datos de gran tamaño (bases de datos, etc.).

Métodos de gestión del subsistema de memoria

La gestión de la memoria es crucial para el rendimiento del sistema en Linux,

Los métodos de asignación de memoria de Linux incluyen bootmem (asignador básico inicial), buddy (asignación de marcos de páginas contiguas), vmalloc (manejo de áreas de memoria física no contiguas) y kmemcache (asignación de objetos pequeños dentro de marcos de páginas). Estos asignadores sirven para varios propósitos, desde el arranque inicial hasta el manejo de diferentes necesidades de asignación de memoria.

NUMA (acceso no uniforme a la memoria) en sistemas multiprocesador es otro aspecto que Linux gestiona con eficacia. Se encarga de optimizar el acceso a la memoria en función de la proximidad física de la memoria a los procesadores, lo que mejora el rendimiento.

Gestión de la memoria de usuario

Las peticiones alloc_pages() y kmalloc() conducen a la asignación inmediata de memoria, ya que el kernel es el componente más fiable del sistema.

Espacio de direcciones de proceso

El espacio de direcciones de proceso son direcciones lineales a las que acceden los procesos.

Un proceso accede a nuevas áreas de memoria a través de invocaciones: malloc(), calloc(), mmap(), brk(), shmget() + shmat(), posix_memalign(), mmap() basada en void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset).

Descriptor de memoria

mm_struct, el descriptor de memoria contiene toda la información sobre el espacio de direcciones.

Área de memoria

La memoria se divide en dos campos: vm_start y vm_end. Representan la dirección del inicio y del primer bit después del final del área asignada.

Todas las áreas están conectadas en una lista de dos direcciones, donde se ordenan en orden ascendente de direcciones.

Asignación lineal de intervalos de direcciones

Las direcciones lineales asignadas están conectadas al fichero (FILE) o no (ANON), pudiendo el proceso que solicita la memoria compartirlas con otros procesos o tener acceso privado a ellas.

(MAP_SHARED o MAP_PRIVATE).

Asignación diferida

En algunos casos, las solicitudes de procesos de usuario pueden aplazarse hasta que se necesite realmente memoria.

Compartir

¿Te ha resultado útil este artículo?

Ofertas populares de VPS

-21.5%

CPU
CPU
2 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 4096 HK Windows

40 /mes

/mes

Facturado cada 12 meses

-8.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 2048 Windows

37.4 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 16384 Linux

231 /mes

/mes

Facturado cada 12 meses

-5%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 1024 Windows

12.1 /mes

/mes

Facturado cada 12 meses

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 16384
OS
CentOS
Software
Software
Keitaro
/mes

Facturado mensualmente

-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 /mes

/mes

Facturado cada 12 meses

-8.6%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 8192 Windows

42.3 /mes

/mes

Facturado cada 12 meses

-29.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
2 TB
KVM-SSD 2048 Metered Linux

17 /mes

/mes

Facturado cada 12 meses

-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 /mes

/mes

Facturado cada 12 meses

-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 /mes

/mes

Facturado cada 12 meses

Otros artículos sobre este tema

cookie

¿Acepta las cookies y la política de privacidad?

Utilizamos cookies para asegurar que damos la mejor experiencia en nuestro sitio web. Si continúa sin cambiar la configuración, asumiremos que acepta recibir todas las cookies del sitio web HostZealot.