Pasar al contenido principal

Tema 1 - Procesos y Hebras

Versión para impresiónSend by email

Introducción

Los Sistemas Operativos convencionales (Linux, Windows, OS X) cuentan con un gestor de procesos, que permite multiplexar los procesos en el tiempo (o paralelizarlos en sistemas multiprocesador). El uso de este recurso a la hora de realizar programas se denomina programación concurrente, y es lo contrario de la programación secuencial en la que sólo existe un proceso simultáneo.

Procesos

Un proceso no es similar a un programa. El proceso es el código de programa + el estado de ejecución del mismo. Se cargan en memoria junto con los datos estáticos, dinámicos, espacio libre y una pila:

Esta estructura se muestra para cada proceso existente y se gestionan por el Planificador de Procesos (Scheduler), que gestiona cada proceso mediante su Bloque de Control de Proceso (PCB), que contiene el identificador de proceso (pid), el estado, valores de los registros, estadísticas de ejecución... El Scheduler multiplexa los procesos en el procesador asignando a cada proceso diferentes estados:

Las características principales de los procesos son:

  • Tienen espacio de memoria propio.
  • Normalmente un proceso equivale a un programa en ejecución.
  • Son relativamente pesadas, por el hecho de tener espacio de memoria propio, y porque el cambio de contexto (cambio de ejecutar un proceso por otro) es algo pesado.
					        				        					 

Hebras

Las hebras son conceptualmente similares a los procesos, con pequeñas diferencias. La principal es que comparten espacio de memoria y recursos.

Por esta razón son bastante más ligeras que los procesos y se usan generalmente para dividir un problema complejo en varios más sencillos a la hora de programar.

Las hebras se gestionan por el Scheduler por medio de los Bloques de Control de Hebra (TCB) que simplemente contienen el contador de programa, el puntero de pila y el estado de los registros. Los PCB contienen punteros a todos los TCB de las hebras asociadas al proceso y los estados son similares a los de un proceso.

La gestión de las hebras puede seguir varios modelos, dependiendo del Sistema Operativo:

  • Varias a una: Varias hebras de usuario se ejecutan mediante una hebra del núcleo
  • Una a una: Cada hebra de usuario se asocia a una del núcleo
  • Varias a Varias: Multiplexa varias hebras de usuario en un número menor o igual de hebras del núcleo. Así combina las ventajas de los dos modelos anteriores.

Las características principales de las hebras son:

  • Comparten espacio de memoria
  • Su cambio de contexto es muy ligero por lo que, para tareas sencillas (métodos sencillos) el rendimiento del procesador es mucho más alto.