Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿Cómo? Pues con varias CPUs o repartiendo tiempo de proceso de una única CPU.
Comando tasklist desde consola de ejecución de comandos: Muestra lista de los procesos
que se están ejecutando.
Procesos y sistema operativo
CRTL + Alt + Supr - Administrador de tareas
Estados de un proceso
● En ejecución: ejecutándose actualmente
● Bloqueado: no se está ejecutando porque está esperando que ocurra un evento externo
(Ej: espera la finalización de una operación E/S).
● Listo: parado temporalmente y listo para ejecutarse cuando el sistema operativo le
asigne tiempo de CPU
Transiciones
En ejecución
Bloqueado Listo
Procesos padres, hijos, pipe,
sincronización
Desde un proceso padre se pueden generar procesos hijos, independientes, que en realidad
son otro comando del sistema operativo. Por ejemplo, podríamos generar un programa desde
el cual llamamos a una instrucción del sistema operativo que se ejecuta por su lado.
Para comunicar procesos se utilizan los llamados “pipe” (tubería). Es un falso fichero que sirve
para conectar dos procesos.
Un proceso padre quiere enviar datos a un proceso hijo, puede escribirlos en un pipe como si
este fuera un fichero de salida. El proceso hijo leerá los datos como si se tratase de un fichero
de entrada. También se puede dar estas comunicaciones entre procesos que no estén
emparentados.
Se usan señales para comunicar procesos de manera que se puedan sincronizar. Por ejemplo
cuando no se quiere que un proceso haga una acción hasta que otro haya terminado, el
primero esperará una señal que le enviará el segundo cuando termine.
Procesos con java
Métodos Misión
InputStream Devuelve el flujo de entrada conectado a la salida normal del subproceso. Para leer la salida del
getInputStream() proceso hijo.
int waitFor() Provoca que el proceso actual espera hasta que el subproceso representado por el objeto Procces
finalice. Devuelve 0 si ha finalizado correctamente.
InputStream getErrorStream() Devuelve el flujo de entrada conectado a la salida del error del subproceso.
OutputStream Devuelve el flujo de salida conectado a la entrada normal del subproceso. Para poder enviar datos al
getOutputStream() subproceso hijo.
Métodos Misión
Map<String, String> Devuelve en una estructura Map las variables de entorno del objeto
environment()
● Ejemplos 1, 2 y 3
● Actividad 1.1
○ Crea un programa Java llamado LeerNombre.java que reciba desde los argumentos de main()
un nombre y lo visualice en pantalla. Utiliza System.exit(0) para una finalización correcta del
programa y System.exit(-1) para el caso en el que no se hayan introducido los argumentos
correctos en main(). Posteriormente haz un programa similar a Ejemplo3.java para ejecutar
Leernombre.java. Utiliza el método waitFor() para comprobar el valor de salida del proceso que
se ejecuta. Prueba la ejecución del programa pasando un parámetro y sin pasarlo. ¿Qué
devuelve waitFor() en cada caso?
Procesos con java
La primera instrucción
x := x + 1;
debe ejecutarse antes
y := x + 1;
que la segunda
x := 1;
El orden no interviene en
y := 1;
el resultado final
z := 1;
Programas concurrentes: condiciones
de Berstein
Lectura Escritura
I1: x := y+1; I1 y x L(I1)={y} E(I1)={x}
I2: y := x+2; L(I2)={x} E(I2)={y}
I3: z:= a+b I2 x y L(I3)={a,b} E(I3)={z}
I3 a, b z
Se podrán ejecutar
concurrentemente Conjunto I1 e I2 - no posible concurrencia
instrucciones que cumplan las
siguientes condiciones: Conjunto I1 e I3 - posible concurrencia
L(Ii) ∩ E(Ij) = ∅
E(Ii) ∩ L(Ij) = ∅ Conjunto I2 e I3 - posible concurrencia
E(Ii) ∩ E(Ij) = ∅
Programación concurrente
Problemas inherentes
El problema a resolver se divide en partes independientes de tal forma que cada elemento
pueda ejecutar la parte de programa que le corresponda a la vez que los demás.
Ventajas Inconvenientes
A tener en cuenta:
Proyecto AVIDA
Programación distribuida
● Sockets: puntos externos para la comunicación entre procesos. Muy bajo nivel -
normalmente se recubren con una capa que facilita la comunicación de mensajes.
● Llamada de procedimientos remotos o RPC: Permite a un programa cliente llamar a un
procedimiento de otro programa en un servidor. El programa del servidor define su
interfaz.
● Invocación remota de objetos: modelo basado en objetos, y la invocación de métodos
remoto (RMI). Un objeto que vive en un proceso puede invocar métodos de un objeto
que reside en otro proceso. Java dispone de modelo de objetos RMI
● Protocolo SOAP (XML)
● Servicios REST (JSON)
● …
Programación distribuida
Ventajas Inconvenientes
Uso de la herramienta PVM (Paralel Virtual Machine) - herramientas software que permiten
emular un marco de computación concurrente, distribuido y de propósito general.
Permite conectar ordenadores de distintos sistemas operativos (unix, linux, windows) para
ser usados como un único gran ordenador paralelo de alto rendimiento.