Espacio de usuario y espacio del kernel


Un sistema operativo de computadora moderno generalmente separa la memoria virtual en espacio de usuario y espacio de kernel . [a] Principalmente, esta separación sirve para brindar protección a la memoria y al hardware contra el comportamiento malicioso o erróneo del software.

El espacio del kernel está estrictamente reservado para ejecutar un kernel de sistema operativo privilegiado , extensiones de kernel y la mayoría de los controladores de dispositivos . Por el contrario, el espacio de usuario es el área de memoria donde se ejecutan el software de aplicación y algunos controladores.

El término espacio de usuario (o espacio de usuario) se refiere a todo el código que se ejecuta fuera del kernel del sistema operativo. [1] Userland generalmente se refiere a los diversos programas y bibliotecas que utiliza el sistema operativo para interactuar con el núcleo: software que realiza entrada/salida , manipula objetos del sistema de archivos , software de aplicación , etc.

Cada proceso de espacio de usuario normalmente se ejecuta en su propio espacio de memoria virtual y, a menos que se permita explícitamente, no puede acceder a la memoria de otros procesos. Esta es la base para la protección de la memoria en los principales sistemas operativos actuales y un componente básico para la separación de privilegios . También se puede utilizar un modo de usuario independiente para crear máquinas virtuales eficientes; consulte los requisitos de virtualización de Popek y Goldberg . Con suficientes privilegios, los procesos pueden solicitar al núcleo que asigne parte del espacio de memoria de otro proceso al propio, como es el caso de los depuradores . Los programas también pueden solicitar memoria compartidaregiones con otros procesos, aunque también hay otras técnicas disponibles para permitir la comunicación entre procesos .

La forma más común de implementar un modo de usuario separado del modo kernel involucra los anillos de protección del sistema operativo . Los anillos de protección, a su vez, se implementan utilizando modos de CPU . Por lo general, los programas de espacio del kernel se ejecutan en modo kernel , también llamado modo supervisor ; las aplicaciones normales en el espacio de usuario se ejecutan en modo de usuario.

Muchos sistemas operativos son sistemas operativos de espacio de direcciones único : tienen un espacio de direcciones único para todo el código de modo de usuario. (El código de modo kernel puede estar en el mismo espacio de direcciones o puede estar en un segundo espacio de direcciones). Muchos otros sistemas operativos tienen un espacio de direcciones por proceso, un espacio de direcciones separado para todos y cada uno de los procesos en modo de usuario.