Programacion Concurrente

Páginas: 9 (2242 palabras) Publicado: 25 de noviembre de 2012
CAPÍTULO 2. PROCESOS VS. HILOS
El objetivo de este capítulo es el de discutir con un poco más de profundidad todo lo relacionado con el concepto de proceso que sea relevante para el estudio de la programación concurrente. En esta discusión aparecerá un nuevo concepto que es el de hilo o hebra1 y que resulta fundamental para entender cómo es la programación concurrente en Java. En primer lugarveremos el ciclo de vida de un proceso y las nociones de planificación de procesos y cambio de contexto. Posteriormente, se verá la disposición en memoria de las estructuras de datos relacionadas con un proceso. Por último nos adentraremos en el mundo de los hilos y su relación con los procesos y, particularmente, nos centraremos en el estudio de la gestión de hilos en Java.

2.1

Procesos2.1.1 Ciclo de vida de un proceso En la Figura 1 puede apreciarse el ciclo de vida que suele seguir un proceso. Este ciclo de vida es prácticamente estándar en todos los SSOO.
Creado

es su turno

Listo
fin de turno o abandono voluntario ocurre suceso

Ejecución

Terminado

espera suceso

Bloqueado Figura 1 Estados de un proceso.

En un principio, un proceso no existe. En algúnmomento es creado. La forma de crearlo variará en función del lenguaje que se esté utilizando. Una vez creado el proceso, éste pasa al estado denominado Listo. Este estado significa que el proceso está en condiciones de hacer uso de la CPU en cuanto se le dé la oportunidad. El encargado de darle la oportunidad de usar la CPU es el denominado planificador de procesos o scheduler, que suele formar partedel SO. Como lo normal es que haya más procesos que procesadores, no todos los procesos que pueden hacer uso de la CPU en un momento determinado pueden hacerlo realmente. Esos procesos permanecen en el
Suelen ser las traducciones más aceptadas del término inglés thread. A lo largo de este libro utilizaremos el término hilo. Usaremos Thread cuando hagamos referencia a la clase con ese nombre enJava.
1

estado listo hasta que el planificador decide darles tiempo de CPU. Cuando el planificador decide dar tiempo de CPU a un proceso, éste pasa al estado de Ejecución. Como puede comprobarse en la Figura 1, un proceso también puede pasar de Ejecución a Listo. Esta decisión la toma el planificador. El planificador sigue algún tipo de política de planificación para asignar la CPU a losdistintos procesos. Una forma bastante justa y extendida de hacerlo es mediante la asignación de rodajas de tiempo a cada uno de los procesos, de tal forma que cuando un proceso cumple su tiempo de permanencia en el procesador, éste es desalojado y pasado al estado listo. En este estado esperará una nueva oportunidad para pasar a Ejecución. También es posible que un proceso abandone voluntariamente laCPU y pase de esta forma al estado listo. También en la Figura 1 puede apreciarse la presencia del estado Bloqueado. Un proceso puede pasar de Ejecución a Bloqueado cuando ha de esperar porque ocurra un determinado evento o suceso. Ejemplos de eventos pueden ser la espera por la terminación de una operación de Entrada/Salida, la espera por la finalización de una tarea por parte de otro proceso, unbloqueo voluntario durante un cierto período de tiempo, etc. Una vez que ocurre el evento por el que se está esperando, el proceso pasa al estado Listo. Al acto de cambiar un proceso de estado se le denomina cambio de contexto. 2.1.2 Disposición en memoria de un proceso En un Sistema Operativo tradicional, la memoria suele estar dividida en dos partes: un espacio de usuario donde suele encontrarsela mayoría de la información relativa a los procesos de usuario y un espacio del núcleo donde reside el código y las estructuras de datos propios del SO.
pila y puntero de pila código del programa de usuario y contador de programa datos globales

proceso Espacio del usuario

bloque de control del proceso Espacio del núcleo núcleo

código del SO datos del SO

Figura 2 Mapa de memoria de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • PROGRAMACION CONCURRENTE
  • programación concurrente
  • Programacion concurrentes hilos
  • Programación concurrente servlet
  • Programacion concurrente y paralela
  • Programación concurrente en java
  • Python en programación concurrente
  • Unidad IV Programación concurrente (Multihilo)

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS