sistemas operativos unidad 2

32
Sistemas Operativos Unidad I Administración de procesos y procesador

Upload: luis-cigarroa

Post on 30-Jun-2015

788 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Sistemas operativos unidad 2

Sistemas Operativos

Unidad IAdministración de procesos y procesador

Page 2: Sistemas operativos unidad 2

Contenido

Concepto de proceso.

Estados y transiciones de los procesos.

Procesos ligeros (hilos o hebras).

Concurrencias y secuenciabilidad.

Page 3: Sistemas operativos unidad 2

Concepto de Proceso.

Un programa que se esta ejecutando.

Una actividad asincrónica.

Aquello que se manifiesta por la existencia del Sistema Operativo de un bloque de control de proceso.

Aquella entidad a la cual son asignados los procesadores.

Page 4: Sistemas operativos unidad 2

Concepto de Proceso.

Programa: conjunto de instrucciones que ejecuta una computadora para realizar una actividad.

Proceso: instancia de ejecución de un programa, caracterizado por su contador de programa, estado, registros del procesador, segmento de texto, pila y datos.

Page 5: Sistemas operativos unidad 2

Estados y Transiciones de los procesos.

Estados

En ejecución: Utiliza la CPU.

Listo: Ejecutable, se detiene de forma temporal.

Bloqueado: No se puede ejecutar debido a la ocurrencia de algún evento externo.

Page 6: Sistemas operativos unidad 2

Estados y Transiciones de los procesos.

Transacciones

En ejecución

Bloqueado Listo

Page 7: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

Un hilo o hebra en los S.O. son programas que tienen como característica principal el ejecutar varias tareas a la vez (concurrencia) .

•Comparten recursos•Cuentan con un contador de programa•Pila de ejecución•Estado del CPU

Page 8: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

• Espacio de memoria

• Variables globales

• Ficheros abiertos

• Procesos hijos

• Temporizadores

• Señales y semáforos

• Contabilidad

Page 9: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

Beneficios:

•Explotación del paralelismo

•Explotación de concurrencia (I/O)

•Estilo de programación

Page 10: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

Aplicaciones:

• Creación y destrucción

• Sincronización

• Gestión de prioridades

• Gestión de señales

• Gestión de memoria

• Se pueden utilizar todas las funciones incluidas en POSIX.1 y POSIX.1b

• La interfaz de hilos POSIX es pthreads, aunque existen otras bibliotecas de hilos

Page 11: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

• Si se desea crear una nueva hebra, es suficiente construir un nuevo objeto de la clase Thread y llamar a su método start().

public class DosHebrasBasicas extends Thread {     int cont;

    DosHebrasBasicas(int c) {        cont = c;     }     public void run() {        while (true) {            system.out.println(cont);        }     }     public static void main(String[] args) {        new DosHebrasBasicas(0).start();        new DosHebrasBasicas(1).start();     } } // class

Page 12: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

• En algún momento de la ejecución del método run() se ha generado una excepción que nadie ha capturado. La excepción se propaga hasta el propio método run(). Si tampoco éste tiene un manejador para la excepción, el método run() finaliza abruptamente, terminando la ejecución de la hebra.

• Si se llama al método stop() o stop(excepción) de la hebra. Estos dos métodos originan que la hebra termine, y son en realidad un caso particular del anterior.

• Cuando se llama al método destroy() de la hebra. También se comenta posteriormente.

Page 13: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

Ejemplo para asignar una prioridad

public class ComprobarPrioridad implements Runnable {     int num;     ComprobarPrioridad(int c) { num = c; }     public void run() {

       while (!parar) {            system.out.println(num);            cont++;        }     }

    public static void main(String[] args) {        Thread nueva;        for (int c = 0; c < 10; c++) {            nueva = new Thread(new ComprobarPrioridad(c));            if (c == 0) nueva.setPriority(Thread.MAX_PRIORITY);            nueva.start();        }     } } // class

Page 14: Sistemas operativos unidad 2

Procesos ligeros (hilos o hebras)

Ejemplo para asignar una prioridad

setPriority(int): establece la prioridad de la hebra. Puede ocasionar la generación de una excepción de seguridad si la hebra que solicita el cambio de prioridad de otra no está autorizada a hacerlo.

getPriority(): devuelve la prioridad de la hebra.   

Para establecer los posibles valores en el parámetro de setPriority o como resultado de getPriority, la clase Thread define tres constantes estáticas a la clase:     

MAX_PRIORITY (= 10): es el valor que simboliza la máxima prioridad.    MIN_PRIORITY (= 1): es el valor que simboliza la mínima prioridad.    NORM_PRIORITY (= 5): es el valor que simboliza la prioridad normal, la que tiene la hebra creada durante el arranque de la máquina virtual y que se encarga de ejecutar la función main

Page 15: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Los procesos son concurrentes si existen simultáneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos, lo cual significa que en ocasiones requieren cierta sincronización o cooperación.

Page 16: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Beneficios del uso de la concurrencia

• Trata de evitar los tiempos muertos de la UCP.• Comparte y optimiza el uso de recursos.• Permite la modularidad en las diferentes etapas

del proceso.• Acelera los cálculos.• Da mayor comodidad.

Page 17: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Desventajas del uso de la concurrencia

•Que dos o mas procesos requieran el mismo recurso .

•Ocurrencia de bloqueos.•Interrupción de procesos.

Page 18: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Elementos a gestionar y diseñar a causa de la concurrencia

1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PBC’s (Bloque de Control de Procesos) .

2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo.(Tiempo de procesador, memoria, Archivos, dispositivos de entrada y salida).

3. El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.

4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecución con respecto a otros procesos concurrentes.

Page 19: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Exclusión MutuaLa exclusión mutua la podríamos definir como una operación de

control que permite la coordinación de procesos .

Formas de satisfacer los requisitos de exclusión mutua:

• Soluciones por Software. Una manera es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente, de esta manera los procesos deben coordinarse unos con otros para cumplir la exclusión mutua sin ayuda alguna, aunque estas soluciones son propensas a errores y a una fuerte carga de proceso (Algunos ejemplos de estas son: Algoritmo de Dekker y Algoritmo de Peterson).

• Soluciones por Hardware. Propone el uso de instrucciones de la máquina a tal efecto, estas tienen la ventaja de reducir la sobrecarga.

Page 20: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Nota: Investigar el Algoritmo de Dekker y el Algoritmo de Peterson para la exclusión mutua.

Page 21: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

void sleep(long milis): duerme a la hebra durante al menos <milis> milisegundos. Transcurrido el tiempo, la hebra pasará a estar preparada para ejecutarse, pero eso no implica que pase inmediatamente a hacerlo (dependerá del planificador), de ahí que pueda estar más tiempo del que se especifica sin ejecutarse.   

void sleep(long milis, int nanos): duerme a la hebra durante al menos <milis> milisegundos y <nanos> nanosegundos. Sirve como una implementación con más precisión que la anterior. En la práctica, la implementación actual no permite tanta parecisión, y se limita a redondear los <milis> en función de los <nanos> y a llamar al método sleep anterior con el valor obtenido.   

void yield(): cede el procesador. Pasará a ejecutarse de nuevo el planificador, que decidirá qué otra hebra ejecutar.

Page 22: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Sincronización de procesos

La comunicación entre procesos es necesaria si se desea que varios procesos puedan colaborar para realizar una misma tarea. La sincronización es el funcionamiento coordinado en la resolución de una tarea encomendada.

Page 23: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Sincronización de procesosLos servicios básicos de comunicación son:•Crear: el proceso solicita la creación del

mecanismo•Enviar o escribir: el proceso emisor envía

información al proceso receptor•Recibir o leer: el proceso receptor recibe

información•Destruir: el proceso solicita la destrucción

del mecanismo de comunicación

Page 24: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Sincronización de procesosLa comunicación puede ser síncrona y

asíncrona:

•Síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.

•Asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la solicite.

Page 25: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Sincronización de procesos•Dos o más procesos leen o escriben en

ciertas zonas compartidas.

•El resultado final puede depender de lo que cada proceso ejecutó.

Proceso 1 Proceso 2

S. O.

Recurso

Page 26: Sistemas operativos unidad 2

Concurrencia y secuenciabilidadclass almacen {

    int[] almacen = new int[16];     int primero = 0;     int cuantos = 0;

    synchronized public int coger() {        int aux;        if (cuantos == 0)            return (-1);        else {            cuantos--;            aux = primero;            primero = (primero + 1) & 15;            return(almacen[aux]);        }

    }     synchronized public boolean dejar(char val) {

       if (cuantos == 16)            return false;        int aux;        aux = (primero + cuantos) & 15;        cuantos++;        almacen[aux] = val;        return true;     } } // almacen

Page 27: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Mecanismos de semáforos Los semáforos son mecanismos para la

sincronización de los procesos y esta representado por una variable entera positiva, cuyo valor solo puede ser acceso mediante las operaciones wait y signal.

Page 28: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Semáforos •WAIT: verifica si el valor de un semáforo

es mayor que cero y en este caso decrementa dicho valor y el proceso continúa. Si es cero, el proceso se va a dormir.

Las modificaciones al valor del se ejecutan en forma indivisible, es decir, si un proceso está modificando un semáforo ningún otro proceso puede esta modificando el mismo valor

Page 29: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Semáforos •SIGNAL: incrementa el valor del semáforo

respectivo. Si uno o más procesos dormían y no podían completar una operación anterior, el SO elige alguno de ellos y se le permite terminar la operación WAIT.

Page 30: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Semáforos /*Semáforo mutex compartido por N procesos esinicializado en 1*//*Estructura del proceso Pi */while (TRUE) {wait(mutex);/*Sección Critica*/signal(mutex);/*Sección No Crítica*/}

Page 31: Sistemas operativos unidad 2

Concurrencia y secuenciabilidad

Semáforos /*Semáforo mutex compartido por N procesos esinicializado en 1*//*Estructura del proceso Pi */while (TRUE) {wait(mutex);/*Sección Critica*/signal(mutex);/*Sección No Crítica*/}

Page 32: Sistemas operativos unidad 2

Actividades

Investigación del tema Técnicas de administración del planificador (FIFO, SJF,RR, QUEVES MULTI-LEVEL, MULTI-LEVEL FEEDBACK QUEVES).