Red de conocimiento del abogados - Ley de patentes - ¿Gestión de memoria de procesos de Linux?

¿Gestión de memoria de procesos de Linux?

Para los procesadores que contienen MMU, el sistema Linux proporciona un complejo sistema de gestión de almacenamiento, permitiendo que la memoria a la que puede acceder el proceso alcance los 4GB. En el sistema Linux, el espacio de memoria de 4 GB del proceso se divide en dos partes: espacio de usuario y espacio de kernel. Las direcciones del espacio de usuario generalmente se distribuyen entre 0 y 3 GB (es decir, PAGE_OFFSET, que es igual a OxC0000000 en Ox86. De esta manera, los 3 a 4 GB restantes son el espacio del kernel. El proceso del usuario generalmente solo puede acceder al virtual). dirección del espacio de usuario y no puede acceder a la dirección virtual del kernel. Los procesos de usuario solo pueden acceder al espacio del kernel a través de llamadas al sistema (ejecutándose en modo kernel en nombre del proceso de usuario).

El espacio de usuario de cada proceso es completamente independiente y no está relacionado entre sí. Cada proceso de usuario tiene una tabla de páginas diferente. El espacio del kernel está asignado por el kernel. No cambia con el proceso y es fijo. La asignación de dirección virtual a dirección física del espacio del kernel es compartida por todos los procesos, y el espacio virtual del kernel es independiente de otros programas.

El espacio de direcciones del kernel de 1 GB en Linux se divide en área de mapeo de memoria física, área de asignación de memoria virtual, área de mapeo de páginas de alta gama, área de mapeo de páginas dedicada y área de mapeo reservada para el sistema.

Para los sistemas x86, en circunstancias normales, la longitud máxima del área de mapeo de memoria física es 896 MB, y la memoria física del sistema se asigna secuencialmente en esta área del espacio del kernel. Cuando la memoria física del sistema es superior a 896 MB, la parte de la memoria que excede el área de mapeo de la memoria física se llama memoria de gama alta (y la memoria que no excede el área de mapeo de la memoria física generalmente se llama memoria convencional). debe asignarlos al acceder a la memoria de alta gama al área de asignación de páginas de alta gama. Linux reserva el área FIXADDR_TOP~4GB en la parte superior del espacio del kernel como área reservada.

Cuando la memoria física del sistema supera los 4 GB, se debe utilizar la entrada del directorio de páginas de 64 bits proporcionada por el modo de paginación extendida (PAE) de la CPU para acceder a la memoria física superior a 4 GB, lo que requiere soporte de CPU. Las CPU Intel Pentium Pro y posteriores que han agregado la función PAE permiten configurar la memoria hasta 64 GB y tienen capacidades de direccionamiento de espacio de direcciones físicas de 36 bits.

Se puede ver que para x86 de 32 bits, en el espacio del kernel entre 3 y 4 GB, el orden desde la dirección baja hasta la dirección alta es: área de mapeo de memoria física → zona de aislamiento → área de asignación de memoria virtual vmalloc → zona de aislamiento → área de mapeo de memoria de alta gama → área de mapeo de página dedicada → área reservada.