Cambio de modo de usuario y modo Kernel

En su vida útil, un proceso se ejecuta en modo usuario y modo kernel . El modo Usuario es el modo normal donde el proceso tiene acceso limitado. Mientras que el modo Kernel es el modo privilegiado en el que el proceso tiene acceso sin restricciones a los recursos del sistema como hardware, memoria, etc. Un proceso puede acceder a los registros de hardware de E/S para programarlo, puede ejecutar el código del kernel del sistema operativo y acceder a los datos del kernel en el modo Kernel. Todo lo relacionado con la gestión de procesos, la gestión de hardware de E/S y la gestión de memoria requiere que el proceso se ejecute en modo Kernel.

Es importante saber que un proceso en modo Kernel obtiene poder para acceder a cualquier dispositivo y memoria, y al mismo tiempo, cualquier bloqueo en modo kernel hace que todo el sistema se caiga. Pero cualquier bloqueo en el modo de usuario solo provoca el proceso defectuoso.

El kernel proporciona la interfaz de llamadas al sistema ( SCI ), que son los puntos de entrada para el kernel. Las llamadas al sistema son la única forma en que un proceso puede pasar al modo kernel desde el modo usuario. El siguiente diagrama explica en detalle la transición del modo usuario al modo kernel.

Cambio de modo de usuario a modo kernel

Para entrar en el modo Kernel, un proceso de aplicación.

  • Llama a la función de la biblioteca Glibc .
  • La biblioteca Glibc conoce la forma correcta de llamar a System Call para diferentes arquitecturas. Configura el paso de argumentos según la interfaz binaria de la aplicación (ABI) de la arquitectura para prepararse para la entrada de la llamada del sistema.
  • Ahora Glibc llama a la instrucción SWI (instrucción de interrupción de software para ARM), que pone el procesador en modo Supervisor al actualizar los bits de modo del registro CPSR y salta a la dirección de vector 0x08.
  • Hasta ahora la ejecución del proceso estaba en modo Usuario. Después de la ejecución de la instrucción SWI, el proceso puede ejecutar el código del núcleo. La Unidad de administración de memoria (MMU) ahora permitirá el acceso y la ejecución de la memoria virtual del kernel para este proceso.
  • Desde la dirección del vector 0x08 , la ejecución del proceso se carga y salta a la rutina del controlador de interrupción SW, que es vector_swi() para ARM.
  • En vector_swi() , el número de llamada del sistema ( SCNO ) se extrae de la instrucción SWI y la ejecución salta a la función de llamada del sistema utilizando SCNO como índice en la tabla de llamadas del sistema sys_call_table .
  • Después de la ejecución de la llamada al sistema, en la ruta de retorno, los registros del espacio de usuario se restauran antes de iniciar la ejecución en el modo de usuario.

Para admitir el modo kernel y el modo de usuario, el procesador debe tener soporte de hardware para diferentes modos de privilegio. Por ejemplo, el procesador ARM admite siete modos diferentes.

Modo de procesador Bits de modo CPSR Observación
Usuario   10000 Sin privilegios ni modo de usuario
FIQ   10001 Modo de interrupción rápida
IRQ   10010 Modo de interrupción
Supervisor   10011 Modo de núcleo
Abortar   10111 Modo para el manejo de violaciones de memoria
Indefinido   11011 Modo de manejo de instrucciones no definido
Sistema   11111 Igual que el modo Supervisor pero con reingreso

Conclusión:
para cualquier sistema, el modo privilegiado y el modo sin privilegios son importantes para la protección de acceso. El procesador debe tener soporte de hardware para el modo usuario/núcleo. Las interfaces de llamadas del sistema (SCI) son la única forma de pasar del espacio del usuario al espacio del kernel. El cambio de espacio del kernel se logra mediante la interrupción del software, que cambia el modo del procesador y salta la ejecución de la CPU al controlador de interrupciones, que ejecuta la rutina de llamada al sistema correspondiente.

Publicación traducida automáticamente

Artículo escrito por sandeepjainlinux y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *