Procesos y subprocesos de sistemas operativos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,2 KB

Implementación de Procesos :


Tabla de procesos


Es un arreglo de estructuras ,Ésta contiene información del proceso tales como:

Contador de programa ,Puntero a la pila ,Asignación de memoria ,Estado de los archivos abiertos por el proceso ,Información contable y de planificación .

Cabe señalar que los campos de la tabla de procesos varían mucho de un sistema a otro, independiente del tipo de sistema que sea

Una vez vista la tabla de procesos se puede explicar mejor la forma en que el computador mantiene la ilusión de muchos procesos secuenciales en una máquina con un solo CPU y muchos dispositivos de E/S

Cada clase de dispositivo está asociada con una dirección de memoria k se llama vectores de interupcion

Subprocesos :


También son llamados hilos, hebras y threads ,

En los sistemas operativos tradicionales cada proceso tiene un espacio de direcciones y un solo subproceso de control

Sin embargo muchas veces es bueno tener varios subprocesos de control en el mismo espacio de direcciones trabajando en forma pseudoparalela .

Aunque un subproceso debe ejecutarse dentro de algún proceso, el proceso y el subproceso son conceptos distintos que pueden tratarse aparte .

Los procesos sirven para agrupar recursos, los subprocesos son entidades que se planifican para ejecutarse en el CPU .

Gracias al modelo de subprocesos existe la posibilidad de que hayan varias ejecuciones en el mismo entorno de un proceso, independientes entre sí .

Los subprocesos comparten un mismo espacio de direcciones, archivos abiertos y otras cosas .

También comparten memoria física, discos y otros recursos .

Debido a que tienen algunas de las propiedades de los procesos, aveces les llaman procesos ligeros.

Los subprocesos de un proceso no son tan independientes como un proceso de otro .

Todos tienen exactamente el mismo espacio de direcciones, lo que implica que comparten las mismas variables globales

 No existe protección entre subprocesos pues es imposible e innecesaria .

Un subproceso tiene los mismos estados que un proceso .

Generalmente los procesos empiezan con un solo subproceso.

Los subprocesos se generan invocando a una llamada de biblioteca, por ejemplo a thread_create

Cuando un subproceso termina se ejecuta otra llamada de biblioteca llamada thread_exit

Algunas veces se puede hacer que un subproceso espere a que otro termine para comenzar, para eso se debería invocar a thread_wait

Existe una llamada común para subprocesos llamada thread_yield

Esta llamada permite que un subproceso ceda voluntariamente su turno de ejecución a otro.

Una llamada como esta es importante debido a que en este caso no existe una interrupción de reloj que obligue a que un subproceso comparta su quantum (como en el caso de los procesos)

¿Qué pasaría si un subproceso cierra un archivo mientras otro aún lo está usando?


Como los subprocesos no están enlazados con recursos son mas fáciles de crear y de destruir que los procesos

 Son muy útiles en sistemas con múltiples CPU, en los que es posible un verdadero paralelismo .

Implementaciones a nivel de usuario


Consiste en implementar completamente el sistema de subprocesos a nivel de usuario ,El kernel no está al tanto de su existencia ,La ventaja es que se puede implementar en un sistema operativo que no maneje subprocesos ,Todos los sistemas operativos eran así y aún algunos están en esa categoría ,Cuando se usa este sistema cada proceso debe tener su propia tabla de subprocesos .

Cuando un subproceso termina, invoca a thread_yield ,Permite que cada proceso use un algoritmo de planificación personalizado ,

También tienen problemas importantes ,

El principal problema de este sistema es el manejo de los bloqueos .

Si el subproceso no cede su turno de ejecución, ningún otro podrá ejecutarse.

Implementaciones a nivel de kernel :


El kernel está al tanto de la existencia de los subprocesos y los administra ,

No es necesario un sistema de ejecución en cada uno de los procesos, ni tampoco tabla de subprocesos

El kernel lleva una propia tabla de subprocesos y lleva el control de todos los subprocesos del sistema

Cada vez que se necesita crear o destruir un subproceso se emite una llamada al kernel

La tabla de subprocesos del kernel contiene los registros, el estado y además información de cada subproceso

Esto quiere decir que todos los datos que maneja el proceso cuando es a nivel de usuario ahora los maneja el kernel

Los subprocesos a nivel de kernel no necesitan nuevas llamadas al sistema no bloquadoras

Si un proceso causa un fallo de página, el kernel puede verificar fácilmente si éste tiene algún subproceso ejecutándose.

Su desventaja es el costo elevado de una llamada al sistema; si las operaciones con subprocesos crecen en número se necesitará mucho procesamiento extra

Entradas relacionadas: