Espacio de usuario y espacio del kernel

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

Un sistema operativo de computadora moderno generalmente segrega la memoria virtual en espacio de usuario y espacio de kernel. Principalmente, esta separación sirve para brindar protección a la memoria y al 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 aplicación y algunos controladores.

Resumen

El término espacio de usuario (o área de usuario) se refiere a todo el código que se ejecuta fuera del núcleo del sistema operativo. El espacio de usuario generalmente se refiere a los diversos programas y bibliotecas que utiliza el sistema operativo 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 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 regiones de memoria compartida con otros procesos, aunque también hay otras técnicas disponibles para permitir la comunicación entre procesos.

Varias capas dentro de Linux, también mostrando separación entre el espacio de usuario y el núcleo
Modo de usuario Aplicaciones de usuariobash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox,...
Componentes del sistemainit daemon:
OpenRC, Runit, systemd...
Demonios del sistema:
polkitd, smbd, sshd, udevd...
Administrador de ventana:
X11, Wayland, SurfaceFlinger (Android)
Gráficos:
Mesa, AMD Catalyst,...
Otras bibliotecas:
GTK, Qt, EFL, SDL, SFML, FLTK, GNUstep,...
C biblioteca estándarfopen, execv, malloc, memcpy, localtime, pthread_create... (hasta 2000 subrutinas)
glibc pretende ser rápido, musl pretende ser ligero, uClibc sistemas integrados de objetivos, bionico fue escrito para Android, etc. Todo apunta a ser compatible con POSIX/SUS.
Modo de kernel Linux kernelstat, splice, dup, read, open, ioctl, write, mmap, close, exit, etc. (alrededor de 380 llamadas del sistema)
La interfaz de llamada del sistema Linux (SCI), tiene como objetivo ser compatible con POSIX/SUS
Programación de procesos
subsistema
IPC
subsistema
Gestión de memoria
subsistema
Archivos virtuales
subsistema
Red
subsistema
Otros componentes: ALSA, DRI, evdev, klibc, LVM, mapper de dispositivos, Linux Network Scheduler, Netfilter
Módulos de Seguridad 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. 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 un solo espacio de direcciones: tienen un solo espacio de direcciones 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.

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 asegurarse de que no se pueda acceder a la memoria arbitraria; las aplicaciones simplemente no pueden adquirir ninguna referencia a la objetos a los que no tienen permitido acceder. Este enfoque se ha implementado en JXOS, Unununium y en el proyecto de investigación Singularity de Microsoft.

Contenido relacionado

Interferencia entre símbolos

En telecomunicaciones, la interferencia entre símbolos es una forma de distorsión de una señal en la que un símbolo interfiere con los símbolos...

Sobremodulación

Sobremodulación es la condición que prevalece en telecomunicaciones cuando el nivel instantáneo de la señal moduladora excede el valor necesario para...

Longitud de coherencia

Este artículo se centra en la coherencia de los campos electromagnéticos clásicos. En la mecánica cuántica, existe un concepto matemáticamente análogo...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save