TAREA_5_EVA - tipos de sistemas operativos

Anuncio
TAREA NO.5
1.-Diferencia entre Programación Secuencial y Programación Concurrente.
La programación secuencial está basada en construcción de código a través de invocar a funciones,
lo que significa que a mayor complejidad y procesos a resolver por el programa, el código fuente va
creciendo, aparta que la ejecución del programa se realiza con una instrucción o subrutina que se
ejecuta una tras otra.
La programación concurrente es la simultaneidad en la ejecución de múltiples tareas interactivas.
Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único
programa. Las tareas se pueden ejecutar en una sola unidad central de proceso
(multiprogramación), en varios procesadores o en una red de computadores distribuidos. La
programación concurrente está relacionada con la programación paralela, pero enfatiza más la
interacción entre tareas. Así, la correcta secuencia de interacciones o comunicaciones entre los
procesos y el acceso coordinado de recursos que se comparten por todos los procesos o tareas son
las claves de esta disciplina.
2.-Este término es utilizado en programación concurrente, utilizado para indicar un programa
único en el que puede haber más de un contexto de ejecución activo simultáneamente.
Un hilo de ejecución, hebra o subproceso.
3.-Mencione los 5 estados de una hebra
En ejecución, listo, bloqueado.
4.-Explica el termino de condición de competencia aplicable a una hebra.
Una condición de competencia es un fenómeno que se produce cuando uno o varios procesos
compiten por uno o varios recursos produciendo el bloqueo en la ejecución de esos procesos, lo que
a la postre termina con el cuelgue del sistema.
5.-Explica como funcionaria el termino de exclusión mutua para un hilo
Se usa en programación concurrente para evitar que fragmentos de código conocidos como
secciones críticas accedan al mismo tiempo a recursos que no deben ser compartidos. La técnica
que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las interrupciones
durante el conjunto de instrucciones más pequeño que impedirá la corrupción de la estructura
compartida (la sección crítica). Esto impide que el código de la interrupción se ejecute en mitad de
la sección crítica.
6.-Menciona cuales son las características de los procesos concurrentes.
1. Indeterminismo: Las acciones que se especifican en un programa secuencial tienen un orden
total, pero en un programa concurrente el orden es parcial, ya que existe una incertidumbre
sobre el orden exacto de ocurrencia de ciertos sucesos, esto es, existe un indeterminismo
en la ejecucion. De esta forma si se ejecuta un programa concurrente varias veces pude
producir resultados diferentes partiendo de los mismos datos.
2. Interaccion entre procesos: Los programas concurrentes implican interaccion entre los
distintos procesos que los componen:
- Los procesoso que comparten recursos y compiten por el acceso a los
mismos.
- Los procesos que se comunican entre si para intercambiar datos.
1. 1. Gestion de recursos: Los recursos compartidos necesitan una gestion especial. Un
proceso que desee utilizar un recurso compartido debe solicitar dicho recurso, esperar
a adquirirlo, utilizarlo y despues liberarlo. Si el proceso solicita el recurso pero no puede
adquirirlo en ese momento, es suspendido hasta que el recurso este disponible. La
gestion de recursos compartidos es problematica y se debe realizar de tal forma que se
eviten situaciones de retraso indefinido ( espera indefinidamente por un recurso) y de
deadlock (bloqueo indefinido o abrazo mortal).
2. 2.
Comunicacion: La comunicacion entre procesos puede ser sincrona, cuando los
procesos necesitan sincronizarse para intercambiar los datos, o asincrona, cuando un
proceso que suministra los datos no necesita esperar a que el proceso receptor los
recoja, ya que los deja en un buffer de comunicacion temporal.
7.- ¿Cuáles son los métodos que se utilizan en java para controlar los estados de una hebra?
El método run.
Antes que nada, necesitamos proveer a cada hilo con un método run para indicarle qué
debe hacer. El código de este método implementa el comportamiento en ejecución del hilo
y puede hacer, prácticamente cualquier cosa capaz de ser codificada en Java.
Existen dos técnicas para proveer un método run para un hilo:


Haciendo una subclase de Thread y sobrecargando run
Implementando la interface Runnable. Aquí cabe mencionar, que el autor del libro
de texto (Jim Farley) incurre en un error al mencionar que Java provee dos clases
para soportar hilos (página 84, segundo párrafo); ya que Thread es una clase, pero
Runnable es una interface.
Tenemos buenas razones para utilizar cada una de estas técnicas. Sin embargo, a manera
de regla empírica: ``Si las clases que elaboras deben ser subclases de otras clases (un caso
común es Applet), entonces debe usarse Runnable.''
8.-Menciona los conceptos thread, yield, sleep, start, run, stop, suspend, resume, runnable.
THREAD: (Hilo) Es un flujo de ejecución secuencial dentro de un proceso.
YIELD: (Producir, ceder, rendimiento) Hace que el intérprete detenga temporalmente la
ejecución del objeto del hilo y permita que el siguiente hilo disponible se ejecute.
SLEEP: (Dormir) Provoca que el intérprete de Java ponga la tarea a dormir durante un tiempo
indicado en milisegundos, transcurrido dicho tiempo la tarea estará disponible para
ejecución.
START: (Empezar) Le indica al intérprete de Java que cree un contexto de ejecución de una
tarea e inicie su ejecución. Acto seguido se invoca el método run() de esta tarea en el nuevo
contexto de ejecución. Debe tenerse cuidado de llamar a start() no más de una vez para una
tarea determinada.
RUN: (Correr) Constituye el cuerpo de una tarea o hilo. Es llamado por el método start(),
despues que la tarea apropiada del sistema se haya inicializado. La tarea actual se detendrá
cada vez que run() devuelva el control. Este es el único método de la interfaz Runnable.
STOP: (Parar) Hace que el hilo termine su ejecución.
SUSPEND: (Suspender) Hace que el hilo interrumpa temporalmente su ejecución.
RESUME: (Reanudar) Se usa para recomenzar un hilo que está suspendido.
RUNNABLE: (Ejecutable) Es un ejemplo de interface en el cual se declara, pero no se
implemementa, una función miembro run.
Descargar