Está en la página 1de 46

Republica Bolivariana de Venezuela Ministerio del Poder Popular para la Educacin Superior Instituto Universitario de Tecnologa Juan Pablo

Prez Alfonzo Iutepal Puerto cabello Edo. Carabobo

Profesora: Maricela,Manterrano

Bachilleres: Coello, Jhoan Lugo Yonaike Valero Elvis Prez Luis Enero 2011

Concurrencia
Dos o ms procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cuando son procesados al mismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro. La concurrencia comprende un gran nmero de cuestiones de diseo, incluyendo la comunicacin entre procesos, comparacin y competencia por los recursos, sincronizacin de la ejecucin de varios procesos y asignacin del tiempo de procesador a los procesos y es fundamental para que existan diseos como Multiprogramacin.

Procesos de Concurrentes.
En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo para dar la apariencia de ejecucin simultnea. Cuando dos o ms procesos se encuentran activos de forma simultnea (aunque esto no implica, que su ejecucin fsica sea simultnea), se dice que son Concurrentes. Esta situacin puede representarse como se observa en la siguiente grfica:

En la grfica anterior puede verse que los procesos P1 y P2 son concurrentes, mientras que P2 y P3 no lo son.

Siempre que exista multiprogramacin se presenta un alta probabilidad de concurrencia entre procesos. Ejemplos de procesos concurrentes pueden ser los relacionados con trabajos de distintos usuarios que corren simultneamente, o procesos del sistema operativo. En general la concurrencia ser aparente siempre que el nmeros de procesadores sea menor que el nmero de procesos. Los Beneficios de la concurrencia son: Facilita la programacin de aplicaciones permitiendo que se estructuren como un conjunto de procesos que cooperan entre s. Acelera los clculos, dividiendo una tarea en procesos que se ejecutan de

forma paralela.
Posibilita el uso interactivo a mltiples usuarios que trabajan de forma simultnea desde varios terminales. Permite un mejor aprovechamiento de los recursos, en especial del

procesador.

Tipos de Procesos Concurrentes


Independientes: Son aquellos procesos que se ejecutan sin la ayuda o cooperacin de otros procesos, estos no presentan problemas de coordinacin, pues por definicin no hay interaccin entre ellos. Un ejemplo de estos son los procesos asociados a con dos usuarios distintos en un sistema clsico de multiprogramacin.

Dependientes: Estos trabajan de forma conjunta en alguna actividad, por lo que deben ser capaces de comunicarse e interactuar entre ellos, para ello se crean se crean mecanismos de comunicacin y coordinacin entre ellos.

Procesos son cooperantes: Son aquellos que estn diseados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.

Multiproceso y Proceso distribuido


Los procesos son concurrentes si existen simultneamente. Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean concurrentes, es necesario que tengan alguna relacin entre ellos La concurrencia puede presentarse en tres contextos diferentes: Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de la mquina fuese compartido dinmicamente entre varios trabajos o 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. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrente:

Multiprogramacin: con un nico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucin de los mismos para dar as una apariencia de ejecucin simultnea.

Multiprocesador: Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no slo pueden intercalar su ejecucin sino tambin superponerla.

Multicomputadora: Es una maquina de memoria distribuida, que est formada por una serie de computadoras. En este tipo de arquitecturas tambin es posible la ejecucin simultnea de los procesos sobre los diferentes procesadores.

Algoritmo del Banquero


Llamado tambin negativa de asignacin de recursos, el algoritmo resuelve un problema planteado porEdsger Dijkstra. El algoritmo del banquero consiste en: Estudiar cada solicitud al ocurrir sta. Ver si su otorgamiento conduce a un estado seguro: En caso positivo, se otorga la solicitud. En caso negativo, se la pospone. Para ver si un estado es seguro: Verifica si tiene los recursos suficientes para satisfacer a otro cliente: En caso afirmativo, se supone que los prstamos se pagarn. Se verifica al siguiente cliente cercano al lmite y as sucesivamente. Si en cierto momento se vuelven a pagar todos los crditos, el estado es seguro y la solicitud original debe ser aprobada.

Existe un banco que tiene una reserva limitada de dinero a prestar y clientes con lnea de crdito. Un cliente pide dinero y no hay garanta de que haga reposiciones hasta que saque la cantidad mxima. El banco puede rechazar el prstamo si hay riesgo de que no tenga fondos para prestar a otros clientes. Vindolo como Sistema Operativo, los clientes seran los procesos, el dinero a prestar los recursos y el banquero el S.O.

Para este algoritmo es importante considerar los siguientes puntos: Estado: Es la asignacin actual de los recursos a los procesos. Matriz: demanda (o mximo necesario). Son las exigencias mximas de recursos para cada proceso. Matriz asignacin: Son las asignaciones actuales de recursos para cada proceso. Vector disponible: Cantidad total de recursos sin asignar a los procesos. Estado seguro: Es un estado en el que existe al menos un orden en el que todos los procesos pueden ejecutar hasta el final sin generar interbloqueo.

Asignacin de Recursos por el Algoritmo del Banquero.


Se permiten las condiciones de exclusin mutua, espera por y no apropiatividad . Los procesos reclaman uso exclusivo de los recursos que requieren. Los procesos mantienen los recursos mientras piden y esperan por otros recursos adicionales, pero no pueden apropiarse de un proceso que mantenga esos recursos. Las peticiones son de un recurso a la vez. El S. O. puede conceder o negar cada una de las peticiones; si se niega una peticin: El proceso retiene los recursos que ya tiene asignados. Espera un tiempo finito hasta que le sea atendida la peticin. El S. O. concede peticiones que den como resultado solo estados seguros. Dado que el sistema se mantiene siempre en estado seguro, todas las peticiones sern atendidas en un tiempo finito.

Debilidades del Algoritmo del Banquero


Requiere que exista un nmero fijo de recursos asignables, pero generalmente no se puede contar con que el nmero de recursos se mantenga siempre constante. Requiere que la poblacin de usuarios se mantenga constante, lo cual es irrazonable. Requiere que el S. O. garantice que todas las peticiones sern concedidas en un tiempo finito, pero en la realidad se requieren mayores garantas. Requiere que los procesos reintegren los recursos en un tiempo finito, pero en la realidad se requieren mayores garantas. Requiere que los procesos indiquen sus necesidades mximas de recursos por adelantado, lo cual generalmente no ocurre. Generalmente no es utilizado en S. O. reales.

Los mtodos para prevenir el bloqueo pueden resumirse segn se indica en la Tabla

Condicin
Exclusin mutua Detenerse y esperar No apropiacin Espera circular

Mtodo
Realizar un spooling general Solicitar todos los recursos al principio Retirar los recursos Ordenar los recursos en forma numrica

Resumen de los mtodos para prevenir el bloqueo.

Ventajas del algoritmo del banquero


No es necesario expulsar y hacer retroceder procesos como en la deteccin del interbloqueo.

Es menos restrictivo que la prevencin.

Desventajas
Se debe conocer la mxima demanda de recursos por anticipado. La ejecucin de los recursos no debe estar forzada por la sincronizacin. Se tiene un nmero fijo de procesos y recursos. Los procesos no finalizan mientras retengan recursos. Requiere que los procesos salden sus prstamos en un tiempo finito.

Ejemplo de Algoritmo del Banquero


Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el orden en que los procesos pasan a ser estados seguros evitando el problema del interbloqueo.

Lista de procesos: P1-P3-P4-P0 P2


A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C. En la primer columna de asignados est la cantidad de recursos que el proceso ha obtenido a lo largo de un tiempo; en la segunda columna de Mximo Necesario, estn los recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por ejemplo, el P0 no ha obtenido ningn recurso del tipo A, slo 1 del tipo B y ninguno del tipo C, y necesita para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.

En la ltima columna se tienen los recursos disponibles que da el sistema, los que se pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C. El algoritmo del banquero trata de asegurar qu proceso tiene un estado seguro es decir, se requiere alcanzar el mximo requerido entre los que estn en Asignados y los que se encuentren en Disponibles. Ejemplo: El proceso 0 no est en estado seguro. Si se suman Asignados + Disponibles para cada uno de los recursos A, B y C, realmente no se alcanzan los Mximos Requeridos. Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados + Disponibles. All s se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como se alcanza a llenar los Mximos, ese proceso se ejecuta. Una vez que el proceso se ejecut, entonces se procede a SUMAR los recursos asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo A, B y C a sumarse con los disponibles 3-3-2 y se tendrn nuevos DISPONIBLES que repartir, siendo ahora stos 5-3-2

Con estos se pasa al proceso P2 y as sucesivamente. Y el algoritmo es como sigue: (El algoritmo principal es el de asignacin de recursos)

Semforos
Es un algoritmo de control de procesos, Son una herramienta de sincronizacin. Es una variable protegida que solo puede ser modificada por la rutina de inicializacin y por otras dos operaciones atmicas: P( ) <- wait V( ) <- signal Las operaciones a las cuales se puede acceder son: Inicializacin: Crea un nuevo semforo asignndole un valor inicial P(s): while (s=0) do no_op ATMICA s:=s-1 V(s): s:=s+1 ATMICA. tiene solo dos operaciones bsicas, las cuales son: Wait.- Pregunta a los procesos si su contador es > = que cero, en caso de no ser as, los decrementa. El proceso que cambia en este caso a negativo (1) desde la cola de procesos Listos a ser ejecutados es el que automticamente toma el control del procesador. Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca a este proceso de su ejecucin y depende de su estado.

Tipos de Semforos
Semforos contadores: Toman valores positivos mayores o iguales a 0. Se utilizan para sincronizacin de procesos.

Semforos binarios: Toman los valores 0 1 y se utilizan para exclusin mutua.

Los semforos pueden ser usados para diferentes propsitos, entre ellos:

Implementar cierres de exclusin mutua o locks Barreras


Permitir a un mximo de N threads acceder a un recurso, inicializando el semforo en N Notificacin. Inicializando el semforo en 0 puede usarse para comunicacin entre threads sobre la disponibilidad de un recurso

Uso
Los semforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones crticas) donde se manipulan variables o recursos que deben ser accedidos de forma especial. Segn el valor con que son inicializados se permiten a ms o menos procesos utilizar el recurso de forma simultnea. Un tipo simple de semforo es el binario, que puede tomar solamente los valores 0 y 1. Se inicializan en 1 y son usados cuando slo un proceso puede acceder a un recurso a la vez. Son esencialmente lo mismo que los mutex. Cuando el recurso est disponible, un proceso accede y decrementa el valor del semforo con la operacin P. El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementillo tenga que esperar. Cuando el proceso que decremento el semforo realiza una operacin V, algn proceso que estaba esperando comienza a utilizar el recurso.

En el siguiente ejemplo se crean y ejecutan n procesos que intentarn entrar en su seccin crtica cada vez que puedan, y lo lograrn siempre de a uno por vez, gracias al uso del semforo s inicializado en 1. El mismo tiene la misma funcin que un lock.

const int n /* nmero de procesos */ variable semforo s; /* declaracin de la variable semforo de valor entero*/ Inicia (s,1) /* Inicializa un semforo con nombre s con valor 1 */ void P (int i) { while (cierto) {

P(s) /* En semforos binarios, lo correcto es poner un P(s) antes de entrar en la seccin crtica, para restringir el uso de esta regin del cdigo*/
/* SECCIN CRTICA */ V(s) /* Tras la seccin crtica, volvemos a poner el semforo a 1 para que otro proceso pueda usarla */ /* RESTO DEL CDIGO */ } } int main() { Comenzar-procesos(P(1), P(2),...,P(n)); }

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 son objetos destinados a ser usados sin peligro por ms de un hilo de ejecucin. La caracterstica que principalmente los define es que sus mtodos son ejecutados con exclusin mutua. Lo que significa, que en cada momento en el tiempo, un hilo como mximo puede estar ejecutando cualquiera de sus mtodos. Esta exclusin mutua simplifica el razonamiento de implementar monitores en lugar de cdigo a ser ejecutado en paralelo 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.

Un monitor encapsula el cdigo relativo a un recurso compartido en un solo mdulo de programa; ventajas: mantenimiento ms simple

menos errores de programacin


La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso La implementacin del monitor garantiza la exclusin mutua

mediante semforos o algn otro mecanismo


o implcitamente en los lenguajes concurrentes

Un monitor tiene cuatro componentes: inicializacin, datos privados, procedimientos del monitor y cola de entrada. Inicializacin: contiene el cdigo a ser ejecutado cuando el monitor es creado Datos privados: contiene los procedimientos privados, que slo pueden ser usados desde dentro del monitor y no son visibles desde fuera Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera del monitor. Cola de entrada: contiene a los hilos que han llamado a algn procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos an.

Funcionamiento del monitor


Cada uno de los objetos del sistema operativo contiene una serie de contadores que permiten conocer el estado de actividad del objeto. Para algunos de estos objetos, los contadores deben ser activados antes de ejecutar el monitor del sistema. Ejemplos de objetos que podemos monitorizar son las unidades de disco fsicas, los procesadores, la memoria fsica, la memoria cach, y otros componentes, que incluyen los componentes del sistema de red. Incluso algunas aplicaciones como servidores SQL y otros pueden aadir sus propios tipos de objetos y contadores.

Mutex
es la abreviatura de mutual exclusin, es decir, exclusin mutua. Las variables Mutex son la forma ms comn de implementar la sincronizacin de threads y de proteger datos compartidos cuando acontecen multitud de escrituras sobre esos datos compartidos.

Una variable Mutex acta como un candado protegiendo los datos o recursos. El concepto bsico de Mutex en Pthreads es que slo un thread puede cerrar el candado en un determinado instante. Incluso si varios threads intentan cerrar el mismo candado slo uno saldr victorioso. Ningn otro thread podr poseer ese Mutex hasta que el que lo cerr lo abra. Es decir, con esto conseguimos que los threads se turnen para acceder a datos protegidos o compartidos.

Los Mutex pueden ser usados para prevenir condiciones de carrera. Este es un ejemplo de una condicin de carrera en una transaccin de un banco. Una tpica secuencia en el uso de un Mutex es: 1. Crear e inicializar la variable Mutex. 2. Varios threads intentan bloquear el Mutex. 3. Slo uno lo hace y es el poseedor del Mutex. 4. El poseedor del Mutex realiza un conjunto de acciones. 5. El poseedor del Mutex desbloquea el Mutex. 6. Otro thread toma el Mutex y repite el proceso. 7. Finalmente el Mutex es destruido. Cuando varios threads compiten por un Mutex, los perdedores se bloquean hasta que el ganador desbloquea el Mutex.

Mutex

Paginacin Simple
Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que esta en la posicin fsica de la primera palabra en el marco de pgina.

Paginacin simple con este mtodo la memoria principal se divide en muchos marcos pequeos de igual tamao. Cada proceso se divide en pginas de igual tamao; los procesos ms pequeos requieren menos pginas, procesos mayores requieren mas espacio de memoria. Cuando un proceso se trae a la memoria todas sus pginas se cargan en los marcos disponibles y se establece una tabla de pginas, facilitando la localizacin de las referencias o direcciones que se le asignaron a estas y se evita, la fragmentacin tanto interna como externa.

Segmentacin Paginada
Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentacin se necesita que estn cargadas en memoria, reas de tamaos variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una regin de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible. A nivel de paginacin, si quiere referenciar en forma cclicas n paginas, estas debern ser cargadas una a una generndose varias interrupciones por fallas de paginas; bajo segmentacin, esta pagina podra conformar un solo segmento, ocurriendo una sola interrupcin, por falla de segmento

Algoritmo de Paginacin FIFO


El algoritmo de sustitucin de pginas de primera que entra, primera que sale (FIFO) Otro algoritmo de paginacin con bajo gasto extra es el algoritmo FIFO (primera que entra, primera que sale). Para ilustrar su funcionamiento, consideremos un supermercado que tiene suficientes anaqueles para exhibir exactamente k productos distintos. Un da, alguna compaa introduce un nuevo alimento: yogurt orgnico liofilizado instantneo que puede reconstituirse en un homo de microondas. Su xito es inmediato, as que nuestro supermercado finito tiene que deshacerse de un producto viejo para poder tener el nuevo en exhibicin.

Una modificacin sencilla de FIFO que evita el problema de desalojar una pgina muy utilizada consiste en inspeccionar el bit R de la pgina ms vieja. Si es O, sabremos que la pgina, adems de ser vieja, no ha sido utilizada recientemente, as que la reemplazamos de inmediato. Si el bit R es 1, se apaga el bit, se coloca la pgina al final de la lista de pginas, y se actualiza su tiempo de carga como si acabara de ser trada a la memoria. Luego contina la bsqueda.

Algoritmo de Paginacin LRU


El algoritmo de sustitucin de pginas menos recientemente usadas (LRU) Una buena aproximacin al algoritmo ptimo se basa en la observacin de que las pginas que han usado mucho en las ltimas instrucciones probablemente se usarn mucho en las siguientes. Por otro lado, las pginas que hace mucho no se usan probablemente seguirn sin usarse durante largo tiempo. Esta idea sugiere un algoritmo factible: cuando ocurra una falla de pgina, se desalojar la pgina que haya estado ms tiempo sin usarse. Esta estrategia se denomina paginacin LRN (menos recientemente utilizada). Aunque LRU es factible en teora, no es barato. Si queremos implementar LRU plenamente, necesitamos mantener una lista enlazada de todas las pginas que estn en la memoria, con la pgina ms recientemente utilizada al frente y la menos recientemente utilizada al final

Algoritmo de Paginacin Optimo


El mejor algoritmo de reemplazo de pginas posible es fcil de describir pero imposible de implementar. En el momento en que ocurre una falla de pginas, algn conjunto de pginas est en la memoria. A una de estas pginas se har referencia en la siguiente instruccin (la pgina que contiene esa instruccin). Otras pginas podran no necesitarse sino hasta 10, 100 o tal vez 1000 instrucciones despus. Cada pgina puede rotularse con el nmero de instrucciones que se ejecutarn antes de que se haga referencia a esa pgina. El algoritmo de reemplazo de pginas ptimo simplemente dice que se debe eliminar la pgina que tenga el rtulo ms alto. Si una pgina no se va a usar sino hasta despus de 8 millones de instrucciones y otra pgina no se usar sino hasta despus de 6 millones de instrucciones, el desalojo de la primera postergar la falla de pgina que la traer de nuevo a la memoria lo ms lejos hacia el futuro que es posible. Las computadoras, al igual que las personas, tratan de aplazar los sucesos desagradables el mayor tiempo que se puede

Algoritmo de Paginacin LRU

Algoritmo de Paginacin Optimo

Algoritmo de Paginacin FIFO

Bachilleres: Coello, Jhoan

También podría gustarte