Un sistema operativo de computadora moderno generalmente segrega la memoria virtual en el espacio del kernel y el espacio del usuario . [a] Principalmente, esta separación sirve para brindar protección a la memoria y al hardware frente al comportamiento del software malintencionado o errado.
El espacio del kernel está estrictamente reservado para ejecutar un kernel de sistema operativo privilegiado , extensiones del 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.
Descripción general
El término área 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 el sistema operativo usa para interactuar con el kernel: 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 sistemas operativos convencionales de hoy en día 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 kernel 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 están disponibles otras técnicas para permitir la comunicación entre procesos .
Modo de usuario | Aplicaciones de usuario | bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ... | ||||
---|---|---|---|---|---|---|
Componentes del sistema | Demonios : systemd , runit , udevd , polkitd , sshd , smbd ... | Administrador de ventanas : X11 , Wayland , SurfaceFlinger (Android) | Gráficos : Mesa , AMD Catalyst , ... | Otras bibliotecas: GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ... | ||
Biblioteca estándar de C | fopen , execv , malloc , memcpy , localtime , pthread_create ... (hasta 2000 subrutinas ) glibc aspira a ser rápido, MUSL y uClibc sistemas de destino embebidos, biónicos escritas para Android , etc. Todo objetivo es ser POSIX / SUS compatible. | |||||
Modo kernel | Kernel de Linux | stat , splice , dup , read , open , ioctl , write , mmap , close , exit , Etc (alrededor de 380 llamadas al sistema) El núcleo de Linux Call Interface System (SCI, tiene como objetivo ser POSIX / SUS compatible) [ cita requerida ] | ||||
Subsistema de programación de procesos | Subsistema IPC | Subsistema de gestión de memoria | Subsistema de archivos virtuales | Subsistema de red | ||
Otros componentes: ALSA , DRI , evdev , LVM , mapeador de dispositivo , Linux programador de red , Netfilter Módulos de Seguridad de Linux : SELinux , Tomoyo , AppArmor , Smack | ||||||
Hardware ( CPU , memoria principal , dispositivos de almacenamiento de datos , etc.) |
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 .
Otro enfoque adoptado en los sistemas operativos experimentales es tener un solo espacio de direcciones para todo el software y confiar en la semántica de un lenguaje de programación para asegurarse de 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. [2] [3] Este enfoque se ha implementado en JXOS , Unununium y en el proyecto de investigación Singularity de Microsoft .
Ver también
- BIOS
- Modos de CPU
- Protección de la memoria
Notas
- ^ Los sistemas operativos más antiguos, como DOS y Windows 3.1x , no utilizan esta arquitectura.
Referencias
- ^ "tierra de usuario, n." El archivo de jerga . Eric S. Raymond . Consultado el 14 de agosto de 2016 .
- ^ "Introducción al sistema Unununium" . Archivado desde el original el 15 de diciembre de 2001 . Consultado el 14 de agosto de 2016 .
- ^ "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
- Definición del espacio del kernel de Linux
- Ingresar al modo de usuario en Wayback Machine (archivado el 26 de marzo de 2016)