stringtranslate.com

Espacio de usuario y espacio del kernel

Un sistema operativo de computadora moderno generalmente usa memoria virtual para proporcionar espacios de direcciones separados llamados espacio de usuario y espacio de kernel . [a] Principalmente, esta separación sirve para proporcionar protección de la memoria y del hardware contra comportamientos de software maliciosos o errantes.

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 la aplicación y algunos controladores, normalmente un espacio de direcciones por proceso.

Descripción general

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

Cada proceso del 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 privilegios suficientes, los procesos pueden solicitar al núcleo que asigne parte del espacio de memoria de otro proceso al suyo, como es el caso de los depuradores . Los programas también pueden solicitar regiones de memoria compartida con otros procesos, aunque también hay otras técnicas disponibles para permitir la comunicación entre procesos .

Implementación

La forma más común de implementar un modo de usuario separado del modo kernel implica anillos de protección del sistema operativo . Los anillos de protección, a su vez, se implementan mediante modos de CPU . Normalmente, los programas espaciales 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 con un único espacio de direcciones : tienen un único espacio de direcciones para todo el código en modo de usuario. (El código en 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.

Otro enfoque adoptado en los sistemas operativos experimentales es tener un único espacio de direcciones para todo el software y confiar en la semántica de un lenguaje de programación para garantizar que no se pueda acceder a la memoria arbitraria: las aplicaciones simplemente no pueden adquirir ninguna referencia a los objetos a los que no se les permite. acceso. [3] [4] Este enfoque se ha implementado en JXOS , Unununium y en el proyecto de investigación Singularity de Microsoft .

Ver también

Notas

  1. ^ Los sistemas operativos más antiguos, como DOS y Windows 3.1x , no utilizan esta arquitectura.

Referencias

  1. ^ "tierra de usuario, n." El archivo de jerga . Eric S. Raymond . Consultado el 14 de agosto de 2016 .
  2. ^ "Léame de la Guía de administración". Repositorios git de Kernel.org .
  3. ^ "Introducción al sistema Ununinium". Archivado desde el original el 15 de diciembre de 2001 . Consultado el 14 de agosto de 2016 .
  4. ^ "uuu/docs/system_introduction/uuu_intro.tex". Guía de introducción al sistema UUU . 2001-06-01 . Consultado el 14 de agosto de 2016 .

enlaces externos