Sistemas Operativos                                                                       Unidad 2                       2...
Sistemas Operativos                                                                        Unidad 2Hay otros estados de lo...
Sistemas Operativos                                                                       Unidad 2El sistema operativo tra...
Sistemas Operativos                                                                      Unidad 2Elementos Básicos de un b...
Sistemas Operativos                                                                       Unidad 2Un proceso puede mostrar...
Sistemas Operativos                                                                       Unidad 2Una ventaja importante d...
Sistemas Operativos                                                                       Unidad 22.6 SECCIONES CRÍTICASEl...
Sistemas Operativos                                                                       Unidad 2wait(s)El efecto es dism...
Sistemas Operativos                                                                      Unidad 2Por ejemplo, la represent...
Sistemas Operativos                                                                                                       ...
Sistemas Operativos                                                                         Unidad 2El interbloqueo se pro...
Sistemas Operativos                                     Unidad 2                      Universidad Autónoma de Nayarit     ...
Sistemas Operativos                                                                       Unidad 2Condiciones de Interbloq...
Sistemas Operativos                                                                        Unidad 22.8.2 PREVENCIÓN DEL IN...
Sistemas Operativos                                                                          Unidad 22.8.3 DETECCIÓN DEL I...
Sistemas Operativos                                                                         Unidad 22.8.4 PREDICCIÓN DEL I...
Sistemas Operativos                                                                    Unidad 2El orden en que se enumeran...
Próxima SlideShare
Cargando en…5
×

Unidad2

452 visualizaciones

Publicado el

Información de la Unidad II de la Materia S.O.

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
452
En SlideShare
0
De insertados
0
Número de insertados
26
Acciones
Compartido
0
Descargas
13
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Unidad2

  1. 1. Sistemas Operativos Unidad 2 2. ADMINISTRACIÓN DE PROCESOS2.1 CONCEPTOS ACERCA DE LOS PROCESOSEl término “proceso” fue utilizado por primera vez por los diseñadores del sistema Multics en los añossesenta. Desde entonces, el término proceso, utilizado a veces como sinónimo de tarea (task) o trabajo(job), ha tenido muchas definiciones. A continuación se presentan algunas: ü Un programa en ejecución ü Una actividad asíncrona ü El “espíritu animado” de un procedimiento ü El “centro de control” de un procedimiento en ejecución ü Lo que se manifiesta por la existencia de un “bloque de control de proceso” en el sistema operativo ü La entidad a la que se asignan los procesadores ü La unidad “despachable”.El concepto de “programa en ejecución” parece ser que se utiliza con más frecuencia. Un programa esuna entidad inanimada; sólo cuando un procesador le “infunde vida” se convierte en la entidad “activa”que se denomina proceso.Hasta ahora hemos utilizado siempre el término programa. A partir de ahora distinguiremos entreprograma y proceso. Un programa es una secuencia de instrucciones escrita en un lenguaje dado. Unproceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, supalabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc. Un programa esun concepto estático, mientras que un proceso es un concepto dinámico. Es posible que un programasea ejecutado por varios usuarios en un sistema multiusuario, por cada una de estas ejecuciones existiráun proceso, con su contador de programa, registros, etc. El sistema operativo necesita el concepto deproceso para poder gestionar el procesador mediante la técnica de multiprogramación o de tiempocompartido, de hecho, el proceso es la unidad planificable, o de asignación de la CPU.2.2 ESTADOS DE UN PROCESOUn proceso pasa por una serie de estados discretos, algunos de ellos son: ü En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando. ü Listo o preparado: El proceso dispone de todos los recursos para su ejecución, sólo le falta la CPU. ü Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución.Varios eve ntos pueden ocasionar que un proceso cambie de estado. Se dice que un proceso se estáejecutando, es decir, se encuentra en estado de ejecución, si tiene asignada la unidad central deprocesamiento (CPU de aquí en adelante).Se dice que un proceso está listo (es decir, se encuentra en estado listo) si pudiera utilizar una CPU encaso de haber una disponible. Un proceso está bloqueado (es decir, se encuentra en estado bloqueado)si está esperando que suceda algún evento (como un evento de fin de E/S, por ejemplo) antes de poderproseguir su ejecución. Universidad Autónoma de Nayarit 1
  2. 2. Sistemas Operativos Unidad 2Hay otros estados de los procesos, pero en el presente curso se tratarán estos tres. Por sencillez, seconsidera un sistema con una sola CPU, aunque no es difícil la extensión a múltiples procesadores.Solamente puede haber un proceso en ejecución a la vez, pero puede haber varios listos y varios puedenestar bloqueados. Así pues, se forma una lista de procesos listos y otras de procesos bloqueados. Lalista de procesos listos se ordena por prioridad, de manera que el siguiente proceso que reciba la CPUserá el primero de la lista. La lista de procesos bloqueados normalmente no está ordenada; los procesosno se desbloquean (es decir, no pasan a ser procesos listos) en orden de prioridad, sino que lo hacen enel orden de ocurrencia de los eventos que están esperando.Como se verá más adelante, hay situaciones en las cuales varios procesos pueden bloquearse esperandola ocurrencia del mismo evento; en tales casos es común asignar prioridades a los procesos queesperan.2.3 TRANSICIONES DE ESTADO DE LOS PROCESOSCuando se admite una tarea en el sistema, se crea el proceso correspondiente y se inserta normalmenteal final de la lista de procesos listos. El proceso se desplaza poco a poco hacia el frente de la lista deprocesos listos, a medida que los procesos que se encuentran antes que él completan su turno de uso dela CPU. Cuando el proceso llega al principio de la lista, se le asigna la CPU cuando ésta quedadisponible y entonces se dice que hay una transición de estado del estado listo al estado de ejecución.La asignación del procesador al primer proceso de la lista de procesos listos se denomina despacho;dicha actividad la realiza una entidad del sistema llamada despachador. Esa transición se indica comosigue:Para evitar que un proceso monopolice el sistema, en forma accidental o mal intencionada, el sistemaoperativo utiliza un reloj de interrupción por hardware (o cronómetro de intervalos) para que las tareasde este usuario se ejecuten durante un intervalo específico de tiempo o quantum.Si el proceso no libera voluntariamente la CPU antes de que expire el intervalo de tiempo, el relojgenera una interrupción, haciendo que retome el control el sistema operativo. Universidad Autónoma de Nayarit 2
  3. 3. Sistemas Operativos Unidad 2El sistema operativo transforma entonces el proceso que estaba ejecutándose en un proceso listo yprocede a ejecutar el primero de los procesos de la cola de listos. Estas transiciones de estado seindican así:tiempo_expirado (nombre_del_proceso):en_eje cución? listoydespachar (nombre_del proceso): listo ? en ejecuciónLos relojes sirven para mantener la hora del día, indicar la expiració n de los quantums, contabilizar eluso de los recursos, dar notificaciones a los procesos en los momentos designados y acumularestadísticas de desempeño. Algunas computadoras utilizan baterías para mantener funcionando losrelojes aun cuando esté apagado el sistema.Si el proceso que se está ejecutando inicia una operación de E/S antes de que expire su quantum, liberavoluntariamente la CPU (es decir, el proceso se bloquea a sí mismo esperando a que se complete laoperación de E/S). Esta transición de estado esbloquear(nombre_del_proceso): en ejecución? bloqueadoLa última transición posible en este modelo de tres estados ocurre cuando se completa una operación deE/S (o algún otro evento que espere un proceso). El proceso realiza la transición del estado bloqueadoal estado listo. La transición esdespertar (nombre_del_proceso):bloqueado? listoDe esta forma se han definido cuatro posibles transiciones de estado:despachar (nombre_del_proceso):listo? en_ejecucióntiempo_expirado (nombre_del_proceso):en_ejecución? listobloquear (nombre_del_proceso):en_ejecución? bloqueadodespertar (nombre_del_proceso):bloqueado? listoObsérvese que la única transición de estado iniciada por el proceso de usuario es el bloqueo; las otrastres transiciones son iniciadas por entidades externas al proceso.2.4 EL BLOQUE DE CONTROL DE PROCESOLa forma en que se manifieste un proceso en un sistema operativo es mediante un bloque de control deproceso (process control block o PCB) o un descriptor de proceso. El PCB es una estructura de datosque contiene información importante acerca de un proceso, esto es, un almacén central de informaciónque permite al sistema operativo localizar toda la información importante acerca de un proceso.Cuando el sistema operativo conmuta la CPU entre varios procesos activos, utiliza las áreas desalvaguarda de los PCB para guardar la información que necesita para reiniciar un proceso cuando ésteobtenga la CPU nuevamente.Así pues, el PCB es la entidad que define un proceso al sistema operativo. Dado que los PCB necesitanser manejados con eficiencia por el sistema operativo, muchos sistemas de cómputo tienen un registrode hardware que siempre apunta hacia el PCB del proceso que se está ejecutando. A menudo existeninstrucciones de hardware que cargan en el PCB información acerca del estado, y que la recuperan conrapidez. Universidad Autónoma de Nayarit 3
  4. 4. Sistemas Operativos Unidad 2Elementos Básicos de un bloque de Control de ProcesoIdentificación del ProcesoLos identificadores numéricos que se pueden guardar en el bloque de control de proceso incluyen: ü Identificador de este proceso ü Identificador del proceso que creó a este proceso (el proceso padre) ü Identificador del usuarioInformación de Estado del ProcesadorRegistros Visibles para el UsuarioUn registro visible para el usuario es aquél al que puede hacerse referencia por medio del lenguajemáquina que ejecuta el procesador. Normalmente, existen de 8 a 32 de estos registros, aunque algunasimplementaciones RISC tiene n más de 100.Registros de Control y de EstadoHay varios registros del procesador que se emplean para controlar su funcionamiento, Entre estos seincluyen: ü Contador de programa: Contiene la dirección de la próxima instrucción a ser tratada. ü Códigos de condición: Muestran el resultado de la operación aritmética o lógica más reciente (signo, cero, acarreo, igualdad, desbordamiento). ü Información de estado: Incluye los indicadores de habilitación o inhabilitación de interrupciones y el modo de ejecución.Apuntadores de stackCada proceso tiene uno o más stacks del sistema asociados. Los stacks se utilizan para almacenar losparámetros y las direcciones de retorno de los procedimientos y de las llamadas al sistema. ElApuntador al stack siempre apunta al elemento indicado por el tope.Información de Control del ProcesoInformación de Planificación y de EstadoEsta es la información que se necesita por el sistema operativo para llevar a cabo sus funciones deplanificación. Los elementos típicos de esta información son los siguientes: ü Estado del proceso: Define la disposición del proceso para ser planificado para ejecutar (en ejecución, listo, esperando, detenido). ü Prioridad: Se puede usar uno o más campos para describir la prioridad de planificación de los procesos. En algunos sistemas se necesitan varios valores (por omisión, actual, la más alta permitida). ü Información de planificación: Ésta dependerá del algoritmo de planificación utilizado. Como ejemplos se tienen la cantidad de tiempo que el proceso ha estado esperando y la cantidad de tiempo que el proceso ejecutó la última vez. ü Suceso: La identidad del suceso que el proceso está esperando antes de poder reanudarse.Estructuración de DatosUn proceso puede estar enlazado con otros procesos en una cola, un anillo o alguna otra estructura. Porejemplo todos los procesos que están en estado de espera de un nivel determinado de prioridad puedenestar enlazados en una cola. Universidad Autónoma de Nayarit 4
  5. 5. Sistemas Operativos Unidad 2Un proceso puede mostrar una relación padre- hijo (creador-creado) con otro proceso. El bloque decontrol de proceso puede contener apuntadores a otros procesos para dar soporte a estas estructuras.Comunicación entre ProcesosPuede haber varios indicadores, señales y mensajes asociados con la comunicación entre dos procesosindependientes. Una parte de esta información o toda ella se puede guardar en el bloque de control deproceso.Información de Control del ProcesoPrivilegios de los procesosA los procesos se les otorgan privilegios en términos de la memoria a la que pueden acceder y el tipode instrucciones que pueden ejecutar. Además, también se pueden aplicar privilegios al uso de losservicios y utilidades del sistema.Gestión de MemoriaEsta sección puede incluir apuntadores a las tablas de páginas y/o segmentos que describen la memoriavirtual asignada al proceso.Propiedad de los Recursos y UtilizaciónSe pueden indicar los recursos controlados por el proceso, tales como los archivos abiertos. También sepuede incluir un histórico de la utilización del procesador o de otros recursos; esta información puedeser necesaria para el planificador.2.5 PROCESAMIENTO DE INTERRUPCIONESEn un sistema de cómputo, una interrupció n es un evento que altera la secuencia en que el procesadorejecuta las instrucciones.La interrupción es generada por el hardware del sistema de cómputo. Cuando ocurre una interrupción: ü El sistema operativo toma el control (es decir, el hardware pasa el control al sistema operativo). ü El sistema operativo guarda el estado actual del proceso interrumpido en el PCB del proceso (conmutación de contexto). ü El sistema operativo aplica la transición: bloquear (nombre_del_proceso): en_ejecución ? bloqueado ü El manejador de interrupciones del sistema operativo analiza la interrupción y transfiere el control a la rutina apropiada para atenderla; en muchos sistemas el hardware se encarga de esto automáticamente. ü La rutina seleccionada por el manejador de interrupciones procesa la interrupción. ü El sistema operativo aplica la transición: despachar (nombre_del_proceso): listo ? en_ejecución ü Cuando se ha terminado de atender el evento que generó la interrupción el sistema operativo aplica la transición: despertar (nombre_del_proceso): bloqueado ? listoUna interrupción puede ser iniciada específicamente por un proceso en ejecución (en cuyo caso sesuele denominar trampa (trap), y se dice que está sincronizada con la operación del proceso) o puedeser causada por algún evento que puede estar relacionado o no con el proceso en ejecución (en cuyocaso se dice que es asíncrona con la operación del proceso). Universidad Autónoma de Nayarit 5
  6. 6. Sistemas Operativos Unidad 2Una ventaja importante de las interrupciones es que son una forma económica de llamar la atención dela CPU, de este modo no necesita escrutar constantemente los dispositivos para ver si alguno requiereatención. Un ejemplo simple de la diferencia de escrutinio e interrupción se puede observar en lascocinas modernas equipadas con hornos de microondas. El cocinero puede ajustar un reloj para que sedetenga después de cierto tiempo (un ejemplo de interrupción es el sonido que produce la alarmacuando transcurre el tiempo), o bien, el cocinero puede mirar periódicamente a través de la ventana delhorno para ver cómo se cocina el asado (esta clase de vigilancia periódica es un ejemplo de escrutinio).Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si estas llegan con muchafrecuencia, el sistema no será capaz de atenderlas. Un controlador de humano de tráfico aéreo podríaverse fácilmente abrumado si convergieran muchos aviones en una zona reducida. En algunos sistemasorientados hacia el teclado, cada tecla presionada almacena en la memoria un código de un byte ygenera una interrupción para informar a la CPU que un carácter esta listo para ser procesado. Si la CPUno puede procesar el dato antes de que se presione la siguiente tecla, se pierde el primer carácter.Clases de interrupcionesEn términos generales puede considerarse que existen seis clases de interrupciones: ü Interrupciones SVC (supervisor call, llamadas al supervisor). Son iniciadas por un proceso en ejecución que ejecute la instrucción SVC. Una SVC es una petición generada por el usuario de un servicio particular del sistema, como realizar una operación de E/S, obtener más memoria o comunicarse con el operador del sistema. El mecanismo de las SVC ayuda a proteger el sistema operativo de las acciones de los usuarios. Un usuario no puede entrar arbitrariamente al sistema operativo, sino que debe solicitar un servicio por medio de una SVC. El sistema operativo está al tanto de todos los usuarios que intentan rebasar sus límites y puede rechazar ciertas peticiones si el usuario no tiene los privilegios necesarios. ü Interrupciones de E/S. Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la CPU el cambio de estado de un canal o un dispositivo. Las interrupciones de E/S se producen cuando finaliza una operación de E/S o cuando un dispositivo pasa al estado listo, por ejemplo. ü Interrupciones externas. Son causadas por diversos eventos, incluyendo la expiración de un cuanto de un reloj que interrumpe, la pulsación de la tecla de interrupción de la consola o la recepción de una señal procedent e de otro procesador en un sistema de múltiples procesadores. ü Interrupciones de reinicio. Ocurre cuando se presiona el botón de reinicio de la consola o cuando llega desde otro procesador una instrucción de reinicio (señal del procesador) en un sistema de múltiples procesadores. ü Interrupciones de verificación del programa. Son causadas por una amplia clase de problemas que pueden ocurrir cuando se ejecutan las instrucciones en lenguaje de máquina de un programa. Dichos problemas incluyen la división entre cero, el exceso o defecto de los números que pueden ser manejados por las operaciones aritméticas, la presencia de datos (con los cuales se está trabajando) con un formato erróneo, el intento de ejecutar un código de operación inválido, el intento de hacer referencia a una localidad de memoria que esté fuera de los limites de la memoria real, el intento por parte de un proceso de usuario de ejecutar una instrucción privilegiada y el intento de hacer referencia a un recurso protegido. Muchos sistemas ofrecen a los usuarios la opción de especificar las rutinas que deben ejecutarse cuando ocurra una interrupción de verificación del programa. ü Interrupciones de verificación de la máquina. Son ocasionadas por el mal funcionamiento del hardware. Universidad Autónoma de Nayarit 6
  7. 7. Sistemas Operativos Unidad 22.6 SECCIONES CRÍTICASEl fenómeno de exclusión mutua genera entre otras cosas, la necesidad de programar secciones oregiones críticas que permitan el acceso a recursos compartibles por múltiples procesos, de manera quela integridad de los datos de preserve.La exclusión mutua debe ponerse en práctica cuando los procesos obtienen acceso a datos compartidosmodificables; cuando los procesos realizan operaciones que no entran en conflicto con otras, debepermitirse que procedan concurrentemente. Cuando un proceso obtiene acceso a datos compartidosmodificables, se dice que se encuentra en una sección crítica o región critica.Mientras un proceso se encuentra en su sección crítica, otros procesos pueden, claro está, seguirejecutándose fuera de sus secciones críticas. Cuando un proceso abandona su región crítica, otroproceso que esperaba entrar en su propia sección crítica podrá hacerlo (si existe algún proceso enespera). Lograr que se cumpla la exclusión mutua es uno de los problemas fundamentales de laprogramación concurrente. Se han propuesto muchas soluciones, algunas de software y otras dehardware, algunas sencillas y otras complejas, y algunas que requieren la cooperación voluntaria de losprocesos y otras que exigen un estricto ajuste a rígidos protocolos.Encontrarse dentro de una región crítica es un estado especial concedido a un proceso. El proceso tieneacceso exclusivo a los datos compartido y los demás procesos que requieran acceso a los datos en esemomento deben esperar. Así pues, las secciones críticas deben ejecutarse tan rápido como sea posible;un proceso no debe bloquear dentro de su propia sección crítica y las secciones críticas debencodificarse con mucho cuidado (para evitar, por ejemplo, la posibilidad de ciclos infinitos).Si un proceso de una sección crítica termina, ya sea voluntaria o involuntariamente, el sistemaoperativo, al realizar su mantenimiento de terminaciones, debe liberar la exclusión mutua de maneraque otros procesos puedan entrar en sus regiones críticas.2.7 SEMÁFOROS Y MONITORESSEMÁFOROLa contribución más importante de la comunicación entre procesos fué la introducción del concepto desemáforos (Dijkstra, 1965) y el funcionamiento de las primitivas wait y signal que actúan sobre ellos.Un semáforo es una variable entera no negativa que, aparte de su valor inicial, sólo puede ser activadapor las operaciones wait y signal. Estas operaciones sólo actúan en los semáforos, y su efecto se definecomo sigue.signal(s)Su efecto es aumentar el valor del semáforo s en uno, el incremento será considerado como unaoperación indivisible. La indivisibilidad implica que signal(s) no es equivalente a la sentencia deasignación s = s + 1. Suponga que dos procesos A y B desean realizar una operación signal(s) cuandoel valor de s es, digamos 3. Entonces el valor de s cuando ambas operaciones estén completos será 5.Suponga por otro lado que en circunstancias similares ambos procesos desearon ejecutar s = s + 1. Estadeclaración sería implementada como tres operaciones en más de un hardware; lee s, agregue uno, yalmacene s; esto sería verdad aun cuando una sola instrucción de máquina siempre fuera usada paraincrementar s. No habría ninguna garantía que A complete las tres operaciones antes de que Bempezara; si no fuera así cada proceso podría asignar el valor 4 entonces a s, y se perdería uno de losincrementos deseados. Universidad Autónoma de Nayarit 7
  8. 8. Sistemas Operativos Unidad 2wait(s)El efecto es disminuir el valor del semáforo s en 1, en cuanto el resultado fuera no negativo. De nuevola operación es indivisible. La operación wait implica un retraso potencial, para cuando actúe en unsemáforo cuyo valor es 0, el proceso que ejecuta la operación sólo puede proceder cuando algún otroproceso ha aumentado el valor del semáforo a 1 por una operación signal. La indivisibilidad de laoperación indica que si algunos procesos son borrados entonces solo uno de ellos puede completarexitosamente la operación cuando el semáforo se pone positivo. No se hace suposición alguna sobreque proceso es éste. Los efectos de las operaciones de wait y signal pueden resumirse como: ü wait(s): si s > 0 decrementa s ü signal (s): incrementa s donde s es cualquier semáforo.MONITORESUn programador puede poner fácilmente wait y signal en lugares no convenientes, o incluso omitirlosen su totalidad. Por ejemplo, un programador que no comprende que una estructura de datos particularserá compartida por varios procesos omitirá en las operaciones wait y signal la sección crítica delprograma que accedan. La estructura de datos estará entonces indefensa de la manipulación simultáneapor varios procesos, y las inconsistencias en sus contenidos probablemente sucederán.Para evitar tales problemas ha habido varios propuestas que obligan al programador a que declare datoscompartido y recursos explícitos, y que de fuerza a la exclusión mutua de acceso a objetos compartidos.Uno de los más influyentes y ampliamente adoptado es el monitor (Hoare, 1974)Un monitor consiste de:1. Los datos que comprenden un objeto compartido2. Un juego de procedimientos que pueden llamarse para acceder el objeto3. Una porción de programa que inicializa el objeto (este programa sólo se ejecuta una vez, cuando elobjeto se crea)Por ejemplo, un buffer para los campos de datos de paso entre los procesos del productor y procesosdel consumidor podría representarse por un monitor que consiste de:1. El espacio del buffer e indicadores (por ejemplo, un arreglo, e índices dentro de este)2. Dos procedimientos depositar y extraer que pueden ser llamados por los procesos para poner uncampo en el buffer o remover un campo de este.3. Una pieza de programa que inicializa el apuntador del buffer al comienzo.El compilador de un lenguaje que incorpora a los monitores debe asegurar que acceda un objetocompartido que sólo puede hacerse llamando un procedimiento del monitor correspondiente. Elcompilador también debe asegurar que los procedimientos de cada monitor sean implementados comoexclusión mutua, secciones críticas. El compilador puede hacer bien esto con las operaciones wait ysignal de los semáforos apropiados en el programa compilado. Así, en el ejemplo del buffer, elcompilador garantiza que el acceso al buffer es restringido al depositar y extraer procedimientos, y queesos procedimientos son mutuamente excluyentes.Debe estar claro que los monitores eliminan una fuente potencialmente fértil de errores transfiriendo laresponsabilidad por la exclusión mutua del programador al compilador. La responsabilidad para otrasformas de restos de sincronización, sin embargo, con el programador debe usar los semáforos (o algoequivalente) para efectuarlo. Universidad Autónoma de Nayarit 8
  9. 9. Sistemas Operativos Unidad 2Por ejemplo, la representación de un buffer como un monitor asegura a través de la exclusión mutua dedepositar y extraer ese campo que no puede ser simultáneamente insertados o borrados. Esto no sehace, sin embargo, previniendo procesos que depositan campos en un buffer lleno o vaciando uno.Tales desastres deben ser prevenidos poniendo las operaciones de sincronización apropiados dentro delas operaciones depositar y extraer.La estructura del monitor se ha llevado a cabo en varios lenguajes de programación, como ConcurrentPascal (Hansen, 1975), Pascal-plus (Welsh y Bustard, 1979), Mesa (Lampson -y Redell, 1980), yTuring (Holt y Cordy, 1988). Para el administrador del sistema operativo tiene la ventaja de restringirtodas las operaciones en un objeto compartido a un juego de procedimientos bien definidos, y deasegurar que estas operaciones son mutuamente exclusivas.2.8 INTERBLOQUEO (DEADLOCK)Bloqueo Mutuo O Abrazo MortalLos bloqueos mutuos pueden aparecer de muchas formas. Si a un proceso se le asigna la tarea deesperar a que ocurra un evento y el sistema no incluye providencias para señalar la ocurrencia de dichoevento, habrá un bloqueo mutuo con un solo proceso. La ma yor parte de los bloqueos mutuos en lossistemas reales implican una competencia entre varios procesos por varios recursos.Un problema afín: Aplazamiento indefinidoEn cualquier sistema que mantenga los procesos en espera mientras se les asigna un recurso o se tomandecisiones de planificación, la programación de un proceso puede postergarse indefinidamente mientrasotro recibe la atención del sistema. Tal situación se conoce con varios nombres, entre los que seincluyen aplazamiento indefinido, bloqueo indefinido e inanición, y puede resultar tan peligrosa comoun bloqueo mutuo.El aplazamiento indefinido puede ocurrir debido a predisposiciones en las políticas de planificación derecursos del sistema. Cuando los recursos se planifican por prioridad, es posible que un proceso dadoespere en forma indefinida un recurso por que siguen llegando otros procesos con mayor prioridad. Laespera es un hecho de la vida real y es sin duda un aspecto muy importante de lo que ocurre dentro delos sistemas de cómputo. Los sistemas deben diseñarse para administrar los procesos en espera demanera justa además de eficiente. En algunos sistemas, el aplazamiento indefinido se evita aumentandola prioridad del proceso mientras espera. Esto se conoce como envejecimiento. En algún momento laprioridad de ese proceso superará la prioridad de los otros procesos entrantes y el proceso en esperaserá atendido.2.8.1 PRINCIPIOS DEL INTERBLOQUEOTodos los interbloqueos suponen demandas contradictorias de recursos por parte de dos o másprocesos. La figura de avance conjunto de los procesos P1 y P2 ilustra este conflicto de formaabstracta en el caso de dos procesos y dos recursos. Los dos ejes del diagrama representan el avance delos dos procesos en términos de instrucciones ejecutadas. El avance conjunto de los dos procesos serepresenta entonces con una secuencia discreta de puntos en el espacio. Las líneas horizontales overticales representan el intervalo de tiempo en el que sólo uno de los procesos está ejecutándose(intercalado); una línea diagonal significa ejecución simultánea (solapamiento). Universidad Autónoma de Nayarit 9
  10. 10. Sistemas Operativos Unidad 2Supóngase que existe un punto en la ejecución de cada proceso en el que se requiere el uso exclusivode ambos recursos, R1 y R2, para continuar. En el ejemplo, llega un punto en el que el proceso P1 haadquirido el recurso R1 y el proceso P2 ha adquirido el recurso R2 y cada proceso necesita el otrorecurso. Este es el punto de interbloqueo.Recursos ReutilizablesSe pueden distinguir dos categorías generales de recursos: reutilizables y consumibles. Un recursoreutilizables es aquél que pude ser utilizado con seguridad por un proceso y que no se agota con el uso.Los procesos tienen unidades de recursos que liberan posteriormente para que otros procesos lasutilicen.Como ejemplos de recursos reutilizables se tiene los procesadores, canales de E/S, memoria principal ysecundaria, dispositivos y estructura de datos tales como archivos, bases de datos y semáforos.Como ejemplo de interbloqueo con recursos reutilizables, considérense dos procesos que compiten porel acceso exclusivo a un archivo D del disco y a una unidad de cinta T.Los programas están dedicados a las siguientes operaciones repetidas:P1 P2 repeat repeat... ...Solicitar (D); Solicitar (T); ... ... Solicitar (T); Solicitar (D); ... ... Liberar (T); Liberar (D); ... ... liberar (D); liberar (T);... ...forever forever Universidad Autónoma de Nayarit 10
  11. 11. Sistemas Operativos Unidad 2El interbloqueo se produce si cada proceso retiene un recurso y solicita el otro. Puede parecer que es unerror de programación en lugar de un error del diseño del sistema operativo. Sin embargo, se ha vistoque el diseño de un programa concurrente entraña gran dificultad. Se producen interbloqueos como éstey la causa está frecuentemente en la compleja lógica del programa, lo que hace más difícil su detección.Una posible estrategia para resolver estos interbloqueos es imponer restricciones en el diseño delsistema sobre el orden en el que se solicitan los recursos.Otro ejemplo de interbloqueo con un recurso reutilizable tiene que ver con las peticiones a memoriaprincipal. Supóngase que el espacio disponible es de 200KB y se origina la siguiente secuencia depeticiones:P1 P2... ...Solicitar 80K bytes; Solicitar 70K bytes;... ...Solicitar 60K bytes; Solicitar 80K bytes;Se produce un interbloqueo si ambos procesos avanzan hasta su segunda petición. Si la cantidad dememoria que van a solicitar no se conoce con antelación, resulta difícil enfrentarse a este tipo deinterbloqueo por medio de restricciones en el diseño del sistema. La mejor forma de resolver esteproblema en particular es, de hecho, eliminar la posibilidad, por medio de la memoria virtual.Recursos ConsumiblesUn recurso consumible es aquél que puede ser creado (producido) y destruido (consumido).Normalmente, no hay límite en el número de recursos consumibles de un tipo en particular. Un procesoproductor que no está bloqueado puede liberar cualquier número de recursos consumibles. Cuando unproceso adquiere un recurso, éste deja de existir. Como ejemplos de recursos consumibles están lasinterrupciones, señales, mensajes, e información en buffers de E/S.Como ejemplo de interbloqueo con recursos consumibles, considérese el siguiente par de procesos:P1 P2... ...Recibir (P2, M); Recibir (P1, Q);... ...Enviar (P2,N); Enviar (P1, R);El interbloqueo se produce si el receptor se bloquea. De nuevo, la causa del interbloqueo es un error dediseño. Estos errores pueden ser bastante sutiles y difíciles de detectar. Es más, puede darse unacombinación de sucesos poco habitual que origine el interbloqueo; así pues, un programa puedefuncionar durante un periodo de tiempo considerable, incluso años, antes de que el problema semanifieste.No hay ninguna estrategia sencilla que puede solucionar todas las clases de interbloqueo. Acontinuación se resumen los elementos claves de los enfoques más importantes que se han tomado:detección, prevención y predicción. Universidad Autónoma de Nayarit 11
  12. 12. Sistemas Operativos Unidad 2 Universidad Autónoma de Nayarit 12
  13. 13. Sistemas Operativos Unidad 2Condiciones de InterbloqueoDeben darse tres condiciones para que pueda producirse un interbloqueo:1. Exclusión mutua: Sólo un proceso puede usar un recurso simultáneamente.2. Retención y espera: Un proceso puede retener los recursos asignados mientras espera que se leasignen otros.3. No apropiación: Ningún proceso puede ser forzado a abandonar un recurso que retenga.En la mayoría de los casos, estas condiciones son bastante necesarias. Por ejemplo, la exclusión mutuahace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De formasimilar, la expulsión o apropiación no se puede aplicar arbitrariamente y, cuando se encuentraninvolucrados recursos de datos especialmente, debe estar acompañada de un mecanismo derecuperación y reanudación, que devuelva a un proceso y a sus recursos a un estado previo adecuado,desde el que el proceso pueda finalmente repetir sus acciones.Puede existir interbloqueo con estas tres condiciones, pero puede no existir con sólo estas trescondiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:4. Círculo vicioso de espera: Existe una cadena cerrada de procesos, cada uno de los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la cadena.Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. Lacuarta condición es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que seproducen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en uncírculo vicioso de espera irresoluble. Un círculo de espera irresoluble es, de hecho, la definición deinterbloqueo. El círculo de espera de la condición 4 es irresoluble porque se mantienen las tres primerascondiciones. Es decir, las cuatro condiciones en conjunto constituyen una condición necesaria ysuficiente para el interbloqueo. Universidad Autónoma de Nayarit 13
  14. 14. Sistemas Operativos Unidad 22.8.2 PREVENCIÓN DEL INTERBLOQUEO La estrategia de prevención del interbloqueo consiste, a grandes rasgos, en diseñar un sistema demanera que esté excluida, a priori, la posibilidad de interbloqueo. Los métodos para prevenir elinterbloqueo son de dos tipos. Los métodos indirectos consisten en impedir la aparición de alguna delas tres condiciones necesarias, antes mencionadas (condiciones 1 a 3). Los métodos directos consistenen evitar la aparición del círculo vicioso de espera (condición 4). Se examinarán a continuación lastécnicas relacionadas con cada una de las cuatro condiciones.Negación de la condición de Exclusión Mutua En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un recursonecesita exclusión mutua, el sistema operativo debe soportar la exclusión mutua. Algunos recursos,como los archivos, pueden permitir varios accesos para lectura, pero sólo accesos exclusivos paraescritura. Incluso en este caso, se puede producir interbloqueo si más de un proceso necesita permiso deescritura.Negación de la condición de Retención y Espera La condición de retención y espera puede prevenirse exigiendo que todos los procesos solicitentodos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos losrecursos puedan concederse simultáneamente. Esta solución resulta ineficiente por dos factores. Enprimer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que se concedantodas sus solicitudes de recursos, cuando de hecho podría haber ava nzado con sólo algunos de losrecursos.Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse duranteperiodos considerables, tiempo durante el cual se priva del acceso a otros procesos.Negación de la condición de No apropiación La condición de no apropiación puede prevenirse de varias formas. Primero, si a un proceso queretiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursosanteriores y solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional. Por otra parte,si un proceso solicita un recurso que actualmente está retenido por otro proceso, el sistema operativopuede expulsar al segundo proceso y exigirle que libere sus recursos. Este último esquema evitará elinterbloqueo sólo si no hay dos procesos que posean la misma prioridad.Esta técnica es práctica sólo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse mástarde de una forma fácil, como es el caso de un procesador.Negación de la condición Círculo Vicioso de Espera La condición del círculo vicioso de espera puede prevenirse definiendo una ordenación lineal delos tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizarpeticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación. Para comprobar el funcionamiento de esta estrategia, se asocia un índice a cada tipo de recurso.En tal caso, el recurso Ri antecede a Rj en la ordenación si i < j. Entonces, supóngase que dos procesosA y B se interbloquean, porque A ha adquirido R y solicitado Rj, mientras que B ha adquirido Rj y isolicitado Ri. Esta situación es imposible porque implica que i <j y j < i. Como en la retención y espera, la prevención del círculo vicioso de espera puede ser ineficiente,retardando procesos y denegando accesos a recursos innecesariamente. Universidad Autónoma de Nayarit 14
  15. 15. Sistemas Operativos Unidad 22.8.3 DETECCIÓN DEL INTERBLOQUEO Las estrategias de prevención del interbloqueo son muy conservadoras; solucionan el problemadel interbloqueo limitando el acceso a los recursos e imponiendo restricciones a los procesos. En ellado opuesto, las estrategias de detección del interbloqueo no limitan el acceso a los recursos nirestringen las acciones de los procesos. Con detección del interbloqueo, se consideran los recursos quelos procesos necesiten siempre que sea posible. Periódicamente, el sistema operativo ejecuta unalgoritmo que permite detectar la condición de círculo vicioso de espera descrita en el punto 4 anteriore ilustrada en el Resumen de los enfoques de detección, prevención y predicción del interbloqueoen los sistemas operativos mencionados anteriormente. Puede emplearse cualquier algoritmo dedetección de ciclos en grafos dirigidos. El control del interbloqueo puede llevarse a cabo tan frecuentemente como las solicitudes derecursos o con una frecuencia menor, dependiendo de la probabilidad de que se produzca elinterbloqueo. La comprobación en cada solicitud de recurso tiene dos ventajas: Conduce a una prontadetección y el algoritmo es relativamente simple, puesto que está basado en cambios increméntales delestado del sistema. Por otro lado, tal frecuencia de comprobaciones consume un tiempo de procesadorconsiderable. Una vez detectado el interbloqueo, hace falta alguna estrategia de recuperación. Las técnicassiguientes son posibles enfoques, enumeradas en orden creciente de sofisticación:1. 1. Abandonar todos los procesos bloqueados. Esta es, se crea o no, una de las soluciones máscomunes, si no la más común, de las adoptadas en un sistema operativo.2. 2. Retroceder cada proceso interbloqueado hasta algún punto de control definidopreviamente yvolver a ejecutar todos los procesos. Es necesario que haya disponibles unos mecanismos de retrocesoy reinicio en el sistema. El riesgo de esta solución radica en que puede repetirse el interbloqueooriginal. Sin embargo, el no determinismo del procesamiento concurrente asegura, en general, que estono va a pasar.3. 3. Abandonar sucesivamente los procesos bloqueados hasta que deje de haber interbloqueo. Elorden en el que se seleccionan los procesos a abandonar seguirá un criterio de mínimo coste. Despuésde abandonar cada proceso, se debe ejecutar de nuevo el algoritmo de detección para ver si todavíaexiste interbloqueo.4. 4. Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo. Como en elpunto 3, se debe emplear una selección basada en coste y hay que ejecutar de nuevo el algoritmo dedetección después de cada apropiación. Un proceso que pierde un recurso por apropiación deberetroceder hasta un momento anterior a la adquisición de ese recurso.Para los puntos 3 y 4, el criterio de selección podría ser uno de los siguientes, consistentes en escoger elproceso con: ü La menor cantidad de tiempo de procesador consumido hasta ahora ü El menor número de líneas de salida producidas hasta ahora ü El mayor tiempo restante estimado ü El menor número total de recursos asignados hasta ahora ü La prioridad más baja Algunas de estas cantidades son más fáciles de medir que otras. El tiempo restante estimado dejalugar a dudas, especialmente. Además, aparte de las medidas de prioridad, no existe otra indicación del"coste" para el usuario frente al coste para el sistema en conjunto. Universidad Autónoma de Nayarit 15
  16. 16. Sistemas Operativos Unidad 22.8.4 PREDICCIÓN DEL INTERBLOQUEOOtra forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, esla predicción de interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes derecursos a impedir que sucediera, por lo menos, alguna de las cuatro condiciones de interbloqueo.Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias(exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de uncírculo vicioso de espera.Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Conpredicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero serealizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción,por tanto, permite más concurrencia que la prevención. Con predicción del interbloqueo, se decidedinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevarpotencialmente a un interbloqueo.La predicción del interbloqueo necesita, por tanto, conocer las peticiones futuras de recursos.Dos enfoques para la predicción del interbloqueo: ü No iniciar un proceso si sus demandas pueden llevar a interbloqueo. ü No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.Una Estrategia Integrada de InterbloqueoComo se propone en el Resumen de los enfoques de detección, prevención y predicción delinterbloqueo en algunos sistemas operativos, hay puntos fuertes y debilidades en todas las estrategiasde solución del interbloqueo.En lugar de intentar diseñar un servicio del sistema operativo que emplee sólo una de las estrategias,puede ser más eficiente usar diferentes estrategias en diferentes situaciones. Silberschatz y Galvinsugieren este enfoque:Agrupar los recursos en un número de clases diferentes.Usar la estrategia de ordenación lineal definida anteriormente para la prevención de círculos viciosos de espera e impedir el interbloqueo entre clases de recursos.Dentro de cada clase de recursos, emplear el algoritmo más apropiado para dicha clase. Como ejemplo de esta técnica, considérense las siguientes clases de recursos: ü Espacio intercambiable: Bloques de memoria en almacenamiento secundario para el uso en el intercambio de procesos. ü Recursos de procesos: Dispositivos asignables, como unidades de cinta y archivos. ü Memoria principal: Asignable a los procesos en páginas o segmentos ü Recursos internos: Como canales de E/S. Universidad Autónoma de Nayarit 16
  17. 17. Sistemas Operativos Unidad 2El orden en que se enumeran estas clases de recursos es el orden en el que se asignan. El orden esrazonable, teniendo en cuenta la secuencia de pasos que un proceso debe seguir durante su vida. Encada clase, se pueden usar las siguientes estrategias: ü Espacio intercambiable: puede aplicarse prevención de interbloqueo, pidiendo que todos los recursos sean asignados de una vez, como en la estrategia de prevención de retención y espera. Esta estrategia es razonable si se conocen los requisitos máximos de almacenamiento, lo que suele ser habitual. Otra posibilidad es la predicción de Interbloqueos. ü Recursos de procesos: La predicción es a menudo efectiva en esta categoría, puesto que es razonable esperar que los procesos declaren por anticipado los recursos de esta clase que necesitarán. También es posible en esta clase la prevención media nte la ordenación de recursos. ü Memoria principal: la prevención con apropiación aparece por la estrategia más adecuada para la memoria principal. Cuando se expulsa a un proceso, simplemente es trasladado a la memoria secundaria, liberando espacio para resolver el Interbloqueo. ü Recursos internos: puede usarse la prevención por orden de recursos. Universidad Autónoma de Nayarit 17

×