Linux - Controlar intercambio (swapping)

 
Vista:

Controlar intercambio (swapping)

Publicado por José A. Martínez (1 intervención) el 08/09/2001 20:15:36
Hola¡ Alguien me podrá auxiliar para solicitar memoria (en Linux) y que solo me proporcione de la memoria principal (RAM) libre, es decir, no utilice para ello de la memoria virtual. Así como también controle el intercambio (swapping) de ésta y liberarla hasta que uno se lo indique.

Ya que hice pruebas con malloc y no he visto parámetro alguno para indicarle primeramente que solo me dé de la memoria RAM libre, además de que controle el intercambio de la misma. Cabe mencionar que en las pruebas me proporciono más memoria (120MB) de la RAM (32MB) y SWAPING(64MB) existente.

De antemano, GRACIAS¡¡¡

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Gestión de memoria en C

Publicado por Alejandro (176 intervenciones) el 08/12/2023 20:52:00
Para solicitar memoria solo de la memoria principal (RAM) en Linux y controlar el intercambio (swapping), puedes usar las funciones `malloc` y `mlock` en C. Aquí hay un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>
 
int main() {
    size_t size = 100 * 1024 * 1024; // 100 MB de memoria a solicitar
 
    // Solicitar memoria utilizando malloc
    void *ptr = malloc(size);
    if (ptr == NULL) {
        perror("malloc");
        exit(EXIT_FAILURE);
    }
 
    // Bloquear la memoria en RAM para evitar swapping
    if (mlock(ptr, size) != 0) {
        perror("mlock");
        // Puedes decidir si quieres continuar sin bloqueo en caso de error
    }
 
    // Realizar operaciones con la memoria aquí
 
    // Liberar la memoria
    free(ptr);
 
    // Desbloquear la memoria después de usarla si es necesario
    // munlock(ptr, size);
 
    return 0;
}

Este programa solicita 100 MB de memoria con `malloc` y luego utiliza `mlock` para bloquear la memoria en RAM, evitando así el swapping. Asegúrate de que el usuario que ejecuta el programa tenga los privilegios necesarios para bloquear la memoria.

Recuerda que bloquear grandes cantidades de memoria puede afectar el rendimiento del sistema, así que úsalo con precaución y asegúrate de liberar la memoria cuando ya no la necesites, José.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar