Puntos de conocimiento de Linux: concepto de proceso (suplemento)

Puntos de conocimiento de Linux: concepto de proceso (suplementario)


1. El área de montón del espacio de direcciones del proceso

Cada vez que el usuario utiliza funciones como malloc para solicitar direcciones en el área de montón del proceso, el usuario solo necesita especificar el tamaño del espacio y obtendrá una dirección de inicio, pero no una dirección final;

  • Debido a que la estructura del montón se compone devm_area_structGestionado, cada malloc solicitará una estructura;inserte la descripción de la imagen aquí

  • Cuando malloc solicita espacio en el montón, solo necesita saber la dirección de inicio, no la dirección final, porque el inicio y el final se guardan en vm_area_struct;

  • El espacio solicitado por el área de montón es continuo;

En segundo lugar, la conversión entre dirección virtual y dirección física.

  • El espacio en el disco está en unidades de 4 KB. Nuestro programa ejecutable se almacena en el disco. De hecho, originalmente se compila de acuerdo con el espacio de direcciones, y el programa ejecutable también se divide en áreas en unidades de 4 KB. almacenado en el disco. ;
  • La memoria física también se divide de acuerdo con 4 KB, y el sistema operativo administra cada unidad de la memoria física a través de la estructura de página de estructura;
  • Una unidad de 4 KB en el disco se denomina marco de página y una unidad de 4 KB en la memoria física se denomina marco de página;
  • Durante IO, la unidad básica es de 4 KB, que es para cargar el marco de página en el marco de página;
  • Cuando el sistema operativo se dirige a través de la tabla de páginas y encuentra que el archivo en la dirección correspondiente no está en la memoria, necesita activarfallo de página:
    (1) Solicitar la memoria correspondiente;
    (2) Buscar el archivo correspondiente en el disco;
    (3) Cargar en la ubicación especificada en la memoria;
    (4) Rellenar la tabla de páginas;
    (5) Volver al usuario;

3. Mapeo entre dirección virtual y dirección física

La asignación de una dirección en la tabla de páginas se denomina entrada. Suponga que el tamaño de una entrada es de 9 bytes (dirección virtual + dirección física + atributo), y hay un total de 2^32 entradas en una dirección de 32 bits. , que son entradas de 4 GB y un total de 36 GB de espacio de tabla de páginas, una tabla de páginas tan grande no se puede almacenar en la memoria;

  • De hecho, el sistema operativo divide la dirección virtual en la asignación de la dirección virtual a la dirección física: los
    inserte la descripción de la imagen aquí
    primeros diez bits de la dirección virtual se indexan en la tabla de páginas de primer nivel y la relación de asignación de la tabla de páginas de primer nivel es 2^10 en total, que es 1024;
    la tabla de páginas de primer nivel se asigna a la tabla de páginas de segundo nivel, y luego la dirección de 10 bits del medio se recupera en la tabla de páginas de segundo nivel correspondiente; la tabla de páginas de segundo
    nivel la tabla de páginas se asigna a la dirección de inicio de una página de memoria física;
    la última dirección de 12 bits representa el desplazamiento en la página de esta dirección (porque 2^12 = 4 KB);

    esto puede reducir el consumo de espacio de la tabla de páginas;

Supongo que te gusta

Origin blog.csdn.net/kissland96166/article/details/132285255
Recomendado
Clasificación