java

Páginas: 6 (1446 palabras) Publicado: 5 de noviembre de 2013
TEMA 2: PROCESOS E HILOS: CONCURRENCIA,
SINCRONIZACIÓN Y COMUNICACIÓN
1. Introducción
Definición de proceso (tarea según los fabricantes):
• Programa en ejecución.
• Cálculo computacional que puede hacerse concurrentemente con otros
cálculos.
• Secuencia de acciones llevadas a cabo a través de la ejecución de una
serie de instrucciones cuyo resultado final consiste en proveer algunafunción del sistema.
• Trabajo mínimo que es susceptible de ser planificado por un S.O.
Diferencia entre proceso y programa:
• Un programa lo forma sólo un código. Es un concepto estático.
• Un proceso lo forma el programa, la pila, los registros del procesador
(como puede ser el Contador de Programa (CP), Acumuladores, ...).
Es un concepto dinámico.
Un proceso puede involucrar la ejecución demás de un programa.
Por ejemplo:
• El sistema operativo es un programa que crea varios procesos en la
computadora donde se ejecuta.
• Los programas multitarea.
Un determinado programa puede estar involucrado en más de un proceso.
Por ejemplo:
• El código reentrante de un compilador.

La concurrencia es la activación de varios procesos a la vez. La
concurrencia se consigue haciendo que:(1) Los procesadores se asignen a distintos procesos (paralelismo o
concurrencia real).
(2) Se alternen varios procesos en un mismo procesador (concurrencia
aparente o simulada).
Sólo tendremos concurrencia real en sistemas multiprocesador (en un
sistema uniprocesador existe una concurrencia aparente).
El procesado concurrente o paralelo aparece cuando varios procesos se
encuentran en uninstante determinado en un estado intermedio entre sus
estados inicial y final.
La programación concurrente es mucho más difícil que la secuencial. Los
programas concurrentes son más difíciles de escribir, depurar y modificar,
y es más difícil probar que son correctos. La programación concurrente ha
despertado un gran interés porque permite expresar de una forma natural
las soluciones aciertos problemas de carácter inherentemente paralelo y
también por el paralelismo de hardware que se logra con los
multiprocesadores y sistemas distribuidos.
Estados básicos de un proceso:
• Entregado: Cuando un proceso pretende iniciar su ejecución.
• En ejecución: Ese proceso tiene el control de la CPU.
• Listo o preparado: El proceso se encuentra en memoria principal, sin
operaciones de E/Spendientes y listo para entrar en ejecución cuando
le corresponda.
• Terminado: El proceso ha terminado su ejecución y se ha liberado la
memoria principal en la que se ubicaba.

Transiciones entre los estados básicos de un proceso:
• create: Cuando un proceso ha sido creado.
• schedule: Cuando un proceso ha sido planificado (se le asigna la
CPU).
• reschedule: Cuando un proceso va avolver a planificarse.
• end: Cuando el proceso en ejecución ejecuta una instrucción de fin de
programa o cuando recibe una señal de fin de ejecución.
Los procesos concurrentes funcionan de forma totalmente independiente
unos de otros, lo que quiere decir que se ejecutan de forma asíncrona, pero
en ocasiones requieren cierta sincronización y cooperación.

2. Conceptos básicos
Veamos losconceptos básicos relacionados con la sincronización y
comunicación entre procesos concurrentes asíncronos.

2.1. Condiciones de carrera
Ocurre cuando dos o más procesos que están trabajando juntos comparten
algún dato modificable (por ejemplo, una posición de memoria de
lectura/escritura) que cada proceso puede leer o escribir y el resultado final
depende del orden de ejecución. (Nota: Esteproblema no sucede en
monoprogramación).
Ejemplo 1: Reserva de plazas en una compañía aérea.
Un asiento se representa por el contenido de una posición de
memoria (se puede identificar con una variable de tipo array)
que es accesible a más de un proceso.

Agente A

Agente B

Comprueba que la plaza está libre

Comprueba que la plaza está libre

Consulta a su cliente

Consulta a su...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java
  • Java
  • java
  • JAVA
  • java
  • java
  • javiera
  • Java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS