Implementar subprocesos en el espacio del usuario

Requisito previo: diferencia entre proceso y subproceso , diferencia entre subproceso de nivel de usuario y subproceso de nivel de kernel

Introducción: 
en un sistema operativo, hay una serie de programas, y tanto el sistema operativo como el usuario comparten los recursos de hardware y software del sistema informático. Para garantizar que un programa incorrecto no perjudique a otros programas o al sistema operativo, distingue entre el código definido por el usuario y el código del sistema operativo. 
El enfoque es que solo la tarea que se ejecuta en nombre del sistema operativo recibe soporte de hardware, lo que se conoce como modo kernel , mientras que la tarea que se ejecuta en nombre de una aplicación de usuario no lo es, lo que se conoce como modo de usuario .

  • El modo kernel es un modo privilegiado, donde el proceso tiene acceso a todos los recursos, como hardware, datos del kernel, código del kernel del sistema operativo.
  • La diferencia básica es que, en modo kernel, el kernel puede acceder directamente al hardware, pero este no es el caso con el modo usuario. Sin embargo, cuando una aplicación de usuario solicita un servicio del sistema operativo, el sistema debe hacer una transición del modo usuario al modo kernel. 

Una mejor manera de entender el concepto es mirando el siguiente diagrama. 

Un hilo es una unidad de ejecución, que forma parte de un proceso. Comparte los recursos del proceso. Está programado por el programador. Hay dos formas de implementar un hilo, ya sea en el espacio del usuario o en el Kernel.

Los subprocesos se pueden implementar en el espacio del usuario, sin el soporte del kernel. Las siguientes cosas suceden si implementamos un hilo en el espacio del usuario:

  1. El código correspondiente y las estructuras de datos utilizadas se almacenan en el espacio del usuario.
  2. Si se invoca una API, da como resultado una llamada al sistema local en el espacio del usuario, en lugar de una llamada al sistema.
  3. Los subprocesos son administrados completamente por el sistema de tiempo de ejecución, sin que el kernel sepa nada al respecto.

Modelos de subprocesos a nivel de usuario:
un subproceso en el espacio de usuario se puede implementar utilizando cualquiera de los siguientes cuatro métodos:-

  1. Cara a cara
  2. muchos a uno
  3. Muchos a muchos
  4. Dos niveles.

En cada uno de los modelos anteriores, el subproceso en el espacio de usuario se asigna al de un subproceso del kernel o, más bien, a un procesador virtual.

1. Uno a uno:
En este tipo de modelo –

  • Cada subproceso de nivel de usuario se asigna a un subproceso de nivel de kernel independiente.
  • Cada subproceso en el espacio de usuario se ejecuta en un subproceso de nivel de kernel separado.
  • Aquí, el núcleo debe proporcionar una llamada al sistema para crear un nuevo subproceso del núcleo.

2. Muchos a uno:
En este tipo de modelo –

  • Múltiples subprocesos en el espacio del usuario se asignan con un solo subproceso en el nivel del kernel.
  • En otras palabras, todos los subprocesos a nivel de usuario se ejecutan en el mismo subproceso del núcleo.
  • Dado que solo hay un subproceso de kernel, solo se ejecuta un subproceso de nivel de usuario a la vez.
  • Cada subproceso de usuario realiza una llamada al sistema para crear un nuevo subproceso del núcleo.

3. Muchos a muchos:
en este tipo de modelo:

  • Se asigna una cantidad n de subprocesos a nivel de usuario para ejecutarse en una cantidad m de subprocesos a nivel de kernel.

4. Dos niveles:
En este tipo de modelo –

  • Esta es una versión híbrida de los modelos muchos a muchos y uno a uno.
  • Solo se permite vincular un conjunto limitado de subprocesos de usuario a un solo subproceso del núcleo.

Ventajas:
hemos visto qué son los subprocesos, cómo los subprocesos de nivel de usuario son diferentes del nivel de kernel y los diferentes tipos de subprocesos de usuario. Pero, ¿cuál es la motivación detrás de usar un hilo a nivel de usuario? Veamos algunas de sus ventajas: –

  1. Dado que no hay necesidad de una llamada al sistema, el proceso general es rápido y eficiente.
  2. La organización sencilla, ya que los hilos se crean, conmutan y gestionan sin intervenir en el kernel.
  3. Se puede implementar en un sistema cuyo sistema operativo no admita subprocesos a nivel de kernel.

Desventajas:
A cada ventaja, viene una desventaja correspondiente:

  1. Programación deficiente, como asignar un proceso con un subproceso inactivo o bloquear un proceso, porque un subproceso tiene un bloqueo.
  2. El rendimiento puede ser inconsistente.

Publicación traducida automáticamente

Artículo escrito por duttabhishek0 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 *