En este artículo, comprenderemos el modelo de subprocesos múltiples en el sistema operativo.
Modelo de subprocesos múltiples:
El multiproceso permite a la aplicación dividir su tarea en subprocesos individuales. En multihilos, el mismo proceso o tarea se puede realizar por la cantidad de subprocesos, o podemos decir que hay más de un hilo para realizar la tarea en multihilos. Con el uso de subprocesos múltiples, se puede lograr la multitarea.
java largo a cadena
El principal inconveniente de los sistemas de subproceso único es que solo se puede realizar una tarea a la vez, por lo que para superar el inconveniente de este subproceso único, existe el subproceso múltiple que permite realizar múltiples tareas.
Por ejemplo:
En el ejemplo anterior, el cliente1, el cliente2 y el cliente3 acceden al servidor web sin esperar. En subprocesos múltiples, se pueden ejecutar varias tareas al mismo tiempo.
En un sistema operativo, los subprocesos se dividen en subprocesos a nivel de usuario y subprocesos a nivel de kernel. Los subprocesos a nivel de usuario se manejan de forma independiente por encima del kernel y, por lo tanto, se administran sin ningún soporte del kernel. Por el contrario, el sistema operativo gestiona directamente los subprocesos a nivel del kernel. Sin embargo, debe existir una forma de relación entre los subprocesos a nivel de usuario y a nivel de kernel.
Existen tres modelos multiproceso establecidos que clasifican estas relaciones:
- Modelo de subprocesos múltiples de muchos a uno
- Modelo multiproceso uno a uno
- Muchos a muchos modelos multiproceso
Modelo de subprocesos múltiples de muchos a uno:
El modelo de muchos a uno asigna muchos subprocesos de niveles de usuario a un subproceso del núcleo. Este tipo de relación facilita un entorno de cambio de contexto eficaz, que se implementa fácilmente incluso en un núcleo simple sin soporte de subprocesos.
descargar youtube vlc reproductor multimedia
La desventaja de este modelo es que, dado que sólo hay una programación de subprocesos a nivel de kernel en un momento dado, este modelo no puede aprovechar la aceleración de hardware que ofrecen los procesos multiproceso o los sistemas multiprocesador. En esto, toda la gestión de subprocesos se realiza en el espacio de usuario. Si llega el bloqueo, este modelo bloquea todo el sistema.
En la figura anterior, el modelo de muchos a uno asocia todos los subprocesos a nivel de usuario a subprocesos únicos a nivel de kernel.
Modelo multiproceso uno a uno
El modelo uno a uno asigna un único subproceso a nivel de usuario a un único subproceso a nivel de kernel. Este tipo de relación facilita la ejecución de múltiples subprocesos en paralelo. Sin embargo, este beneficio tiene su inconveniente. La generación de cada nuevo subproceso de usuario debe incluir la creación de un subproceso del núcleo correspondiente que provoque una sobrecarga, que puede obstaculizar el rendimiento del proceso principal. Los sistemas operativos Windows y Linux intentan abordar este problema limitando el crecimiento del número de subprocesos.
contar distinto
En la figura anterior, un modelo asocia ese subproceso a nivel de usuario a un único subproceso a nivel de kernel.
Modelo de muchos a muchos modelo multiproceso
En este tipo de modelo, hay varios subprocesos a nivel de usuario y varios subprocesos a nivel de kernel. La cantidad de subprocesos del kernel creados depende de una aplicación en particular. El desarrollador puede crear tantos hilos en ambos niveles pero es posible que no sean los mismos. El modelo de muchos a muchos es un compromiso entre los otros dos modelos. En este modelo, si algún subproceso realiza una llamada al sistema de bloqueo, el núcleo puede programar la ejecución de otro subproceso. Además, con la introducción de múltiples subprocesos, la complejidad no está presente como en los modelos anteriores. Aunque este modelo permite la creación de múltiples subprocesos del kernel, este modelo no puede lograr una verdadera concurrencia. Esto se debe a que el kernel sólo puede programar un proceso a la vez.
Muchas o muchas versiones del modelo de subprocesos múltiples asocian varios subprocesos a nivel de usuario con la misma o mucha menos variedad de subprocesos a nivel de kernel en la figura anterior.