SISTEMAS OPERATIVOS Ing. Nancy Magaly Loja 2010
GESTIÓN DE PROCESOS
PROCESOS INTRODUCCIÓN Los sistemas de hoy en día permiten cargar varios programas en la memoria y ejecutarlos de manera concurrente. La ocupación principal de los sistemas operativos es la ejecución de los programas de usuario, pero también necesitan encargarse de tareas del sistema.
PROCESOS Por lo tanto un sistema operativo es una colección de procesos (trabajo) del sistema ejecutando código del sistema y procesos de usuario ejecutando código de usuario.
PROCESOS CONCEPTO Los términos trabajo y proceso se utilizan prácticamente de forma intercambiable. Un proceso es una entidad activa es un programa en ejecución. Un programa por sí solo no es un proceso, un programa es una entidad pasiva.
PROCESOS CONCEPTO Un proceso además del código incluye parámetros como; el contador del programa, la pila, variables entre otros.
PROCESOS ESTADO DE UN PROCESO
PROCESOS BLOQUE DE CONTROL DE PROCESO
PROCESOS BLOQUE DE CONTROL DE PROCESO
PROCESOS COLAS DE PLANIFICACIÓN Colas de trabajos Colas de procesos listos Colas de dispositivos
Colas de Planificación
Diagrama de Colas
PLANIFICADORES  Los Planificadores son módulos de software encargados de determinar el orden en que los procesos serán ejecutados. S.O debe seleccionar  los procesos de las distintas colas.
TIPOS DE PLANIFICADORES 1)  Planificador a largo plazo 2)  Planificador a mediano plazo 3) Planificador a corto plazo
PLANIFICADOR A LARGO PLAZO Planificador de trabajos: Selección de trabajos a cargar en memoria principal.  Invocado con poca frecuencia  (segundos o minutos).  Puede ser (más) lento.  Controla el grado de multiprogramación en el sistema Mayor cantidad de tiempo para decidir
PLANIFICADOR A LARGO PLAZO Selección cuidadosa de procesos Limitados por E/S:  Cola procesos listos vacía Planificador a corto plazo poco trabajo. Limitados por CPU:  Cola de E/S casi siempre vacía Dispositivos ociosos  Balanceo del sistema
PLANIFICADOR A  CORTO  PLAZO Planificador de la CPU Selección del proceso listo que será ejecutado a continuación. Invocado muy frecuentemente (milisegundos). Debe ser rápido  o se desperdicia la CPU
PLANIFICADOR A  MEDIANO  PLAZO Traslado de un proceso en memoria principal a disco (intercambio o “ swapping”). Posteriormente volverá a memoria principal.  Reduce la contienda por el uso de la CPU.  En ocasiones necesario ante los requisitos de memoria principal. UNIX no PLP
PLANIFICADOR A  MEDIANO  PLAZO
Conmutación Contexto Cambio de la CPU de un proceso a otro. Requiere conservar el estado del proceso anterior y cargar el estado guardado del nuevo proceso. El contexto se almacena en BCP (valor de registros, estado, infor administración memoria) La CC  incluye trabajo extra; puede evitarse con hilos. Velocidad varia de máquina a máquina (HW)
Conmutación Contexto
Operaciones sobre Procesos Procesos ejecutan de manera concurrente y son creados y eliminados de forma dinámica. 1) Creación de procesos:  Un proceso puede crear varios procesos nuevos; a través de una llamada al sistema. Padre e Hijos árbol de procesos. Recursos para un proceso SW y HW Recursos asignados por el S.O o el padre los debe compartir.
CREACIÓN DE PROCESOS
CREACIÓN DE PROCESOS Datos de inicialización puede pasarse del padre al hijo. Ejm. Nombres de archivos, dispositivos E/S. Posibilidades Términos Ejecución: Padre continua ejecutándose concurrentemente con hijos.  Padre espera hasta que alguno o todos sus hijos hayan terminado.
CREACIÓN DE PROCESOS Posibilidades Términos del Espacio de Direcciones El hijo es un duplicado del padre Se carga un programa en el hijo Ejm. UNIX Proceso nuevo  fork(),  duplicado del padre Cambia el id. execlp()  se utiliza luego del  fork(),  para reemplazar el espacio de memoria de un proceso con un programa nuevo. wait()
CREACIÓN DE PROCESOS EJEMPLOS Windows NT:  soporta ambos modelos VMS:  Carga un programa nuevo UNIX:  Duplicado de procesos
ELIMINACIÓN DE PROCESOS El proceso termina cuando ejecuta su ultima proposición y pide al sistema operativo que lo elimine con  (exit). –  Devuelve datos de salida  desde el hijo al padre  (vía  wait). –  Los recursos del proceso son liberados por el S.O.  Memoria física y virtual Archivos abiertos Buffers de E/S
ELIMINACIÓN DE PROCESOS Padres pueden terminar la ejecución de los procesos hijos ( abort): –  El hijo ha excedido los recursos que se le asignaron. –  Las tareas asignadas a los hijos ya no son necesarias. –  El padre esta saliendo Terminación en cascada de todos sus hijos.(VMS)
ELIMINACIÓN DE PROCESOS EJEMPLO UNIX Podemos terminar un proceso (exit) Padre puede esperar al hijo (wait) Si termina el proceso padre los hijos son adoptados por el init.
PROCESOS CONCURRENTES  Los procesos concurrentes pueden ser:  Independientes:  no puede afectar ni ser afectado por la ejecución de otro proceso ( no comparte datos). Cooperativos:  puede afectar y ser afectado por la ejecución de otro proceso ( comparte datos) .
PROCESOS COOPERATIVOS Ventajas de la cooperación de procesos. –  Información compartida –  Aceleración de los cálculos (varios canales o CPUs). Descomponer subtareas –  Modularidad (procesos individuales o hilos) –  Conveniencia (varias tareas en paralelo).
PROCESOS COOPERATIVOS
PROCESOS COOPERATIVOS
COMUNICACIÓN ENTRE PROCESOS (IPC) Procesos cooperativos pueden comunicarse en un ambiente de memoria compartida. Procesos comparten una reserva o buffers Mecanismo para comunicar  procesos cooperativos y  para sincronizar sus acciones.
COMUNICACIÓN ENTRE PROCESOS (IPC) IPC proporciona un mecanismo para que los procesos se comuniquen y para sincronizar sus acciones sin compartir su mismo espacio de direcciones. Ideal en ambientes distribuidos. Ejm Chat IPC utiliza un sistema de paso de mensajes.
SISTEMA DE PASOS DE MENSAJES (IPC) Sistema de Mensajes – comunica procesos uno con otro  sin frecuentar el área de la memoria-compartida. La comunicación dos  operaciones: –  send( message) –  receive( message)
SISTEMA DE PASOS DE MENSAJES (IPC) El tamaño del mensaje es fijo o variable Tamaño fijos : Implementación a nivel de SO sencilla y directa. Tamaño variable:  Implementación a nivel de SO más compleja, programación más fácil.
SISTEMA DE PASOS DE MENSAJES (IPC) Si P y Q desean comunicarse, ellos tienen que: 1. Establecer un  (link)  enlace de comunicación entre  ellos 2. Intercambiar mensajes vía  send/receive
SISTEMA DE PASOS DE MENSAJES (IPC) Para establecer el ( link) enlace de comunicación, puede ser 1. físico (ejemplo, memoria-compartida, bus en hardware o una red) 2. lógico (ejemplo, propiedades lógicas)
SISTEMA DE PASOS DE MENSAJES (IPC) Comunicación directa o indirecta Comunicación simétrica o asimétrica Uso de buffers
COMUNICACIÓN DIRECTA O INDIRECTA Asignación de nombres:  Forma para referenciar los procesos.  Comunicación Directa Los procesos deben nombrase uno a otro. –  send  ( P, mensaje ) – envía mensaje al proceso P –  receive ( Q, mensaje ) – recibe un mensaje del proceso Q
COMUNICACIÓN DIRECTA Propiedades del enlace de comunicación Los enlaces se establecen automáticamente (se conocen un proceso con otro). Un enlace está asociado con exactamente un par de procesos comunicándose. Entre cada par existe exactamente un enlace. El enlace puede ser unidireccional, pero normalmente es bidireccional.
COMUNICACIÓN DIRECTA Comunicación simétrica:  el emisor y el receptor se deben de nombrar. Comunicación asimétrica:  solo el emisor nombra al receptor. send  ( P, mensaje ) – envía mensaje al proceso P receive ( id, mensaje ) –  recibe un mensaje de cualquier proceso
COMUNICACIÓN INDIRECTA Los mensajes se envían y se reciben de buzones (mailboxes) o puertos. Cada buzón tiene un único  id . Los procesos solo pueden comunicarse si comparten un buzón.
COMUNICACIÓN INDIRECTA send  ( A, mensaje ) – envía mensaje al buzón A receive ( A, mensaje ) –  recibe un mensaje del buzón A Propiedades del enlace de comunicación El enlace se establece solo si los procesos comparten un buzón –  Un enlace puede estar asociado con muchos procesos
COMUNICACIÓN INDIRECTA Cada par de procesos pueden compartir varios enlaces de comunicación. El enlace puede ser unidireccional o bidireccional Operaciones Crear un nuevo buzón Enviar y recibir  mensajes  a través del buzón Eliminar el buzón
SINCRONIZACIÓN La comunicación tiene lugar mediante send() y receive(). Existen diferentes opciones de diseño para implementar cada primitiva. Síncrono (bloqueo) o Asíncrono (sin bloqueo)
SINCRONIZACIÓN Envío con bloqueo:  el emisor se bloquea hasta q el msg es recibido por el receptor o por el buzón. Envío sin bloqueo:  el emisor envía el mgs y continua su operación.
SINCRONIZACIÓN Recepción con bloqueo:  el receptor se bloquea hasta que haya un mensaje disponible. Recepción sin bloqueo:  el receptor recupera un mensaje válido, o bien su valor nulo.
USO DE BUFFERS Los mensajes residen en una cola temporal Capacidad cero:  la cola tiene una longitud máxima de 0.  El enlace no puede tener mgs esperando en él.  El emisor debe bloquearse hasta que el receptor  tome el msg.
USO DE BUFFERS Capacidad limitada:  La cola tiene longitud finita igual a  n. Capacidad finita Si el enlace esta lleno el emisor debe bloquearse hasta que haya espacio en la cola.
USO DE BUFFERS Capacidad ilimitada:  Longitud infinita en teoría. El emisor nunca se bloquea
EJEMPLO WINDOWS NT
CAPÍTULO 5 HILOS (THREADS) Procesos concurrentes (un solo hilo de ejecución) Sistemas Operativos modernos--- proceso contiene más de un hilo de ejecución
HILOS (THREADS) Hilo o proceso ligero, es una unidad básica de utilización de la CPU. Comprende un ID, CP, conjunto de registros y una pila. Hilo comparte con otros hilos que pertenecen al mismo proceso: código, datos y otros recursos como archivos abiertos.
HILOS (THREADS)
HILOS (THREADS)
HILOS (THREADS) Debido a que tienen varios hilos de control, el proceso puede efectuar más de una tarea a la vez.
HILOS (THREADS) Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de una red de área local. Cada vez que llega una solicitud de una operación sobre un fichero, se puede generar un nuevo hilo para su gestión.
HILOS (THREADS) El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultáneamente y en diferentes procesadores
HILOS (THREADS) CARACTERISTICAS Se comparten recursos. La compartición de la memoria permite a las hebras pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO.
HILOS (THREADS) CARACTERISTICAS La conmutación de contexto es más rápida gracias al extenso compartir de recursos No hay protección entre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso
HILOS (THREADS)
PLANIFICACIÓN DE LA CPU
Planificación Apropiativa Necesario tomar decisiones sobre la planificación de la CPU.  Ejecución a Espera. Ejm. Solicitud E/S, wait. Ejecución a Listo. Ejm. Cuando ocurre una interrupción. Espera a Listo. Ejm.  Terminación de E/S. Proceso Termina.
Planificación Apropiativa En las situaciones 1 y 4 no hay más que una opción en términos de planificación: debe seleccionarse un nuevo proceso para su ejecución (si hay en la cola procesos listos);  planificación no apropiativa. Una vez que la CPU ha sido asignada a un proceso, éste la conserva hasta q la cede ya sea porque termino o porque paso a espera. No requiere HW especial. Ejm Windows 3x
Planificación Apropiativa En las opciones 2 y 3 existe la opción de planificar un nuevo proceso o no. Requiere HW adicional como un temporizador. Afecta el diseño del kernel del S.O. Requiere costos adicionales.
Despachador Módulo que cede el control de la CPU al proceso seleccionado por el planificador a corto plazo. Esta función implica: Cambiar de contexto. Cambiar a modo de usuario. Saltar al punto apropiado del programa del usuario para reiniciar ese programa.
Despachador Debe de ser lo más rápido posible, porque se invoca cada conmutación de contexto. Latencia del despachador:  Tiempo que el despachador tarda en detener un proceso y poner otro en ejecución.
Criterios de planificación Al escoger qué algoritmo debe usarse, debemos considerar las propiedades de los diversos algoritmos. Se debe elegir el algoritmo óptimo
Criterios de planificación Utilización de la CPU:  Queremos mantener la CPU  tan ocupada como pueda. Debe variar ( 0-100%). Sist Real (40%-90%).  Rendimiento:  El número de procesos que se completan por unidad de tiempo.
Criterios de planificación En el caso de procesos largos, esta tasa podría ser de un proc/hora, en transacciones cortas, el rendimiento podría ser de 10 proc/seg. Tiempo de Retorno(servicio):  Intervalo entre el momento de presentación de un proceso y el momento en que se termina.
Criterios de planificación Es la suma de los períodos durante los cuales espera entrar en la memoria, espera en la cola de procesos listos, se ejecuta en la CPU y realiza E/S.  Tiempo de Espera:  Es la suma de los períodos que el proceso pasa esperando en la cola de procesos listos.
Criterios de planificación Tiempo de Respuesta:  Tiempo entre la presentación de una solicitud y la producción de la primera respuesta. Tiempo que el proceso tarda en empezar a responder, no incluye el tiempo que toma en exhibir la respuesta.  Generalmente limitado por la velocidad del dispositivo de salida.
Criterios de planificación En la mayor parte de caso es favorable obtener  el promedio de los tiempos. Hay circunstancias  en que es deseable optimar los valores mínimo o máximo en lugar del promedio.  Ejm  garantizar buen servicio a todos los usuarios.
Algoritmos de Planificación La planificación de la CPU, se ocupa del problema de decidir cuál de los procesos que están en la cola de procesos listos debe recibir la CPU.
Algoritmos de Planificación 1) Planificación FIFO (FCFS) El proceso que primero solicita la CPU, es el primero que la recibe. La implementación de la política FCFS es fácil con una cola FIFO. Cuando un proceso llega a la cola de procesos listos, su BCP se enlaza al final de la cola.
Algoritmos de Planificación Cuando la CPU queda libre, se asigna al proceso que está a la cabeza de la cola, acto seguido, el proceso en ejecución se saca de la cola. Fácil de escribir e implementar. Tiempo de espera promedio suele ser muy largo.
Algoritmos de Planificación Efecto convoy:  Cuando todos los demás procesos esperán que un solo proceso grande desocupe la CPU.  Este efecto tiene como resultado un bajo aprovechamiento   de la CPU y de los dispositivos de E/S.
Algoritmos de Planificación Algoritmo no apropiativo, conserva la CPU hasta que la cede, ya sea porque terminó o porque solicitó E/S. Algoritmo problemático en los sistemas de tiempo compartido, donde es importante que cada usuario reciba una porción de tiempo de la CPU a intervalos regulares
Algoritmos de Planificación EJEMPLOS
Algoritmos de Planificación 2) Planificación SJF (Primero el trabajo más corto). Asocia a cada proceso la longitud de la siguiente ráfaga de CPU. Cuando la CPU queda disponible se asigna al proceso cuya siguiente ráfaga de CPU sea más corta.
Algoritmos de Planificación Cuando en dos o más procesos las  siguientes ráfagas tienen la misma duración, se emplea FCFS. El algoritmo SJF es óptimo en cuanto a que da el tiempo de espera promedio mínimo para un conjunto de procesos.
Algoritmos de Planificación La dificultad real del algoritmo SJF es conocer la duración de la siguiente solicitud de CPU. Se usa a menudo en la Planificación a Largo Plazo. Se puede predecir valor de la siguiente ráfaga.
Algoritmos de Planificación SJF puede ser apropiativo y no apropiativo. SJF apropiativo desalojará al proceso que se está ejecutando. SJF no apropiativo  permite que termine su ráfaja actual.
Algoritmos de Planificación EJEMPLOS SJF
SINCRONIZACIÓN DE PROCESOS
Peterson #define FALSE  0 #define TRUE  1 #define N  2 int turn;  int interested[N];   //all values initially 0  void enter_region(int process) {    int other;    other = 1 - process;    // lo opuesto del proceso   interested[process]=TRUE;  //mostrar interés    turn = process;         // establecer bandera   while(turn == process && interested[other] == TRUE);  }  void leave_region(int process)  {    interested[process] = FALSE;  }
Prueba de Escritorio
Dormir y Despertar #define N 3 int count = 0; void producer(void) { while (true) { produce_intem(); if (count == N) sleep(); enter_item(); count = count + 1; if (count == 1) wakeup(consumer); } } void consumer(void) { while (true) { if (count == 0) sleep(); remove_item(); count = count - 1; if (count == N - 1) wakeup(producer); consume_item(); } }
Dormir y Despertar ERRORES:  Señal a despertar perdida SOLUCIÓN:  bit de espera de despertar Llamada a despertar a un proceso despierto se enciende el bit. Cuando el proceso trate de dormirse si el bit está encendido se apaga.
SEMÁFOROS Variable entera para contar el número de despertares almacenados para su uso posterior. Un semáforo puede tener valor 0 lo que significa que no existen despertares almacenados o bien algún valor positivo si están pendientes uno o más despertares.
SEMÁFOROS Operaciones DOWN y UP ( generalizaciones de SLEEP y WAKEUP). UP y DOWN llamadas al sistema, para inhabilitar brevemente las interrupciones mientras prueba el semáforo, lo actualiza y pone el proceso a dormir si es necesario.
SEMÁFOROS Operaciones: Down   UP Si  s >0  Si la cola procesos vacía s = s -1 ;  s = s + 1 ; Else   else Bloquear proceso  Desbloquear Proceso
SEMÁFOROS OPERACIONES : Si el semáforo vale mas de 0 lo decrementa si no a dormir  Si hay procesos dormidos , despierta a uno , si no , incrementa el valor del semáforo Ambas operaciones han de ser atómicas (indivisibles).
SEMÁFOROS #define N 100 TYPEDEF int semaphore;  semaphore mutex = 1; /* Controla acceso a región crítica. semaphore empty = N; /* Cuenta las ranuras vacías semaphore full = 0; /* Cuenta las ranuras llenas. Void producer (void){ int item; while (TRUE) { produce_item(&item); /* Generar algo. down(&empty); /* Decrementa ranuras vacías. down(&mutex); /* Entrar en sección crítica enter_item(item); /* Inserta nuevo elemento. up(&mutex); /* Sale sección crítica. up(&full); /* Incrementa ranuras llenas. } }
SEMÁFOROS Void consumer (void){ int item; while (TRUE) { down(&full); /* Decrementa ranuras llenas. down(&mutex); /* Entra sección crítica. remove_item(&item); /* Saca elemento. up(&mutex); /* Sale de sección crítica. up(&empty); /* Incrementa ranuras vacías. consume_item(item); /* Hacer algo con elemento consumido. } }
SEMÁFOROS Semáforos Binarios:  Valores 0, 1 utilizados por dos o más procesos, para asegurar que sólo un de ellos entre a su región crítica. Semáforos Sincronización:  0,1,… Garantiza la exclusión mutua.
SEMÁFOROS ERRORES: Errores humanos Supongamos que el orden de los DOWN del código del productor se invierte, de modo que mutex se incrementa antes que empty. Si el buffer esta lleno, el productor se bloquea con mutex en 0.  Luego el consumidor ejecuta un DOWN con mutex en 0. Ambos dormirán eternamente.
MONITORES Colección de procedimientos y datos, agrupados en una especie de módulo muy especial conocido como módulo monitor. Los procesos pueden llamar a los procedimientos del monitor siempre que lo deseen, pero no pueden acceder directamente a las estructuras de datos internas del monitor desde procedimientos declarados fuera del monitor.
MONITORES Tienen una propiedad importante: solo un proceso puede estar activo en un monitor en un instante de tiempo. (Exclusión Mutua). Compilador no el programador garantizan la Exclusión Mutua.
MONITORES Los monitores proveen un nuevo tipo de variables de condición con dos operaciones que operan sobre el. Wait -> wait(a)  : produce que el proceso que ejecuta la instrucción sea interrumpido y removido de la cola de ready hasta que otro proceso lo habilite ejecutando la instrucción signal( )con la misma variable de condición.
MONITORES Signal -> signal(a)  : Habilita la ejecución de algún proceso en espera por la ejecución de la instrucción wait con la misma variable de condición.
MONITORES Monitor example  Integer i ; Condition c ; Procedure producer (x); . .end ; procedure consumer (x); .. end; end monitor
MONITORES Se diseñaron para resolver el problema de la exclusión mutua en uno o varios CPU que tienen acceso a una memoria común. En sistemas distribuidos con su propia memoria estas primitivas ya no funcionan.  Muchos lenguajes carecen de monitores.
BLOQUEOS MUTUOS Entorno multiprogramación    Varios procesos pueden competir por un número finito de recursos Procesos esperando recursos; nunca cambiaran de estado .
BLOQUEOS MUTUOS Una carencia de  sincronización de procesos puede dar lugar a dos condiciones  extremas: El bloqueo mutuo (abrazo mortal) La inanición
BLOQUEOS MUTUOS Proceso solicita un recurso No está disponible    Espera Puede que no cambie de estado    Los recursos solicitados están en manos de otros procesos que también están en espera (Interbloqueo) Problema similar    Inanición, aplazamiento indefinido o bloqueo indefinido
BLOQUEOS MUTUOS Modelo del Sistema: Los recursos finitos pueden ser de varios tipos cada uno de los cuales consta de varias instancias.  Ejms:  el espacio de memoria, los ciclos de CPU, los archivos, los dipositivos de E/S. Si el sistema tiene dos CPU, se dice que tiene dos ejemplares
BLOQUEOS MUTUOS EJEMPLO Suponga que dos procesos quieren quemar un documento digitalizado en un CD. Proceso A solicita autorización para usar el escáner y se le concede. Proceso B solicita primero el quemador de CD y también se le concede. Ahora A, pide el quemador de CD, pero se le niega porque B no lo ha liberado B solicita el escáner, pero sin liberar el quemador de CD. PROCESOS A Y B ESTÁN BLOQUEADOS
BLOQUEOS MUTUOS Secuencia de uso de recursos Solicitud Uso Llamadas al Sistema Liberación El recurso no está disponible  cuando se solicita  El proceso solicitante debe esperar En algunos S.O el proceso se bloquea automáticamente y despierta cuando dicho recurso esté disponible La solicitud falla y el proceso debe esperar para pedir el recurso.
BLOQUEOS MUTUOS Solicitud y liberación llamadas al sistema: request, release, device, open, entre otras. No son administradas por el SO pueden hacerse mediante semáforos. Tablas en sistema para registrar solicitudes y liberaciones
BLOQUEOS MUTUOS Un conjunto de procesos esta bloqueado cuando cada uno posee un recurso y esta a la espera de obtener un recurso poseído por otro proceso del conjunto.
BLOQUEOS MUTUOS Caracterización de B.M. Exclusión Mutua  Sólo un proceso podrá usar el recurso. Recurso retenido no compatible. 2.  Retener y esperar   Cuando los procesos que tienen recursos previamente otorgados solicitan otros recursos. No apropiación  Un recurso no puede ser arrebatado a otro proceso, solo lo libera voluntariamente.
BLOQUEOS MUTUOS Caracterización de B.M. Espera circular  Debe existir un conjunto {P 0 ,P 1 ..,P n } de procesos en espera tal que P 0  está esperando un recurso que fué adquirido por P 1 , P 1  está esperando un recurso que fué adquirido por  P 2 ,….., P n-1  está esperando un proceso que fué adquirido por P n  y P n  está esperando un recurso que fué adquirido por P 0
BLOQUEOS MUTUOS Gráfica Asignación de Recursos Grafos de Asignación de Recursos Nodos     Procesos  y  Recursos A rco s     D e un  proceso a un recurso    Solicitud     De un  recurso a un proceso    Asignación  C iclo s     I ndica la  existencia de un bloqueo
BLOQUEOS MUTUOS Gráfica Asignación de Recursos Un conjunto de vértices  V y un conjunto de aristas dirigidas E. V es particionado en dos tipos: P = {P1, P2, …, Pn}, el conjunto consistente de todos los procesos en el sistema. R = {R1, R2, …, Rm}, el conjunto consistente de todos los tipos de  recursos en el sistema. Arista de petición – arista dirigida  P1 -> Rj Arista de asignación –arista dirigida  Rj -> Pi
BLOQUEOS MUTUOS Gráfica Asignación de Recursos
BLOQUEOS MUTUOS Gráfica Asignación de Recursos CICLOS Si la gráfica no contiene ciclos; no hay BM Si hay un ciclo y una sola instancia de cada recurso, condición suficiente para BM. Varios ciclos BM. EJEMPLOS:
BLOQUEOS MUTUOS Gráfica Asignación de Recursos
BLOQUEOS MUTUOS Gráfica Asignación de Recursos
BLOQUEOS MUTUOS Gráfica Asignación de Recursos
BLOQUEOS MUTUOS Estrategias para enfrentar los Bloqueos 1) Podemos utilizar  un protocolo para asegurar que el  sistema  nunca entrará en un estado de bloqueo mutuo. 2) Podemos permitir que el sistema  entre en un estado de bloqueo mutuo y luego hacer una recuperación. 3) Podemos  ignorar el problema y pretender que los  bloqueos mutuos nunca ocurren en el sistema; usado por la mayoría de los sistemas operativos, incluyendo a UNIX.
BLOQUEOS MUTUOS Estrategias para enfrentar los Bloqueos Para asegurarnos que nunca ocurra un BM podemos usa estrategias de: Prevención de BM Evitación de BM
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos Lograr que al menos unos de las 4 condiciones no se cumpla. Exclusión Mutua:  Generalmente no es posible prevenir BM negando esta condición. Ejm.  Recursos que no puedan compartirse (memoria, CPU, o dispositivos dedicados).
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos 1) Exclusión Mutua:  No es problema con recursos que se puedan compartir (archivos de sólo lectura). 2) Retener y Esperar:  debemos garantizar que,  siempre que un proceso solicite un recurso no retenga algún otro.
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos 2) Retener y Esperar PROTOCOLO1:  Requiere que cada proceso y se le asignen todos sus recursos  antes de iniciar su ejecución ( en el momento de la creación ). PROTOCOLO2:  P ermitir que un proceso  solicite recursos sólo cuando no tenga alguno.
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos DESVENTAJAS: 1) Baja utilización de recursos. 2) Posibilidad de inanición.
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos 3) No Apropiación:  Para asegurarnos que no se cumpla esta condición podemos usar el siguiente protocolo: PROTOCOLO1:  Si un proceso que está reteniendo algunos recursos solicita otro recurso que no le puede ser asignado inmediatamente, entonces  todos los recursos que actualmente son retenidos son apropiados (se liberan implícitamente).
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos PROTOCOLO ALTERNO:  Si un proceso solicita algunos recursos, verificamos si están disponibles; si es así se los asigna. Caso contrario verificamos si están asignados a algún otro proceso que esta esperando recursos adicionales; de ser así el proceso solicitante se apropia de los recursos deseados.
BLOQUEOS MUTUOS Prevención de Bloqueos Mutuos 4)  Espera Circular:  imponer un ordenamiento total de todos los tipos de recursos  (numerarlos: impresora = 1, disco = 2, etc), y  requerir que cada proceso solicite sus recursos en orden creciente de enumeración  ( ordenamiento jerárquico que obliga a anticipar el orden en que utilizara los recursos).
BLOQUEOS MUTUOS Evitación de Bloqueos Mutuos Requiere que al SO se le de por adelantado información relacionada con los recursos que un proceso solicitará y usará durante su vida. Con esta información de la secuencia completa de solicitudes y liberaciones; podemos decidir para cada solicitud si el proceso tendrá que esperar o no.
BLOQUEOS MUTUOS Evitación de Bloqueos Mutuos El sistema debe tener la capacidad de distinguir si se puede otorgar sin peligro un recurso o no, y solo efectuar la asignación si no hay peligro. ¿Hay algún algoritmo que siempre pueda evitar los bloqueos mutuos tomando la decisión correcta todo el tiempo?
BLOQUEOS MUTUOS Evitación de Bloqueos Mutuos Veremos un algoritmo para la evitación de Bloqueos Mutuos para un ambiente con solo una instancia de cada recurso. Podemos usar una variante de la gráfica de asignación de recursos.
BLOQUEOS MUTUOS Evitación de Bloqueos Mutuos Además de las aristas de solicitud y asignación tenemos un nuevo tipo de aristas llamada:  arista de demanda . Arista de demanda Pi -> Rj indica que el proceso Pi  puede solicitar el recurso  Rj en algún momento en el  futuro;  representada por una línea punteada.  Semejante a una arista de solicitud.
BLOQUEOS MUTUOS Evitación de Bloqueos Mutuos Una arista de demanda se convierte en  arista de solicitud cuando un proceso solicita un recurso. Cuando un recurso es liberado por un proceso, una  arista de asignación se convierte en arista de demanda.
BLOQUEOS MUTUOS Gráfica de Asignación de Recursos para Evitación de Bloqueos Mutuos
BLOQUEOS MUTUOS Gráfica de Asignación de Recursos para Evitación de Bloqueos Mutuos Una solicitud solo puede atenderse si la conversión de la arista de solicitud  Pi -> Rj  en una arista de asignación  Rj  Pi  no da como resultado un ciclo en la gráfica. Se utiliza un algoritmo de detección de ciclos.
BLOQUEOS MUTUOS Gráfica de Asignación de Recursos para Evitación de Bloqueos Mutuos Si no existe un ciclo, entonces la asignación del recurso al  Pi  dejará al sistema en un  estado seguro. Si existe al menos un ciclo el sistema estará en un  estado inseguro;  y por lo tanto la asignación al  Pi  no podrá realizarse.
BLOQUEOS MUTUOS Estado Inseguro en Gráfica de Asignación de Recursos
BLOQUEOS MUTUOS Detección  de Bloqueos Mutuos Permitir al sistema entrar en estado de bloqueo mutuo y luego recuperarlo 1)Algoritmo de Detección 2)Esquema de Recuperación
BLOQUEOS MUTUOS Detección  de Bloqueos Mutuos Veremos un algoritmo para un ambiente con solo una instancia de cada recurso. Este esquema de detección y recuperación implica un gasto extra (overhead). Este algoritmo es una variante de la gráfica de asignación de recursos llamado:  gráfica de espera
BLOQUEOS MUTUOS Detección  de Bloqueos Mutuos Para esta gráfica se quitan los nodos de tipo de recurso y se desintegran las aristas apropiadas. Ejemplo Pi  Rq y Rq  Pj  el resultado será: Pi  Pj
BLOQUEOS MUTUOS Detección  de Bloqueos Mutuos Existe un Bloqueo Mutuo si la gráfica de espera tiene un ciclo. Se necesita invocar un algoritmo que busque un ciclo en la gráfica.
BLOQUEOS MUTUOS Detección  de Bloqueos Mutuos
BLOQUEOS MUTUOS Recuperación de un estado de  Bloqueo Mutuo 1) Terminación de procesos 2) Apropiación de recursos
BLOQUEOS MUTUOS Recuperación de un estado de  Bloqueo Mutuo 1) Terminación de procesos a)  Abortar todos los procesos bloqueados :  alto costo, resultados parciales descartados. b)  Abortar un proceso cada vez hasta que el ciclo de bloqueo sea eliminado:  Gasto extra; ya q después de abortar a cada proceso se debe invocar un algoritmo de detección de Bloqueo Mutuo.
BLOQUEOS MUTUOS Recuperación de un estado de  Bloqueo Mutuo 2) Apropiación de recursos a) Seleccionar una victima:  Que recursos y de que procesos se van a apropiar  b) Retroceso:  Regresar a los procesos a los q se les quito los recursos a un estado seguro. Se puede dar un retroceso total o parcial  c) Inanición: Garantizar que no siempre el mismo proceso será la victima. Incluir los retrocesos en el factor costo.
RESUMEN
RESUMEN

Gprocesos

  • 1.
    SISTEMAS OPERATIVOS Ing.Nancy Magaly Loja 2010
  • 2.
  • 3.
    PROCESOS INTRODUCCIÓN Lossistemas de hoy en día permiten cargar varios programas en la memoria y ejecutarlos de manera concurrente. La ocupación principal de los sistemas operativos es la ejecución de los programas de usuario, pero también necesitan encargarse de tareas del sistema.
  • 4.
    PROCESOS Por lotanto un sistema operativo es una colección de procesos (trabajo) del sistema ejecutando código del sistema y procesos de usuario ejecutando código de usuario.
  • 5.
    PROCESOS CONCEPTO Lostérminos trabajo y proceso se utilizan prácticamente de forma intercambiable. Un proceso es una entidad activa es un programa en ejecución. Un programa por sí solo no es un proceso, un programa es una entidad pasiva.
  • 6.
    PROCESOS CONCEPTO Unproceso además del código incluye parámetros como; el contador del programa, la pila, variables entre otros.
  • 7.
  • 8.
    PROCESOS BLOQUE DECONTROL DE PROCESO
  • 9.
    PROCESOS BLOQUE DECONTROL DE PROCESO
  • 10.
    PROCESOS COLAS DEPLANIFICACIÓN Colas de trabajos Colas de procesos listos Colas de dispositivos
  • 11.
  • 12.
  • 13.
    PLANIFICADORES LosPlanificadores son módulos de software encargados de determinar el orden en que los procesos serán ejecutados. S.O debe seleccionar los procesos de las distintas colas.
  • 14.
    TIPOS DE PLANIFICADORES1) Planificador a largo plazo 2) Planificador a mediano plazo 3) Planificador a corto plazo
  • 15.
    PLANIFICADOR A LARGOPLAZO Planificador de trabajos: Selección de trabajos a cargar en memoria principal.  Invocado con poca frecuencia (segundos o minutos).  Puede ser (más) lento.  Controla el grado de multiprogramación en el sistema Mayor cantidad de tiempo para decidir
  • 16.
    PLANIFICADOR A LARGOPLAZO Selección cuidadosa de procesos Limitados por E/S: Cola procesos listos vacía Planificador a corto plazo poco trabajo. Limitados por CPU: Cola de E/S casi siempre vacía Dispositivos ociosos Balanceo del sistema
  • 17.
    PLANIFICADOR A CORTO PLAZO Planificador de la CPU Selección del proceso listo que será ejecutado a continuación. Invocado muy frecuentemente (milisegundos). Debe ser rápido o se desperdicia la CPU
  • 18.
    PLANIFICADOR A MEDIANO PLAZO Traslado de un proceso en memoria principal a disco (intercambio o “ swapping”). Posteriormente volverá a memoria principal.  Reduce la contienda por el uso de la CPU.  En ocasiones necesario ante los requisitos de memoria principal. UNIX no PLP
  • 19.
    PLANIFICADOR A MEDIANO PLAZO
  • 20.
    Conmutación Contexto Cambiode la CPU de un proceso a otro. Requiere conservar el estado del proceso anterior y cargar el estado guardado del nuevo proceso. El contexto se almacena en BCP (valor de registros, estado, infor administración memoria) La CC incluye trabajo extra; puede evitarse con hilos. Velocidad varia de máquina a máquina (HW)
  • 21.
  • 22.
    Operaciones sobre ProcesosProcesos ejecutan de manera concurrente y son creados y eliminados de forma dinámica. 1) Creación de procesos: Un proceso puede crear varios procesos nuevos; a través de una llamada al sistema. Padre e Hijos árbol de procesos. Recursos para un proceso SW y HW Recursos asignados por el S.O o el padre los debe compartir.
  • 23.
  • 24.
    CREACIÓN DE PROCESOSDatos de inicialización puede pasarse del padre al hijo. Ejm. Nombres de archivos, dispositivos E/S. Posibilidades Términos Ejecución: Padre continua ejecutándose concurrentemente con hijos. Padre espera hasta que alguno o todos sus hijos hayan terminado.
  • 25.
    CREACIÓN DE PROCESOSPosibilidades Términos del Espacio de Direcciones El hijo es un duplicado del padre Se carga un programa en el hijo Ejm. UNIX Proceso nuevo fork(), duplicado del padre Cambia el id. execlp() se utiliza luego del fork(), para reemplazar el espacio de memoria de un proceso con un programa nuevo. wait()
  • 26.
    CREACIÓN DE PROCESOSEJEMPLOS Windows NT: soporta ambos modelos VMS: Carga un programa nuevo UNIX: Duplicado de procesos
  • 27.
    ELIMINACIÓN DE PROCESOSEl proceso termina cuando ejecuta su ultima proposición y pide al sistema operativo que lo elimine con (exit). – Devuelve datos de salida desde el hijo al padre (vía wait). – Los recursos del proceso son liberados por el S.O. Memoria física y virtual Archivos abiertos Buffers de E/S
  • 28.
    ELIMINACIÓN DE PROCESOSPadres pueden terminar la ejecución de los procesos hijos ( abort): – El hijo ha excedido los recursos que se le asignaron. – Las tareas asignadas a los hijos ya no son necesarias. – El padre esta saliendo Terminación en cascada de todos sus hijos.(VMS)
  • 29.
    ELIMINACIÓN DE PROCESOSEJEMPLO UNIX Podemos terminar un proceso (exit) Padre puede esperar al hijo (wait) Si termina el proceso padre los hijos son adoptados por el init.
  • 30.
    PROCESOS CONCURRENTES Los procesos concurrentes pueden ser: Independientes: no puede afectar ni ser afectado por la ejecución de otro proceso ( no comparte datos). Cooperativos: puede afectar y ser afectado por la ejecución de otro proceso ( comparte datos) .
  • 31.
    PROCESOS COOPERATIVOS Ventajasde la cooperación de procesos. – Información compartida – Aceleración de los cálculos (varios canales o CPUs). Descomponer subtareas – Modularidad (procesos individuales o hilos) – Conveniencia (varias tareas en paralelo).
  • 32.
  • 33.
  • 34.
    COMUNICACIÓN ENTRE PROCESOS(IPC) Procesos cooperativos pueden comunicarse en un ambiente de memoria compartida. Procesos comparten una reserva o buffers Mecanismo para comunicar procesos cooperativos y para sincronizar sus acciones.
  • 35.
    COMUNICACIÓN ENTRE PROCESOS(IPC) IPC proporciona un mecanismo para que los procesos se comuniquen y para sincronizar sus acciones sin compartir su mismo espacio de direcciones. Ideal en ambientes distribuidos. Ejm Chat IPC utiliza un sistema de paso de mensajes.
  • 36.
    SISTEMA DE PASOSDE MENSAJES (IPC) Sistema de Mensajes – comunica procesos uno con otro sin frecuentar el área de la memoria-compartida. La comunicación dos operaciones: – send( message) – receive( message)
  • 37.
    SISTEMA DE PASOSDE MENSAJES (IPC) El tamaño del mensaje es fijo o variable Tamaño fijos : Implementación a nivel de SO sencilla y directa. Tamaño variable: Implementación a nivel de SO más compleja, programación más fácil.
  • 38.
    SISTEMA DE PASOSDE MENSAJES (IPC) Si P y Q desean comunicarse, ellos tienen que: 1. Establecer un (link) enlace de comunicación entre ellos 2. Intercambiar mensajes vía send/receive
  • 39.
    SISTEMA DE PASOSDE MENSAJES (IPC) Para establecer el ( link) enlace de comunicación, puede ser 1. físico (ejemplo, memoria-compartida, bus en hardware o una red) 2. lógico (ejemplo, propiedades lógicas)
  • 40.
    SISTEMA DE PASOSDE MENSAJES (IPC) Comunicación directa o indirecta Comunicación simétrica o asimétrica Uso de buffers
  • 41.
    COMUNICACIÓN DIRECTA OINDIRECTA Asignación de nombres: Forma para referenciar los procesos. Comunicación Directa Los procesos deben nombrase uno a otro. – send ( P, mensaje ) – envía mensaje al proceso P – receive ( Q, mensaje ) – recibe un mensaje del proceso Q
  • 42.
    COMUNICACIÓN DIRECTA Propiedadesdel enlace de comunicación Los enlaces se establecen automáticamente (se conocen un proceso con otro). Un enlace está asociado con exactamente un par de procesos comunicándose. Entre cada par existe exactamente un enlace. El enlace puede ser unidireccional, pero normalmente es bidireccional.
  • 43.
    COMUNICACIÓN DIRECTA Comunicaciónsimétrica: el emisor y el receptor se deben de nombrar. Comunicación asimétrica: solo el emisor nombra al receptor. send ( P, mensaje ) – envía mensaje al proceso P receive ( id, mensaje ) – recibe un mensaje de cualquier proceso
  • 44.
    COMUNICACIÓN INDIRECTA Losmensajes se envían y se reciben de buzones (mailboxes) o puertos. Cada buzón tiene un único id . Los procesos solo pueden comunicarse si comparten un buzón.
  • 45.
    COMUNICACIÓN INDIRECTA send ( A, mensaje ) – envía mensaje al buzón A receive ( A, mensaje ) – recibe un mensaje del buzón A Propiedades del enlace de comunicación El enlace se establece solo si los procesos comparten un buzón – Un enlace puede estar asociado con muchos procesos
  • 46.
    COMUNICACIÓN INDIRECTA Cadapar de procesos pueden compartir varios enlaces de comunicación. El enlace puede ser unidireccional o bidireccional Operaciones Crear un nuevo buzón Enviar y recibir mensajes a través del buzón Eliminar el buzón
  • 47.
    SINCRONIZACIÓN La comunicacióntiene lugar mediante send() y receive(). Existen diferentes opciones de diseño para implementar cada primitiva. Síncrono (bloqueo) o Asíncrono (sin bloqueo)
  • 48.
    SINCRONIZACIÓN Envío conbloqueo: el emisor se bloquea hasta q el msg es recibido por el receptor o por el buzón. Envío sin bloqueo: el emisor envía el mgs y continua su operación.
  • 49.
    SINCRONIZACIÓN Recepción conbloqueo: el receptor se bloquea hasta que haya un mensaje disponible. Recepción sin bloqueo: el receptor recupera un mensaje válido, o bien su valor nulo.
  • 50.
    USO DE BUFFERSLos mensajes residen en una cola temporal Capacidad cero: la cola tiene una longitud máxima de 0. El enlace no puede tener mgs esperando en él. El emisor debe bloquearse hasta que el receptor tome el msg.
  • 51.
    USO DE BUFFERSCapacidad limitada: La cola tiene longitud finita igual a n. Capacidad finita Si el enlace esta lleno el emisor debe bloquearse hasta que haya espacio en la cola.
  • 52.
    USO DE BUFFERSCapacidad ilimitada: Longitud infinita en teoría. El emisor nunca se bloquea
  • 53.
  • 54.
    CAPÍTULO 5 HILOS(THREADS) Procesos concurrentes (un solo hilo de ejecución) Sistemas Operativos modernos--- proceso contiene más de un hilo de ejecución
  • 55.
    HILOS (THREADS) Hiloo proceso ligero, es una unidad básica de utilización de la CPU. Comprende un ID, CP, conjunto de registros y una pila. Hilo comparte con otros hilos que pertenecen al mismo proceso: código, datos y otros recursos como archivos abiertos.
  • 56.
  • 57.
  • 58.
    HILOS (THREADS) Debidoa que tienen varios hilos de control, el proceso puede efectuar más de una tarea a la vez.
  • 59.
    HILOS (THREADS) Unejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de una red de área local. Cada vez que llega una solicitud de una operación sobre un fichero, se puede generar un nuevo hilo para su gestión.
  • 60.
    HILOS (THREADS) Elservidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultáneamente y en diferentes procesadores
  • 61.
    HILOS (THREADS) CARACTERISTICASSe comparten recursos. La compartición de la memoria permite a las hebras pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO.
  • 62.
    HILOS (THREADS) CARACTERISTICASLa conmutación de contexto es más rápida gracias al extenso compartir de recursos No hay protección entre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso
  • 63.
  • 64.
  • 65.
    Planificación Apropiativa Necesariotomar decisiones sobre la planificación de la CPU. Ejecución a Espera. Ejm. Solicitud E/S, wait. Ejecución a Listo. Ejm. Cuando ocurre una interrupción. Espera a Listo. Ejm. Terminación de E/S. Proceso Termina.
  • 66.
    Planificación Apropiativa Enlas situaciones 1 y 4 no hay más que una opción en términos de planificación: debe seleccionarse un nuevo proceso para su ejecución (si hay en la cola procesos listos); planificación no apropiativa. Una vez que la CPU ha sido asignada a un proceso, éste la conserva hasta q la cede ya sea porque termino o porque paso a espera. No requiere HW especial. Ejm Windows 3x
  • 67.
    Planificación Apropiativa Enlas opciones 2 y 3 existe la opción de planificar un nuevo proceso o no. Requiere HW adicional como un temporizador. Afecta el diseño del kernel del S.O. Requiere costos adicionales.
  • 68.
    Despachador Módulo quecede el control de la CPU al proceso seleccionado por el planificador a corto plazo. Esta función implica: Cambiar de contexto. Cambiar a modo de usuario. Saltar al punto apropiado del programa del usuario para reiniciar ese programa.
  • 69.
    Despachador Debe deser lo más rápido posible, porque se invoca cada conmutación de contexto. Latencia del despachador: Tiempo que el despachador tarda en detener un proceso y poner otro en ejecución.
  • 70.
    Criterios de planificaciónAl escoger qué algoritmo debe usarse, debemos considerar las propiedades de los diversos algoritmos. Se debe elegir el algoritmo óptimo
  • 71.
    Criterios de planificaciónUtilización de la CPU: Queremos mantener la CPU tan ocupada como pueda. Debe variar ( 0-100%). Sist Real (40%-90%). Rendimiento: El número de procesos que se completan por unidad de tiempo.
  • 72.
    Criterios de planificaciónEn el caso de procesos largos, esta tasa podría ser de un proc/hora, en transacciones cortas, el rendimiento podría ser de 10 proc/seg. Tiempo de Retorno(servicio): Intervalo entre el momento de presentación de un proceso y el momento en que se termina.
  • 73.
    Criterios de planificaciónEs la suma de los períodos durante los cuales espera entrar en la memoria, espera en la cola de procesos listos, se ejecuta en la CPU y realiza E/S. Tiempo de Espera: Es la suma de los períodos que el proceso pasa esperando en la cola de procesos listos.
  • 74.
    Criterios de planificaciónTiempo de Respuesta: Tiempo entre la presentación de una solicitud y la producción de la primera respuesta. Tiempo que el proceso tarda en empezar a responder, no incluye el tiempo que toma en exhibir la respuesta. Generalmente limitado por la velocidad del dispositivo de salida.
  • 75.
    Criterios de planificaciónEn la mayor parte de caso es favorable obtener el promedio de los tiempos. Hay circunstancias en que es deseable optimar los valores mínimo o máximo en lugar del promedio. Ejm garantizar buen servicio a todos los usuarios.
  • 76.
    Algoritmos de PlanificaciónLa planificación de la CPU, se ocupa del problema de decidir cuál de los procesos que están en la cola de procesos listos debe recibir la CPU.
  • 77.
    Algoritmos de Planificación1) Planificación FIFO (FCFS) El proceso que primero solicita la CPU, es el primero que la recibe. La implementación de la política FCFS es fácil con una cola FIFO. Cuando un proceso llega a la cola de procesos listos, su BCP se enlaza al final de la cola.
  • 78.
    Algoritmos de PlanificaciónCuando la CPU queda libre, se asigna al proceso que está a la cabeza de la cola, acto seguido, el proceso en ejecución se saca de la cola. Fácil de escribir e implementar. Tiempo de espera promedio suele ser muy largo.
  • 79.
    Algoritmos de PlanificaciónEfecto convoy: Cuando todos los demás procesos esperán que un solo proceso grande desocupe la CPU. Este efecto tiene como resultado un bajo aprovechamiento de la CPU y de los dispositivos de E/S.
  • 80.
    Algoritmos de PlanificaciónAlgoritmo no apropiativo, conserva la CPU hasta que la cede, ya sea porque terminó o porque solicitó E/S. Algoritmo problemático en los sistemas de tiempo compartido, donde es importante que cada usuario reciba una porción de tiempo de la CPU a intervalos regulares
  • 81.
  • 82.
    Algoritmos de Planificación2) Planificación SJF (Primero el trabajo más corto). Asocia a cada proceso la longitud de la siguiente ráfaga de CPU. Cuando la CPU queda disponible se asigna al proceso cuya siguiente ráfaga de CPU sea más corta.
  • 83.
    Algoritmos de PlanificaciónCuando en dos o más procesos las siguientes ráfagas tienen la misma duración, se emplea FCFS. El algoritmo SJF es óptimo en cuanto a que da el tiempo de espera promedio mínimo para un conjunto de procesos.
  • 84.
    Algoritmos de PlanificaciónLa dificultad real del algoritmo SJF es conocer la duración de la siguiente solicitud de CPU. Se usa a menudo en la Planificación a Largo Plazo. Se puede predecir valor de la siguiente ráfaga.
  • 85.
    Algoritmos de PlanificaciónSJF puede ser apropiativo y no apropiativo. SJF apropiativo desalojará al proceso que se está ejecutando. SJF no apropiativo permite que termine su ráfaja actual.
  • 86.
  • 87.
  • 88.
    Peterson #define FALSE 0 #define TRUE 1 #define N 2 int turn; int interested[N];   //all values initially 0 void enter_region(int process) {   int other;   other = 1 - process;    // lo opuesto del proceso   interested[process]=TRUE;  //mostrar interés   turn = process;         // establecer bandera   while(turn == process && interested[other] == TRUE); } void leave_region(int process) {   interested[process] = FALSE; }
  • 89.
  • 90.
    Dormir y Despertar#define N 3 int count = 0; void producer(void) { while (true) { produce_intem(); if (count == N) sleep(); enter_item(); count = count + 1; if (count == 1) wakeup(consumer); } } void consumer(void) { while (true) { if (count == 0) sleep(); remove_item(); count = count - 1; if (count == N - 1) wakeup(producer); consume_item(); } }
  • 91.
    Dormir y DespertarERRORES: Señal a despertar perdida SOLUCIÓN: bit de espera de despertar Llamada a despertar a un proceso despierto se enciende el bit. Cuando el proceso trate de dormirse si el bit está encendido se apaga.
  • 92.
    SEMÁFOROS Variable enterapara contar el número de despertares almacenados para su uso posterior. Un semáforo puede tener valor 0 lo que significa que no existen despertares almacenados o bien algún valor positivo si están pendientes uno o más despertares.
  • 93.
    SEMÁFOROS Operaciones DOWNy UP ( generalizaciones de SLEEP y WAKEUP). UP y DOWN llamadas al sistema, para inhabilitar brevemente las interrupciones mientras prueba el semáforo, lo actualiza y pone el proceso a dormir si es necesario.
  • 94.
    SEMÁFOROS Operaciones: Down UP Si s >0 Si la cola procesos vacía s = s -1 ; s = s + 1 ; Else else Bloquear proceso Desbloquear Proceso
  • 95.
    SEMÁFOROS OPERACIONES :Si el semáforo vale mas de 0 lo decrementa si no a dormir Si hay procesos dormidos , despierta a uno , si no , incrementa el valor del semáforo Ambas operaciones han de ser atómicas (indivisibles).
  • 96.
    SEMÁFOROS #define N100 TYPEDEF int semaphore; semaphore mutex = 1; /* Controla acceso a región crítica. semaphore empty = N; /* Cuenta las ranuras vacías semaphore full = 0; /* Cuenta las ranuras llenas. Void producer (void){ int item; while (TRUE) { produce_item(&item); /* Generar algo. down(&empty); /* Decrementa ranuras vacías. down(&mutex); /* Entrar en sección crítica enter_item(item); /* Inserta nuevo elemento. up(&mutex); /* Sale sección crítica. up(&full); /* Incrementa ranuras llenas. } }
  • 97.
    SEMÁFOROS Void consumer(void){ int item; while (TRUE) { down(&full); /* Decrementa ranuras llenas. down(&mutex); /* Entra sección crítica. remove_item(&item); /* Saca elemento. up(&mutex); /* Sale de sección crítica. up(&empty); /* Incrementa ranuras vacías. consume_item(item); /* Hacer algo con elemento consumido. } }
  • 98.
    SEMÁFOROS Semáforos Binarios: Valores 0, 1 utilizados por dos o más procesos, para asegurar que sólo un de ellos entre a su región crítica. Semáforos Sincronización: 0,1,… Garantiza la exclusión mutua.
  • 99.
    SEMÁFOROS ERRORES: Erroreshumanos Supongamos que el orden de los DOWN del código del productor se invierte, de modo que mutex se incrementa antes que empty. Si el buffer esta lleno, el productor se bloquea con mutex en 0. Luego el consumidor ejecuta un DOWN con mutex en 0. Ambos dormirán eternamente.
  • 100.
    MONITORES Colección deprocedimientos y datos, agrupados en una especie de módulo muy especial conocido como módulo monitor. Los procesos pueden llamar a los procedimientos del monitor siempre que lo deseen, pero no pueden acceder directamente a las estructuras de datos internas del monitor desde procedimientos declarados fuera del monitor.
  • 101.
    MONITORES Tienen unapropiedad importante: solo un proceso puede estar activo en un monitor en un instante de tiempo. (Exclusión Mutua). Compilador no el programador garantizan la Exclusión Mutua.
  • 102.
    MONITORES Los monitoresproveen un nuevo tipo de variables de condición con dos operaciones que operan sobre el. Wait -> wait(a) : produce que el proceso que ejecuta la instrucción sea interrumpido y removido de la cola de ready hasta que otro proceso lo habilite ejecutando la instrucción signal( )con la misma variable de condición.
  • 103.
    MONITORES Signal ->signal(a) : Habilita la ejecución de algún proceso en espera por la ejecución de la instrucción wait con la misma variable de condición.
  • 104.
    MONITORES Monitor example Integer i ; Condition c ; Procedure producer (x); . .end ; procedure consumer (x); .. end; end monitor
  • 105.
    MONITORES Se diseñaronpara resolver el problema de la exclusión mutua en uno o varios CPU que tienen acceso a una memoria común. En sistemas distribuidos con su propia memoria estas primitivas ya no funcionan. Muchos lenguajes carecen de monitores.
  • 106.
    BLOQUEOS MUTUOS Entornomultiprogramación  Varios procesos pueden competir por un número finito de recursos Procesos esperando recursos; nunca cambiaran de estado .
  • 107.
    BLOQUEOS MUTUOS Unacarencia de sincronización de procesos puede dar lugar a dos condiciones extremas: El bloqueo mutuo (abrazo mortal) La inanición
  • 108.
    BLOQUEOS MUTUOS Procesosolicita un recurso No está disponible  Espera Puede que no cambie de estado  Los recursos solicitados están en manos de otros procesos que también están en espera (Interbloqueo) Problema similar  Inanición, aplazamiento indefinido o bloqueo indefinido
  • 109.
    BLOQUEOS MUTUOS Modelodel Sistema: Los recursos finitos pueden ser de varios tipos cada uno de los cuales consta de varias instancias. Ejms: el espacio de memoria, los ciclos de CPU, los archivos, los dipositivos de E/S. Si el sistema tiene dos CPU, se dice que tiene dos ejemplares
  • 110.
    BLOQUEOS MUTUOS EJEMPLOSuponga que dos procesos quieren quemar un documento digitalizado en un CD. Proceso A solicita autorización para usar el escáner y se le concede. Proceso B solicita primero el quemador de CD y también se le concede. Ahora A, pide el quemador de CD, pero se le niega porque B no lo ha liberado B solicita el escáner, pero sin liberar el quemador de CD. PROCESOS A Y B ESTÁN BLOQUEADOS
  • 111.
    BLOQUEOS MUTUOS Secuenciade uso de recursos Solicitud Uso Llamadas al Sistema Liberación El recurso no está disponible cuando se solicita El proceso solicitante debe esperar En algunos S.O el proceso se bloquea automáticamente y despierta cuando dicho recurso esté disponible La solicitud falla y el proceso debe esperar para pedir el recurso.
  • 112.
    BLOQUEOS MUTUOS Solicitudy liberación llamadas al sistema: request, release, device, open, entre otras. No son administradas por el SO pueden hacerse mediante semáforos. Tablas en sistema para registrar solicitudes y liberaciones
  • 113.
    BLOQUEOS MUTUOS Unconjunto de procesos esta bloqueado cuando cada uno posee un recurso y esta a la espera de obtener un recurso poseído por otro proceso del conjunto.
  • 114.
    BLOQUEOS MUTUOS Caracterizaciónde B.M. Exclusión Mutua Sólo un proceso podrá usar el recurso. Recurso retenido no compatible. 2.  Retener y esperar Cuando los procesos que tienen recursos previamente otorgados solicitan otros recursos. No apropiación Un recurso no puede ser arrebatado a otro proceso, solo lo libera voluntariamente.
  • 115.
    BLOQUEOS MUTUOS Caracterizaciónde B.M. Espera circular Debe existir un conjunto {P 0 ,P 1 ..,P n } de procesos en espera tal que P 0 está esperando un recurso que fué adquirido por P 1 , P 1 está esperando un recurso que fué adquirido por P 2 ,….., P n-1 está esperando un proceso que fué adquirido por P n y P n está esperando un recurso que fué adquirido por P 0
  • 116.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos Grafos de Asignación de Recursos Nodos  Procesos y Recursos A rco s  D e un proceso a un recurso  Solicitud  De un recurso a un proceso  Asignación C iclo s  I ndica la existencia de un bloqueo
  • 117.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos Un conjunto de vértices V y un conjunto de aristas dirigidas E. V es particionado en dos tipos: P = {P1, P2, …, Pn}, el conjunto consistente de todos los procesos en el sistema. R = {R1, R2, …, Rm}, el conjunto consistente de todos los tipos de recursos en el sistema. Arista de petición – arista dirigida P1 -> Rj Arista de asignación –arista dirigida Rj -> Pi
  • 118.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos
  • 119.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos CICLOS Si la gráfica no contiene ciclos; no hay BM Si hay un ciclo y una sola instancia de cada recurso, condición suficiente para BM. Varios ciclos BM. EJEMPLOS:
  • 120.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos
  • 121.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos
  • 122.
    BLOQUEOS MUTUOS GráficaAsignación de Recursos
  • 123.
    BLOQUEOS MUTUOS Estrategiaspara enfrentar los Bloqueos 1) Podemos utilizar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo mutuo. 2) Podemos permitir que el sistema entre en un estado de bloqueo mutuo y luego hacer una recuperación. 3) Podemos ignorar el problema y pretender que los bloqueos mutuos nunca ocurren en el sistema; usado por la mayoría de los sistemas operativos, incluyendo a UNIX.
  • 124.
    BLOQUEOS MUTUOS Estrategiaspara enfrentar los Bloqueos Para asegurarnos que nunca ocurra un BM podemos usa estrategias de: Prevención de BM Evitación de BM
  • 125.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos Lograr que al menos unos de las 4 condiciones no se cumpla. Exclusión Mutua: Generalmente no es posible prevenir BM negando esta condición. Ejm. Recursos que no puedan compartirse (memoria, CPU, o dispositivos dedicados).
  • 126.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos 1) Exclusión Mutua: No es problema con recursos que se puedan compartir (archivos de sólo lectura). 2) Retener y Esperar: debemos garantizar que, siempre que un proceso solicite un recurso no retenga algún otro.
  • 127.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos 2) Retener y Esperar PROTOCOLO1: Requiere que cada proceso y se le asignen todos sus recursos antes de iniciar su ejecución ( en el momento de la creación ). PROTOCOLO2: P ermitir que un proceso solicite recursos sólo cuando no tenga alguno.
  • 128.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos DESVENTAJAS: 1) Baja utilización de recursos. 2) Posibilidad de inanición.
  • 129.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos 3) No Apropiación: Para asegurarnos que no se cumpla esta condición podemos usar el siguiente protocolo: PROTOCOLO1: Si un proceso que está reteniendo algunos recursos solicita otro recurso que no le puede ser asignado inmediatamente, entonces todos los recursos que actualmente son retenidos son apropiados (se liberan implícitamente).
  • 130.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos PROTOCOLO ALTERNO: Si un proceso solicita algunos recursos, verificamos si están disponibles; si es así se los asigna. Caso contrario verificamos si están asignados a algún otro proceso que esta esperando recursos adicionales; de ser así el proceso solicitante se apropia de los recursos deseados.
  • 131.
    BLOQUEOS MUTUOS Prevenciónde Bloqueos Mutuos 4) Espera Circular: imponer un ordenamiento total de todos los tipos de recursos (numerarlos: impresora = 1, disco = 2, etc), y requerir que cada proceso solicite sus recursos en orden creciente de enumeración ( ordenamiento jerárquico que obliga a anticipar el orden en que utilizara los recursos).
  • 132.
    BLOQUEOS MUTUOS Evitaciónde Bloqueos Mutuos Requiere que al SO se le de por adelantado información relacionada con los recursos que un proceso solicitará y usará durante su vida. Con esta información de la secuencia completa de solicitudes y liberaciones; podemos decidir para cada solicitud si el proceso tendrá que esperar o no.
  • 133.
    BLOQUEOS MUTUOS Evitaciónde Bloqueos Mutuos El sistema debe tener la capacidad de distinguir si se puede otorgar sin peligro un recurso o no, y solo efectuar la asignación si no hay peligro. ¿Hay algún algoritmo que siempre pueda evitar los bloqueos mutuos tomando la decisión correcta todo el tiempo?
  • 134.
    BLOQUEOS MUTUOS Evitaciónde Bloqueos Mutuos Veremos un algoritmo para la evitación de Bloqueos Mutuos para un ambiente con solo una instancia de cada recurso. Podemos usar una variante de la gráfica de asignación de recursos.
  • 135.
    BLOQUEOS MUTUOS Evitaciónde Bloqueos Mutuos Además de las aristas de solicitud y asignación tenemos un nuevo tipo de aristas llamada: arista de demanda . Arista de demanda Pi -> Rj indica que el proceso Pi puede solicitar el recurso Rj en algún momento en el futuro; representada por una línea punteada. Semejante a una arista de solicitud.
  • 136.
    BLOQUEOS MUTUOS Evitaciónde Bloqueos Mutuos Una arista de demanda se convierte en arista de solicitud cuando un proceso solicita un recurso. Cuando un recurso es liberado por un proceso, una arista de asignación se convierte en arista de demanda.
  • 137.
    BLOQUEOS MUTUOS Gráficade Asignación de Recursos para Evitación de Bloqueos Mutuos
  • 138.
    BLOQUEOS MUTUOS Gráficade Asignación de Recursos para Evitación de Bloqueos Mutuos Una solicitud solo puede atenderse si la conversión de la arista de solicitud Pi -> Rj en una arista de asignación Rj Pi no da como resultado un ciclo en la gráfica. Se utiliza un algoritmo de detección de ciclos.
  • 139.
    BLOQUEOS MUTUOS Gráficade Asignación de Recursos para Evitación de Bloqueos Mutuos Si no existe un ciclo, entonces la asignación del recurso al Pi dejará al sistema en un estado seguro. Si existe al menos un ciclo el sistema estará en un estado inseguro; y por lo tanto la asignación al Pi no podrá realizarse.
  • 140.
    BLOQUEOS MUTUOS EstadoInseguro en Gráfica de Asignación de Recursos
  • 141.
    BLOQUEOS MUTUOS Detección de Bloqueos Mutuos Permitir al sistema entrar en estado de bloqueo mutuo y luego recuperarlo 1)Algoritmo de Detección 2)Esquema de Recuperación
  • 142.
    BLOQUEOS MUTUOS Detección de Bloqueos Mutuos Veremos un algoritmo para un ambiente con solo una instancia de cada recurso. Este esquema de detección y recuperación implica un gasto extra (overhead). Este algoritmo es una variante de la gráfica de asignación de recursos llamado: gráfica de espera
  • 143.
    BLOQUEOS MUTUOS Detección de Bloqueos Mutuos Para esta gráfica se quitan los nodos de tipo de recurso y se desintegran las aristas apropiadas. Ejemplo Pi Rq y Rq Pj el resultado será: Pi Pj
  • 144.
    BLOQUEOS MUTUOS Detección de Bloqueos Mutuos Existe un Bloqueo Mutuo si la gráfica de espera tiene un ciclo. Se necesita invocar un algoritmo que busque un ciclo en la gráfica.
  • 145.
    BLOQUEOS MUTUOS Detección de Bloqueos Mutuos
  • 146.
    BLOQUEOS MUTUOS Recuperaciónde un estado de Bloqueo Mutuo 1) Terminación de procesos 2) Apropiación de recursos
  • 147.
    BLOQUEOS MUTUOS Recuperaciónde un estado de Bloqueo Mutuo 1) Terminación de procesos a) Abortar todos los procesos bloqueados : alto costo, resultados parciales descartados. b) Abortar un proceso cada vez hasta que el ciclo de bloqueo sea eliminado: Gasto extra; ya q después de abortar a cada proceso se debe invocar un algoritmo de detección de Bloqueo Mutuo.
  • 148.
    BLOQUEOS MUTUOS Recuperaciónde un estado de Bloqueo Mutuo 2) Apropiación de recursos a) Seleccionar una victima: Que recursos y de que procesos se van a apropiar b) Retroceso: Regresar a los procesos a los q se les quito los recursos a un estado seguro. Se puede dar un retroceso total o parcial c) Inanición: Garantizar que no siempre el mismo proceso será la victima. Incluir los retrocesos en el factor costo.
  • 149.
  • 150.