comunicacion y sincronizaciocomunicación y sincronización entre procesos

22
Comunicación y sincronización entre procesos Interbloqueos: Comunicación entre Procesos: La comunicación entre procesos: necesaria si se desea que varios procesos puedan colaborar para realizar una misma tarea. Sincronización: funcionamiento coordinado en la resolución de una tarea encomendada. El SO ofrece mecanismos básicos de comunicación, que permiten transferir cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten el significado de las cadenas transferidas para su labor coordinada. Los mecanismos de comunicación y sincronización son dinámicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningún mecanismo de comunicación, ya que ellos podrían producir efectos indeseados. Es decir, la comunicación es algo puntual. Los servicios básicos de comunicación son: a. crear: el proceso solicita la creación del mecanismo b. enviar o escribir: el proceso emisor envía información al proceso receptor c. recibir o leer: el proceso receptor recibe información d. destruir: el proceso solicita la destrucción del mecanismo de comunicación La comunicación puede ser sincrona y asíncrona: a. síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir. b. asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un almacenamiento intermedio para guardar la información enviada, hasta que el receptor la solicite. Condiciones de Competencia Es una situación en la que dos o más procesos intentan realizar alguna operación (Lectura-Escritura) en ciertos datos compartidos (In, Out) y el resultado final depende de quién ejecuta qué y en qué momento.

Upload: augusto-jara

Post on 10-Nov-2015

21 views

Category:

Documents


0 download

DESCRIPTION

Programacion multihilos, sistemas operativos.Comunicacion entre procesos

TRANSCRIPT

  • Comunicacin y sincronizacin entre procesos Interbloqueos:

    Comunicacin entre Procesos:

    La comunicacin entre procesos: necesaria si se desea que varios procesos

    puedan colaborar para realizar una misma tarea.

    Sincronizacin: funcionamiento coordinado en la resolucin de una tarea

    encomendada.

    El SO ofrece mecanismos bsicos de comunicacin, que permiten transferir

    cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten

    el significado de las cadenas transferidas para su labor coordinada.

    Los mecanismos de comunicacin y sincronizacin son dinmicos. Es decir,

    cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de

    forma que no se establezca de forma definitiva ningn mecanismo de

    comunicacin, ya que ellos podran producir efectos indeseados. Es decir, la

    comunicacin es algo puntual.

    Los servicios bsicos de comunicacin son:

    a. crear: el proceso solicita la creacin del mecanismo

    b. enviar o escribir: el proceso emisor enva informacin al proceso receptor

    c. recibir o leer: el proceso receptor recibe informacin

    d. destruir: el proceso solicita la destruccin del mecanismo de comunicacin

    La comunicacin puede ser sincrona y asncrona:

    a. sncrona: los dos procesos han de ejecutar servicios de forma simultnea.

    El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.

    b. asncrona: el emisor hace el envo y prosigue su ejecucin. El SO ofrece

    un almacenamiento intermedio para guardar la informacin enviada, hasta

    que el receptor la solicite.

    Condiciones de Competencia

    Es una situacin en la que dos o ms procesos intentan realizar alguna operacin

    (Lectura-Escritura) en ciertos datos compartidos (In, Out) y el resultado final

    depende de quin ejecuta qu y en qu momento.

  • En algunos SO los procesos que trabajan juntos comparten con frecuencia un

    espacio comn para almacenamiento (MP, archivo, etc), en el que cada uno

    puede leer o escribir.

    La actualizacin sin restricciones de variables compartidas puede conducir a

    inconsistencias. Tales errores suelen ser dependiente de la temporizacin

    especfica y del modo de entrelazarse las acciones de los procesos.

    Las situaciones como sta en que dos o ms procesos utilizan recursos

    compartidos y el resultado final depende de quin ejecuta qu y en qu momento,

    recibe el nombre de condicin de competencia.

    Los errores introducidos por la concurrencia pueden ser extremadamente difciles

    de detectar, reproducir y depurar.

    Secciones y Recursos Crticos

    ste es uno de los problemas que con mayor frecuencia aparece cuando se

    ejecutan procesos concurrentes tanto si son cooperantes como independientes.

    Considrese un sistema compuesto por n procesos {P1, P2, ..., PN} en el que

    cada uno tiene un fragmento de cdigo, que se denomina seccin crtica. Dentro

    de la seccin crtica, los procesos pueden estar accediendo y modificando

    variables comunes, registros de una base de datos, un archivo, en general

    cualquier recurso compartido.

    La caracterstica ms importante de este sistema es que cuando un proceso se

    encuentra ejecutando cdigo de la seccin crtica, ningn otro proceso puede

    ejecutar en su seccin.

    Para resolver el problema de la seccin crtica es necesario utilizar algn

    mecanismo de sincronizacin que permita a los procesos cooperar entre ellos sin

    problemas. Este mecanismo debe proteger el cdigo de la seccin crtica y su

    funcionamiento bsico es el siguiente:

    Cada proceso debe solicitar permiso para entrar en la seccin crtica

    mediante algn fragmento de cdigo, que se denomina de forma genrica

    entrada en la seccin crtica.

  • Cuando un proceso sale de la seccin crtica debe indicarlo mediante otro

    fragmento de cdigo, que se denomina salida de la seccin crtica. Este

    fragmento permitir que otros procesos entren a ejecutar el cdigo de la

    seccin crtica.

    La estructura general, por tanto, de cualquier mecanismo que pretenda resolver el

    problema de la seccin crtica es la siguiente:

    Entrada en la seccin crtica

    Cdigo de la seccin crtica

    Salida de la seccin crtica

    Cualquier solucin que se utilice para resolver este problema debe cumplir los tres

    requisitos siguientes:

    Exclusin mutua: si un proceso est ejecutando cdigo de la seccin

    crtica, ningn otro proceso lo podr hacer.

    Progreso: si ningn proceso est ejecutando dentro de la seccin crtica, la

    decisin de qu proceso entra en la seccin se har sobre los procesos que

    desean entrar. Los procesos que no quieren entrar no pueden formar parte

    de esta decisin. Adems, esta decisin debe realizarse en tiempo finito.

    Espera acotada: debe haber un lmite en el nmero de veces que se

    permite que los dems procesos entren a ejecutar cdigo de la seccin

    crtica despus de que un proceso haya efectuado una solicitud de entrada

    y antes de que se conceda la suya.

    Principios de Concurrencia

    En un sistema multiprogramado con un nico procesador, los procesos se

    intercalan en el tiempo aparentando una ejecucin simultnea. Aunque no se logra

    un procesamiento paralelo y produce una sobrecarga en los intercambios de

  • procesos, la ejecucin intercalada produce beneficios en la eficiencia del

    procesamiento y en la estructuracin de los programas.

    La intercalacin y la superposicin pueden contemplarse como ejemplos de

    procesamiento concurrente en un sistema monoprocesador, los problemas son

    consecuencia de la velocidad de ejecucin de los procesos que no pueden

    predecirse y depende de las actividades de otros procesos, de la forma en que el

    sistema operativo trata las interrupciones surgen las siguientes dificultades:

    1. Compartir recursos globales es riesgoso

    2. Para el sistema operativo es difcil gestionar la asignacin ptima de

    recursos.

    Las dificultades anteriores tambin se presentan en los sistemas multiprocesador.

    El hecho de compartir recursos ocasiona problemas, por esto es necesario

    proteger a dichos recursos.

    Los problemas de concurrencia se producen incluso cuando hay un nico

    procesado

    Exclusin Mutua (mutual exclusin MUTEX).

    Las soluciones con espera ocupada funcionan de la siguiente manera, cuando un

    proceso intenta ingresar a su regin crtica, verifica si esta permitida la entrada. Si

    no, el proceso se queda esperando hasta obtener el permiso.

    Sincronizacin:

    Es un conjunto de protocolos y mecanismos utilizados para preservar la integridad

    y consistencia del sistema, cuando varios procesos concurrentes comparten

    recursos que son reutilizables en serie (slo pueden ser utilizados por un proceso

    a la vez). Su estado y operacin pueden resultar corruptos si son manipulados

    concurrentemente y sin sincronizacin por ms de un proceso.

    Algoritmo de Dekker (exclusin mutua solucin por software).

  • El algoritmo de Dekker es un algoritmo de programacin concurrente para

    exclusin mutua (mutex), que permite a dos procesos o hilos de ejecucin

    compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de

    exclusin mutua inventados, implementado por Edsger Dijkstra.

    Si ambos procesos intentan acceder a la seccin crtica simultneamente, el

    algoritmo elige un proceso segn una variable turno. Si el otro proceso est

    ejecutando en su seccin crtica, deber esperar su finalizacin.

    Versin 1965:

    Para 2 procesos {Pi, Pj}.

    int pet[2]; /* inicialmente pet[i]=0 para todo i */

    int turno;

    Entrar_SC (para un proceso Pi):

    pet[i]= 1;

    while (pet[j])

    if (turno==j) {

    pet[i]= 0;

    while (turno==j) NOP; /* espera activa */

    pet[i]= 1;

    }

    Dejar_SC (para un proceso Pi):

    turno= j;

    pet[i]= 0;

    a. Proporciona exclusin mutua: Pi slo entra si pet[i]. Si tambin pet[j],

    entonces uno de los dos procesos espera por turno.

    b. No interbloqueo y no inanicin: Slo un proceso quedar esperando

    por turno, y en este caso el otro estar en la SC, por lo que el primero

    entrar cuando el segundo cambie el turno al salir.

    c. No garantiza un orden FIFO (First in, first out).

    Ultima Version:

  • Shared int cierto=1;

    /* Definicin de variables compartidas */

    Shared int bandera[2]={0,0};

    Shared int turno=0;

    while(cierto)

    {

    bandera[proc_id]= cierto;

    while (bandera[1-proc_id] == cierto)

    {

    if(turno == 1-proc_id)

    {

    bandera[proc_id] = 0;

    while(turno==(1-proc_id)) /*espera a que sea su turno de intentar*/

    bandera[proc_id]=1;

    }

    }

    /*Seccin crtica*/

    turno=1-proc_id; /*es el turno de otro proceso*/

    bandera[proc_id]=0;

    /*Seccin no crtica */

    Test and Set o Comparar y Fijar (tambin conocido como instruccin

    TSL)

    Es una instruccin especial de maquina a nivel de hardware, la instruccin se

    ejecuta atmicamente en su totalidad, es decir, no esta sujeta a interrupciones.

    booleano TS(int i)

    {

    if (I==0)

    {

    I=1;

  • return cierto;

    }

    else

    {

    return falso;

    }

    }

    Esta solucin requiere ayuda del hardware y es debido a que en general

    las computadoras diseadas para tener ms de un procesador tienen una

    instruccin TEST AND SET LOCK.

    Semforos

    Para solucionar problemas de procesos concurentes, se diseo un S.O. como un

    conjunto de procesos secuenciales, eficiente y fiables para dar soporte a la

    cooperacin. Los procesos de usuario podran utilizar estos mecanismos si el

    procesador y el S.O. los hacan disponible.

    El principio fundamental es el siguiente, 20+ procesos pueden cooperar por medio

    de simples seales, de manera que se pueda obligar a un proceso a detener en

    una posicin determinada hasta que reciba una seal especfica. Para la

    sealizacin se usan variables especiales llamadas semforos "S", los procesos

    ejecutan las primitivas wait(s) si la seal aun no se transmiti, el proceso se

    suspende hasta que tiene lugar la transmisin.

    A los semforos se los contemplan como variables que tienen un N entero sobre

    el que se definen las siguientes operaciones:

    a. un semforo puede iniciarse con un valor negativo

    b. la operacin wait disminuye el valor del semforo. Si el valor no es positivo

    el proceso que ejecuta wait se bloquea.

    c. las operaciones signal incrementa el N del semforo. Si el valor es positivo

    se desbloquea el proceso bloqueado por una operacin wait.

  • No hay forma de examinar o manipular los semforos aparte de estas tres

    operaciones.

    Las primitivas wait y signal se suponen atmicas, es decir no pueden ser

    interrumpidas y cada rutina puede considerarse como un peso indivisible.

    Un semforo solo puede tomar los valores 0 y 1. Son ms sencillos de implantar y

    pueden demostrarse que tienen la misma potencia de expresin que los

    semforos generales.

    En ambos semforos se emplean una cola para mantener los procesos en espera,

    la cuestin reside en el orden en que se retiran los procesos de la cola. La poltica

    utilizada el la de FIFO; el proceso que estuvo bloqueado durante mas tiempo se

    libera de la cola, se denomina semforo robusto (incluye esta estrategia). Un

    semforo dbil no especifica el orden en que se retiran los procesos de la cola.

    Los semforos robustos garantizan la inexistencia de inanicin en el algoritmo de

    exclusin mutua, pero no as en los semforos dbiles, se supone que los

    semforos son siempre robustos ya que son los ms adecuados y porque son los

    tipos de semforos que ms incluyen los S.O.

    Implementacin de los semforos. Como se menciono anteriormente es

    impredecible que las operaciones wait y signal sean implementadas como

    primitivas atmicas.

    La esencia del problema del productor/consumidor, es la exclusion mutua: solo 1

    proceso puede manipular un semforo a la vez, en una operacin wait o signal. Se

    pueden utilizar cualquier esquema de software con los algoritmos de Dekker o

    Peterson los que suponen una sobrecarga de procesos sustancial. Otra alternativa

    es usar uno de los esquemas de soporte del hardware p/la exclusion mutua..

    En sistemas monoprocesador procesador, se pueden inhibir las interrupciones

    durante una operacin wait o signal.

    Contadores de EventosSe puede sincronizar varios procesos sin

    forzar la exclusin mutua, ya sea porque no deseamos limitar la

    concurrencia de los procesos, o simplemente porque no lo necesitemos.

    Esto lo podemos conseguir con los contadores de eventos.

  • Estos mecanismo pueden ser utilizados para disear semforos en el caso de que

    el sistema no proporcione este tipo de mecanismos.

    Un contador de eventos se representa como una variable entera E cuyo valor

    inicial ser 0, y sobre la que slo se podrn realizar las siguientes operaciones:

    advance(E): se utiliza para indicar la aparicin de sucesos que

    el diseador haya asociado al contador E. Cada vez que se

    ejecuta esta funcin, E se incrementar.

    Read(E): lee el valor del contador de eventos E. Si el nmero

    ledo es positivo, indicar el nmero de sucesos que se han

    producido en el sistema.

    Await(E, v): espera a que el contador de eventos E haya

    alcanzado el valor v. El proceso que llama a la funcin

    permanecer bloqueado hasta que se hayan producido v

    ms sucesos del tipo asociado al contador.

    Cabe destacar que tanto await como read son concurrentes con advance, ya que

    la operacin de esta ltima influye en el comportamiento de las otras dos.

    Monitores

    Es un tipo de procedimientos, variables y estructuras de datos que se agrupan en

    un tipo de modulo especial. Tienen una propiedad importante: solo un proceso

    puede estar activo en un monitor en un instante de tiempo.

    Los monitores proveen un nuevo tipo de variables de condicin con dos

    operaciones que operan sobre el (solo se usan dentro del procedimiento de el

    monitor).

    Wait -> wait(a) : produce que el proceso que ejecuta la instruccin sea

    interrumpido y removido de la cola de ready hasta que otro proceso lo habilite

    ejecutando la instruccin signal( )con la misma variable de condicin.

    Signal -> signal(a) : Habilita la ejecucin de algn proceso en espera por la

    ejecucin de la instruccin wait con la misma variable de condicin.

  • Paso de Mensajes

    Son una solucin del sistema operativo que nos permitirn la sincronizacin de

    procesos y la comunicacin entre ambos.

    Es una cadena de texto transmitida de un proceso que enva el mensaje a un

    receptor (proceso receptor). Un mensaje puede tener cdigo, texto, datos,

    Suelen tener dos partes:

    - Cabecera (obligatoria): IdProcesoEmisor, IdProcesoReceptor, Tipo, Longitud

    - Cuerpo (optativo): Informacin adicional

    Tenemos dos tipos de rdenes para gestionar mensajes (para enviar y recibir):

    - Enviar: send (destino, mensaje)

    - Recibir: receive (origen, mensaje)

    *Direccionamiento.

    a) Directo. Se especifican emisor y receptor de forma explcita.

    P enva a Q:

    - P: send (Q, mensaje)

    - Q: receive (Q, mensaje)

    b) Implcito: El emisor especifica quien es el receptor, pero el receptor no

    especifica quin es el emisor.

    c) Indirecto. En este direccionamiento los mensajes no se envan directamente al

    receptor, sino que se envan a una estructura de datos denominada buzn o

    mailbox. Una gran ventaja de esto es que podemos enviar a cualquier buzn

    cualquier mensaje. Los mensajes no tienen que ir dirigidos especficamente a un

    proceso.

    En este tercer caso la relacin puede ser (1-1) (un proceso enva a un solo buzn).

    Tambin puede haber (n-1) donde varios procesos envan mensajes a un solo

    buzn o (1-n) donde un proceso enva mensajes a muchos buzones. Este ltimo

    caso vale para cuando quiero comunicar una informacin a muchos procesos.

    * Propiedad de los buzones.

    Tenemos dos casos:

    - El proceso es el propietario. El buzn existe mientras existe el proceso y slo

    el propietario puede leer datos del buzn

  • - El propietario del buzn es el SO. La propiedad del buzn puede transmitirse

    entre procesos, lo que permite que varios procesos puedan leer.

    * Sincronizacin de los mensajes.

    a) Cuando enviamos:

    - El proceso se bloquea hasta que el receptor reciba el mensaje (envo

    bloqueante)

    - No se bloquea y continua haciendo operaciones (envo no bloqueante)

    b) Al recibir el mensaje:

    - Al mirar a ver si est el mensaje, si ya ha llegado, lo cojo y contino.

    - Cuando voy a buscar el mensaje, si no ha llegado todava:

    - Bloqueo el proceso, hasta que llegue el mensaje (recepcin bloqueante).

    - No se bloquea el proceso (recepcin no bloqueante).

    - El proceso se bloquea durante un intervalo de tiempo. Si transcurrido ese

    tiempo, el mensaje no ha llegado, el proceso contina sin el mensaje.

    *Casos habituales:

    - Envo bloqueante- Recepcin bloqueante.

    Se usa cuando la sincronizacin ha de ser muy estricta.

    - Envo no bloqueante - recepcin bloqueante.

    Se usa para cuando el proceso emisor no necesita que el receptor haya

    recibido el mensaje para continuar. Ej: Servidor de correo.

    - Envo no bloqueante - recepcin no bloqueante.

    Equivalencia entre Primitivas:

    Interbloqueos (tambin conocido como Deadlock):

    Definicin y Principios

    Un interbloqueo supone un bloqueo permanente de un conjunto de procesos que

    compiten por recursos o bien se comunican o sincronizan entre s. Los

  • interbloqueos que aparecen cuando se utilizan mecanismos de comunicacin y

    sincronizacin se deben a un mal uso de los mismos.

    A continuacin se van a presentar ejemplos de mala utilizacin de mecanismos de

    comunicacin y sincronizacin que llevan a los procesos a un estado de

    interbloqueo. Considrese en primer lugar una situacin en la que se utilizan dos

    semforos P y Q, ambos con un valor inicial 1. Si dos procesos utilizan estos dos

    semforos de la siguiente manera se puede producir un interbloqueo.

    Proceso A Proceso B

    wait(P); wait(Q);

    wait(Q); wait(P);

    .... ....

    signal(P); signal(Q);

    signal(Q); signal(P);

    Para modelizar los interbloqueos se suele recurrir a la construccin de un grafo de

    asignacin de recursos. En este grafo existen dos tipo de nodos: lo procesos se

    representan mediante cuadrados y los recursos mediante crculos, cuando un

    proceso solicita un recurso, se dibuja en el grafo un arco dirigido que parte del

    proceso y que va hacia el recurso, y cuando se concede un recurso a un proceso,

    el arco anterior se cambia por otro que parte del recurso y que va hacia el

    proceso. El interbloqueo se detecta cuando aparece un ciclo en el grafo de

    asignacin de recursos.

    La Figura 4.8 presenta el interbloqueo que se produce en el ejemplo anterior

    cuando los procesos ejecutan las operaciones wait segn el siguiente orden:

    Proceso A Proceso B

    1 wait(P); 2 wait(Q);

    3 wait(Q); 4 wait(P);

  • Condiciones

    Si se presentan simultneamente las cuatro siguientes condiciones el sistema est

    en interbloqueo.

    1. EXCLUSION MUTUA: Por lo menos un proceso que tenga otorgado un

    recurso en forma exclusiva.

    2. USO Y ESPERA: Debe existir al menos un proceso que est haciendo

    uso de un recurso y que est esperando por otros recursos asignados a

    otros procesos.

    3. NO INTERRUPCION: Los recursos no pueden ser retirados al proceso.

    Si un proceso hace uso de un recurso no le podr ser retirado hasta que

    voluntariamente el proceso lo libere.

    4. ESPERA CIRCULAR: Debe existir un conjunto de procesos {P1.....Pn}

    tal que P1 espera por un recurso utilizado por P2,......,Pn espera por un

    recurso utilizado por P1.

    Deteccin

    Algoritmos de Deteccin de interbloqueo

    1. Cuando hay una nica ocurrencia de cada recurso. (variante del grafo de

    "wait for graph"). Consiste en reducir el grafo, retirando las aristas que van de

    recursos a procesos y de procesos a recursos, colocando nuevas aristas que

    reflejan la situacin de espera entre procesos. Si el grafo reducido tiene ciclos

    el sistema est en interbloqueo. Orden de operaciones = n^2 , n = cantidad

    de aristas.

    2. Cuando hay mltiples ocurrencias de cada recurso

  • Procedure detecta_deadlock

    var Disponible:array[1..n] of integer //# de recursos

    Usados:array[1..n] of integer

    Solicitados:array[1..n] of integer

    Finalizado:array[1..n] of boolean

    Begin

    Work:=Disponibles;

    For i:=1..n do if(usados[i]0) then finish[i]:=false

    Else finish[i]:=true;

    While(encontrar_indice_i = true) do

    {

    Work:=work + usados[i];

    Finish[i]:=true;

    }

    If ((finish[i] = false) para algun i), 1in then El sistema esta en

    interbloqueo.

    End

    Function encontrar_indice_i : Boolean

    Begin

    If (existe i tal que (Finish[i]=false && solicitados[i] work)

    Then -> true

    Else -> false

    End

    Prevencin

    La estrategia consiste en anular alguna de las cuatro condiciones necesarias para

    que se produzca un interbloqueo.

    1. No puede ser anulada porque existen recursos que deben ser usados en

    modalidad exclusiva.

  • 2. La alternativa sera hacer que todos los procesos solicitaran todos los

    recursos que habrn de utilizar antes de utilizarlos al momento de su

    ejecucin lo cual sera muy ineficiente.

    3. Para anular esta condicin cuando un proceso solicita un recurso y este es

    negado el proceso deber liberar sus recursos y solicitarlos nuevamente con

    los recursos adicionales. El problema es que hay recursos que no pueden ser

    interrumpidos.

    4. Espera Circular: esta estrategia consiste en que el sistema operativo

    numere en forma exclusiva los recursos y obligue a los procesos a solicitar

    recursos en forma ascendente. El problema de esto es que quita

    posibilidades a la aplicacin.

    Recuperacin

    a. Cancelacin de todos los procesos involucrados. Esto resuelve la situacin

    de Deadlock pero tiene un costo muy alto de reprocesamiento.

    b. Cancelacion de un proceso por vez hasta resolver la situacin de Deadlock.

    La ventaja de esto es que el costo de reprosesamiento de la informacin es

    menor pero cada vez que se cancela un proceso debe ejecutarse el

    algoritmo de deteccin de deadlock. Los criterios para elegir el candidato a

    ser cancelado son: por prioridad, por tiempo de uso de CPU, por cantidad

    de recursos utilizados y por cuantos recursos adicionales habr de utilizar.

    c. Obtencin de recursos (resourse Preemption). El sistema operativo

    selecciona un proceso y le quita los recursos otorgados. Los criterios para

    seleccionar el candidato son los mismos que para la cancelacin. El

    proceso seleccionado se le quitan los recursos y se le lleva a un estado

    consistente (Rollback).

    Inanicin

  • Se da cuando un proceso espera por un evento que no se sabe cuando puede

    ocurrir, es decir, ocurre una Espera Infinita.

    Planificacin

    La planificacin es el proceso por el cual el sistema operativo selecciona que

    proceso ejecutar. La seleccin del proceso se basa en alguno de los algoritmos de

    planificacin que se describen ms abajo.

    Objetivos de la planificacin

    Los objetivos de la planificacin de proceso son:

    Equidad, todos los procesos deben poder ejecutarse

    Eficacia, mantener ocupada la CPU un 100% del tiempo

    Tiempo de respuesta, minimizar el tiempo de respuesta al usuario

    Tiempo de regreso, minimizar el tiempo que deben esperar los usuarios por

    lotes para obtener sus resultados

    Rendimiento, maximizar el nmero de tareas procesadas por hora.

    Concurrencia

    La concurrencia comprende un gran nmero de cuestiones de diseo, incluida

    la comunicacin entre procesos, comparticin y competencia por los recursos,

    sincronizacin de la ejecucin de varios procesos y asignacin del tiempo de

    procesador a los procesos. Se ver que estas cuestiones no solo surgen en

    entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas

    multiprogramados con un solo procesador.

    La concurrencia puede presentarse en tres contextos diferentes:

    Mltiples aplicaciones: la multiprogramacin se cre para permitir que el

    tiempo de procesador de la mquina fuese compartido dinmicamente entre varias

    aplicaciones activas.

  • Aplicaciones estructuradas: como ampliacin de los principios del diseo

    modular y la programacin estructurada, algunas aplicaciones pueden

    implementarse eficazmente como un conjunto de procesos concurrentes.

    Estructura del sistema operativo: las mismas ventajas de estructuracin son

    aplicables a los programadores de sistemas y se ha comprobado que algunos

    sistemas operativos estn implementados como un conjunto de procesos o hilos.

    Sincronizacin y Exclusin Mutua en Sistemas Multiprocesadores:

    Consideraremos un multiprocesador como una mquina con un conjunto de

    procesadores que comparten un mismo espacio de direcciones de memoria fsica.

    Por esta razn, tambin se les llama multiprocesadores de memoria compartida

    fuertemente acoplados, a diferencia de los multicomputadores, donde los

    elementos de proceso no comparten memoria fsica, y que no vamos a tratar aqu.

    Sin embargo hay que recordar que en un multiprocesador moderno existen

    niveles de memoria cache (normalmente dos, interna y externa) privados para

    cada procesador, lo que, como veremos, tiene relevancia para la eleccin de una

    poltica de planificacin.

    Clasificacin

    Las cuatro categoras definidas por Flynn (1972) se basan en el nmero de

    instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura:

    - Una secuencia de instrucciones y una secuencia de datos (SISD: Single

    Instruction, Single Data): Un nico procesador interpreta una nica secuencia de

    instrucciones para procesar los datos almacenados en una nica memoria. No

    explota el paralelismo a nivel de instruccin. Mquinas monoprocesador.

    - Una secuencia de instrucciones y mltiples secuencias de datos (SIMD: Single

    Instruction, Multiple Data): Una nica instruccin controla de forma simultnea y

  • sincronizada un cierto nmero de elementos de proceso. Cada elemento tiene una

    memoria asociada, de forma que cada elemento ejecuta la misma instruccin con

    diferentes datos. Los procesadores vectoriales y matriciales pertenecen a esta

    categora.

    - Mltiples secuencias de instrucciones y una secuencia de datos (MISD: Multiple

    Instruction, Single Data): Se transmite una secuencia de datos a varios

    procesadores, cada uno de los cuales ejecuta una instruccin diferente sobre los

    mismos. Esta estructura nunca se ha implementado.

    - Multiples secuencias de instrucciones y mltiples secuencias de datos (MIMD:

    Multiple Instructions, Multiple data): Un conjunto de procesadores ejecuta

    simultneamente instrucciones diferentes sobre conjuntos de datos diferentes. Es

    el caso de los sistemas distribuidos, bien explotando un nico espacio compartido

    de memoria, o bien uno distribuido.

    De las cuatro categoras, las SISD y la MIMD dan lugar a implementaciones

    paralelas.

    Granularidad

    La granularidad se define como el nmero de elementos de proceso que

    componen un computador paralelo.

    Una granularidad fina consiste en el empleo de muchos elementos de proceso

    de poca potencia. En este caso, el grado de paralelismo es mximo. Los

    computadores de grano fino exigen tcnicas de programacin y algoritmos que

    potencien el paralelismo.

    Una mquina de grano grueso consta de pocos elementos procesadores, pero de

    alta potencia cada uno.

    planificacin de procesos

    La planificacin de procesos en un sistema multiprocesador presenta dos

  • componentes:

    Planificacin temporal, que define la poltica de planificacin en cada

    procesador individual, exactamente igual que si de un monoprocesador se

    tratase, salvo por el hecho de que en los multiprocesadores es menos

    relevante para el rendimiento la poltica que se elija, y tanto menos cuanto

    ms procesadores. En la planificacin temporal se decide qu procesos se

    ejecutan.

    Planificacin espacial, que define cmo se asignan los procesadores a los

    diferentes procesos. En la planificacin espacial se decide en qu

    procesadores se ejecutan los procesos.

    Criterios para la planificacin en multiprocesadores:

    En la planificacin espacial es necesario considerar dos hechos relevantes en la

    ejecucin de las aplicaciones multiprogramadas o multithread:

    1. A medida que proceso se ejecuta en un procesador determinado va

    dejando una huella (estado del proceso en la memoria cache del

    procesador donde se ejecuta), por lo que parece adecuado mantener a un

    proceso en el mismo procesador (criterio de afinidad al procesador). Sin

    embargo, las polticas que potencian la afinidad al procesador tienden a

    provocar un desequilibrio en la carga de los procesadores, que se traduce

    en una utilizacin menos eficiente de los recursos. El criterio opuesto

    (reparto de la carga), provoca sobrecargas en el bus de memoria al

    invalidar frecuentemente el contenido de las memorias cache.

    2. En las aplicaciones concurrentes de hoy en da, de tipo multithread, los

    threads habitualmente interaccionan de manera muy estrecha (utilizando

    memoria compartida como mecanismo de comunicacin), por lo que la

    carencia de recursos para planificar alguno de los threads puede provocar

    que otros threads de la aplicacin que s disponen de procesador no

    progresen y consuman ciclos de CPU esperando por condiciones que

  • deberan satisfacer los threads no planificados, lo que conduce a pobres

    resultados en cuanto a latencias y tiempos de finalizacin. Este hecho invita

    a implementar polticas de asignacin de procesadores que permitan a una

    aplicacin disponer de los recursos necesarios para que la ejecucin de la

    aplicacin progrese adecuadamente. El criterio de proporcionar recursos

    exclusivos para la aplicacin, en vez de compartidos, tiene como

    contrapartida la posibilidad de que gran parte de ellos queden ociosos o con

    un uso poco eficiente, debido a que el sistema operativo no conoce a priori

    el perfil de necesidades de la aplicacin.

    .

    Las polticas de planificacin en multiprocesadores atienden a combinaciones de

    estos criterios.

    planificacin de hilos.

    Un hilo de ejecucin o thread , en sistemas operativos, es una caracterstica que

    permite a una aplicacin realizar varias tareas concurrentemente. Los distintos

    hilos de ejecucin comparten una serie de recursos tales como el espacio

    de memoria, los archivos abiertos, situacin de autenticacin, etc.

    Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo

    distintas funciones simultneamente.

    Los hilos de ejecucin que comparten los mismos recursos, sumados a estos

    recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos

    de ejecucin de un mismo proceso compartan los recursos hace que cualquiera de

    estos hilos pueda modificar stos.

    Los sistemas operativos generalmente implementan hilos de dos maneras:

    Multihilo apropiativo: permite al sistema operativo determinar cundo debe

    haber un cambio de contexto. La desventaja de esto es que el sistema puede

    hacer un cambio de contexto en un momento inadecuado, causando un

    fenmeno conocido como inversin de prioridades y otros problemas.

  • Multihilo cooperativo: depende del mismo hilo abandonar el control cuando

    llega a un punto de detencin, lo cual puede traer problemas cuando el hilo

    espera la disponibilidad de un recurso.

    El soporte de hardware para multihilo desde hace poco se encuentra disponible.

    Esta caracterstica fue introducida por Intel en el Pentium 4, bajo el nombre de

    HyperThreading.

    Reparto de carga: los procesos no se asignan a un procesador en particular.

    Se mantiene una cola global de hilos listos y cada procesador,

    cuando est ocioso, selecciona un hilo de la cola

    Planificacin por grupos: Se panifica un conjunto de hilos afines para su ejecuci

    en un conjunto de procesadores al mismo tiempo, segn la relacin

    de uno a uno

    Asignacin dedicada de procesadores: Ofrece una planificacin implcita definida

    por la asignacin de hilos a los procesadores. Mientras un programa

    se ejecuta, se le asigna un nmero de procesadores igual al nmero

    de hilos que posea

    Planificacin dinmica: el nmero de hilos en un programa se puede cambiar en

    el curso de la ejecucin

  • UNIVERSIDAD DE CARABOBO

    FACULTAD DE CIENCIAS Y TECNOLOGIA

    DEPARTAMENTO DE COMPUTACION

    SISTEMAS OPERATIVOS

    COMUNICACIN Y SINCRONIZACION ENTRE PROCESOS

    INTEGRANTES:

    Gerardo Carrillo C.I: 16895077

    Iregui Hembert C.I: 21.151.213

    Palacios Luis C.I: 18.781.981

    Pinto Wilmer F C.I: 19.524.910

    Ramrez Jos C.I: 19.020.820

    SECCION: 01

    Brbula, 23 de NOVIEMBRE de 2011