next up previous contents
Next: El nano System Up: Procesos Previous: Procesos

Clasificación de procesos

Procesos pesados versus procesos livianos

Los procesos que implementa un sistema operativo se clasifican según el grado en que comparten la memoria (ver figura gif):

  
Figure: Procesos pesados y livianos

El primer tipo de procesos se dice pesado porque el costo de implementación en tiempo de CPU y memoria es mucho más elevado que el de los procesos livianos. Además la implementación de procesos pesados requiere de una MMU o Unidad de Manejo de la Memoria. Esta componente de hardware del procesador se encarga de la traducción de direcciones virtuales a reales. La implementación en software de esta traducción sería demasiado costosa en tiempo de CPU, puesto que para garantizar una verdadera protección habría que recurrir a un intérprete del lenguaje de máquina.

Unix estándar sólo ofrece procesos pesados, pero como veremos existen extensiones que implementan procesos livianos para Unix. Un ejemplo de sistema de procesos livianos es el que implementaba el sistema operativo de los computadores Commodore Amiga, que no tenía la MMU necesaria para implementar procesos pesados.

La ventaja de los procesos pesados es que garantizan protección. Si un proceso falla, los demás procesos continúan sin problemas. En cambio si un thread falla, esto causa la falla de todos los demás threads que comparten el mismo procesador.

La ventaja de los threads es que pueden comunicarse eficientemente a través de la memoria que comparten. Si se necesita que un thread comunique información a otro thread basta que le envíe un puntero a esa información. En cambio los procesos pesados necesitan enviar toda la información a otro procesos pesado usando pipes, mensajes o archivos en disco, lo que resulta ser más costoso que enviar tan solo un puntero.

Preemption versus non-preemption

Los procesos también se pueden clasificar según quién tiene el control para transferir el procesador multiplexado de un proceso a otro:

Los procesos de Unix son preemptive mientras que los procesos de Windows 3.X o Macintosh Sistema 7.X son non-preemptive. En Windows si una aplicación entra en un ciclo infinito, no hay forma de quitarle el procesador real, la única salida es el relanzamiento del sistema. Lo mismo ocurre en un Macintosh. Por esta misma razón, la tendencia a futuro es que todos los sistemas ofrecerán procesos preemptive.



next up previous contents
Next: El nano System Up: Procesos Previous: Procesos



José M. Piquer
Fri Apr 9 15:57:37 CLT 1999