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

-20.4%

CPU
CPU
2 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 2048 HK Linux

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

-20.6%

CPU
CPU
6 Xeon Cores
RAM
RAM
8GB
Space
Space
100GB SSD
Bandwidth
Bandwidth
500GB
KVM-SSD 8192 HK Linux

59 /mes

/mes

Facturado cada 12 meses

-10%

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

6.6 /mes

/mes

Facturado cada 12 meses

-10.2%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-KVM 16384 Linux

123 /mes

/mes

Facturado cada 6 meses

-4.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 1024 Windows

10.32 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 4096 Linux

60.5 /mes

/mes

Facturado cada 12 meses

-8.8%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 16384 Windows

45.58 /mes

/mes

Facturado cada 12 meses

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

12.06 /mes

/mes

Facturado cada 12 meses

-10%

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

5.2 /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.