Enviar búsqueda
Cargar
So 2009-mod 06
•
0 recomendaciones
•
195 vistas
M
maxsp5566
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 10
Descargar ahora
Descargar para leer sin conexión
Recomendados
Tutorial de matlab [101 paginas en español]
Tutorial de matlab [101 paginas en español]
Érick Salvador Serna Reséndiz
Programacion logica
Programacion logica
frankalexandermejiazepeda
27778471 programacion-logica
27778471 programacion-logica
maxsp5566
Programacion logica 1
Programacion logica 1
profedelvalle
Programacion logica
Programacion logica
Eli Diaz
Fundamentos de programación
Fundamentos de programación
Joseph Gregory Sandoval
Lógica de programación
Lógica de programación
Guillermo Salinas
Programacion Logica
Programacion Logica
Natalia
Recomendados
Tutorial de matlab [101 paginas en español]
Tutorial de matlab [101 paginas en español]
Érick Salvador Serna Reséndiz
Programacion logica
Programacion logica
frankalexandermejiazepeda
27778471 programacion-logica
27778471 programacion-logica
maxsp5566
Programacion logica 1
Programacion logica 1
profedelvalle
Programacion logica
Programacion logica
Eli Diaz
Fundamentos de programación
Fundamentos de programación
Joseph Gregory Sandoval
Lógica de programación
Lógica de programación
Guillermo Salinas
Programacion Logica
Programacion Logica
Natalia
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
SebastianPea63
DISEÑO DE ALGORITMOS PARALELOS
DISEÑO DE ALGORITMOS PARALELOS
CrisMencaVivenesHern1
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Roderickx12
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
darosario3d
Algoritmos Paralelos
Algoritmos Paralelos
RayNunezEspino
Octave una alternativa libre para el cálculo numérico
Octave una alternativa libre para el cálculo numérico
Esteban Saavedra
Multiplicacion de matrices: Implementacion en cluster
Multiplicacion de matrices: Implementacion en cluster
Walter Tejerina
Algoritmos paralelos
Algoritmos paralelos
Emanuele Mascilongo
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
FcoKraken
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
FcoKraken
Sesion 1
Sesion 1
vicente ortega paz
Desarrollo de lógica algorítmica
Desarrollo de lógica algorítmica
Omar B.
Software 1
Software 1
miguel313588
3 unidad so2
3 unidad so2
Osiel Alvarez Villarreal
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
lorenapardo
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
Alex Rommyo
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
WALTER YSIQUE
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
Alex Rommyo
PPT-BPMN.pdf
PPT-BPMN.pdf
BrigithJaveMendoza
Diseño de Algoritmos Paralelos | 21-0336
Diseño de Algoritmos Paralelos | 21-0336
JesuelFerreirasAcost
Más contenido relacionado
Similar a So 2009-mod 06
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
SebastianPea63
DISEÑO DE ALGORITMOS PARALELOS
DISEÑO DE ALGORITMOS PARALELOS
CrisMencaVivenesHern1
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Roderickx12
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
darosario3d
Algoritmos Paralelos
Algoritmos Paralelos
RayNunezEspino
Octave una alternativa libre para el cálculo numérico
Octave una alternativa libre para el cálculo numérico
Esteban Saavedra
Multiplicacion de matrices: Implementacion en cluster
Multiplicacion de matrices: Implementacion en cluster
Walter Tejerina
Algoritmos paralelos
Algoritmos paralelos
Emanuele Mascilongo
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
FcoKraken
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
FcoKraken
Sesion 1
Sesion 1
vicente ortega paz
Desarrollo de lógica algorítmica
Desarrollo de lógica algorítmica
Omar B.
Software 1
Software 1
miguel313588
3 unidad so2
3 unidad so2
Osiel Alvarez Villarreal
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
lorenapardo
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
Alex Rommyo
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
WALTER YSIQUE
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
Alex Rommyo
PPT-BPMN.pdf
PPT-BPMN.pdf
BrigithJaveMendoza
Diseño de Algoritmos Paralelos | 21-0336
Diseño de Algoritmos Paralelos | 21-0336
JesuelFerreirasAcost
Similar a So 2009-mod 06
(20)
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
DISEÑO DE ALGORITMOS PARALELOS
DISEÑO DE ALGORITMOS PARALELOS
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Diseño de Algoritmos Paralelos Roderick Beriguete .pptx
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos
Algoritmos Paralelos
Octave una alternativa libre para el cálculo numérico
Octave una alternativa libre para el cálculo numérico
Multiplicacion de matrices: Implementacion en cluster
Multiplicacion de matrices: Implementacion en cluster
Algoritmos paralelos
Algoritmos paralelos
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
Sesion 1
Sesion 1
Desarrollo de lógica algorítmica
Desarrollo de lógica algorítmica
Software 1
Software 1
3 unidad so2
3 unidad so2
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
Pasos para realizar un problema en computador
Pasos para realizar un problema en computador
PPT-BPMN.pdf
PPT-BPMN.pdf
Diseño de Algoritmos Paralelos | 21-0336
Diseño de Algoritmos Paralelos | 21-0336
So 2009-mod 06
1.
Sincronización de Procesos
Fundamentos Sincronización de Procesos El Problema de la Sección Crítica La Solución de Peterson y otras Hardware de Sincronización Semáforos Módulo 6 Problemas Clásicos de Sincronización Monitores Ejemplos de Sincronización Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur JRA © 2009 Sistemas Operativos – Sincronización de Procesos Fundamentos El Problema El acceso concurrente a datos compartidos puede Productor contador = 4 Consumidor resultar en inconsistencias. : : Mantener la consistencia de datos requiere mecanismos : : : : para asegurar la ejecución ordenada de procesos : : cooperativos. La solución con memoria compartida al problema del contador:= contador+1; t d t d +1 contador:= contador-1; t d t d 1 buffer limitado (módulo anterior) permite a lo sumo n – 1 items en el buffer al mismo tiempo. Una solución, donde : : : : todos los N buffers son usados, no es simple. : : : : Supóngase que se modifica el código del productor- consumidor agregando una variable contador, inicializado a 0 e incrementado en cada momento contador = 4 que un nuevo item es agregado al buffer Luego de una operación de Productor y otra de Consumidor … contador permanece invariante JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos El Problema El Problema Productor Consumidor P1 a=b=1 P2 : : : : : : : : : : : : : : : : rega ← contador contador regb ← contador a:= a+1; ; a a:= 2 * a; rega ← rega+1 a +1 contador:= contador+1; regb ← regb - 1 contador:= contador-1; b:= b+1; b:= 2 * b; contador ← regaa contador ← reg contador ← regb : : : : : : : : : : : : : : : rega= 5 regb= 3 : a=b=4 4 contador = 5 3 Luego de la ejecución de P1 seguida de P2 los valores de a y b deben ser iguales entre sí JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 1
2.
El Problema
El Problema a=b=1 A sig(A) B sig(B) C sig(C) P1 P2 : : L : : : : : : a:= a+1; ; a: a:= 2 * a; D sig(D) E sig(E) b:= b+1; b:= 2 * b; : : : : : : : : : : sig(D) ← L sig(E) ← L a=4,b=3 L ←D L ←E Luego de la ejecución de P1 y P2 los valores de a y b deberían ser iguales : : entre sí, pero no lo son. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos El Problema El Problema A sig(A) B sig(B) C sig(C) A sig(A) B sig(B) C sig(C) L L D sig(D) E sig(E) D sig(D) E sig(E) : : : : sig(D) ← L sig(E) ← L sig(D) ← L sig(E) ← L L ←D L ←E L ←D L ←E : : : : JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos El Problema El Problema A sig(A) B sig(B) C sig(C) A sig(A) B sig(B) C sig(C) L L D sig(D) E sig(E) D sig(D) E sig(E) : : : : sig(D) ← L sig(E) ← L sig(D) ← L sig(E) ← L L ←D L ←E L ←D L ←E : : : : JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 2
3.
El Problema
El Problema A sig(A) B sig(B) C sig(C) A sig(A) B sig(B) C sig(C) L L D sig(D) E sig(E) D sig(D) E sig(E) : : : : sig(D) ← L sig(E) ← L sig(D) ← L sig(E) ← L L ←D L ←E L ←D L ←E : : : : JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos El Problema Condición de Carrera A sig(A) B sig(B) C sig(C) L Condición de carrera – Es la situación donde varios procesos acceden y manejan datos compartidos concurrentemente. El valor final de los datos compartidos depende de que proceso termina último. D sig(D) E sig(E) Para prevenir las condiciones de carrera , los procesos concurrentes cooperativos deben ser : : sincronizados. sig(D) ← L sig(E) ← L L ←D L ←E : : JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Problema de la Sección Crítica Solución al Problema de la Sección Crítica 1. Exclusión Mutua. Si el proceso Pj está ejecutando en su sección crítica, entonces ningún otro proceso puede estar ejecutando en n procesos todos compitiendo para usar datos sus secciones críticas. compartidos 2. Progreso. Si ningún proceso está ejecutando en su sección crí- tica y existe algunos procesos que desean entrar en sus secciones Cada proceso tiene un segmento de código criticas, entonces la selección de procesos que desean entrar en la llamado sección crítica, en la cual los datos sección crítica no puede ser pospuesta indefinidamente. compartidos son accedidos 3. Espera Limitada. Debe existir un límite en el número de veces que a otros procesos les está permitido entrar en sus secciones Problema – asegurar que cuando un proceso críticas después que un proceso ha hecho un requerimiento para entrar en su sección crítica y antes que ese requerimiento sea está ejecutando en su sección crítica, no se le completado. permite a otro proceso ejecutar en su Asuma que cada proceso ejecuta a velocidad distinta de cero. respectiva sección crítica. No se asume nada respecto a la velocidad relativa de los n procesos. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 3
4.
Resolución del Problema
Solución de Peterson Solo 2 procesos, P0 y P1 Estructura general del proceso Pi Proceso Pi repeat repeat flag [i] := true; protocolo de entrada turn := j; while (flag [j] and turn = j) do no-op; ( ) sección crítica (SC) sección crítica flag [i] := false; protocolo de entrada resto de sección until false; resto de sección until falso Alcanza los tres requerimientos; resuelve el problema de la sección crítica para dos procesos. Los procesos pueden compartir algunas variables comunes para sincronizar sus acciones. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Algoritmo para N Procesos Algoritmo para N Procesos(Cont.) (Algoritmo del “panadero”) Sección crítica para n procesos Notación orden lexicográfico (ticket #,id proceso #) (a,b) < c,d) si a < c o si a = c y b < d Antes de entrar en su sección crítica, el proceso recibe un número. El poseedor del número mas max (a0,…, an-1) es un número k, tal que k ≥ ai para chico entra en su sección crítica. i = 0, …, n – 1 Si los procesos Pi y Pj reciben el mismo número , si i Dato compartido < j, entonces Pi es servido primero; sino lo es Pj . var choosing: array [0..n – 1] of boolean; El esquema de numeración siempre genera números number: array [0..n – 1] of integer, en orden incremental de enumeración; Las estructuras de datos son inicializadas a false y 0 p.e., 1,2,3,3,3,3,4,5... respectivamente. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Algoritmo para N Procesos(Cont.) Sincronización por Hardware repeat Muchos sistemas proveen soporte por hardware para el código choosing[i] := true; de la sección crítica number[i] := max(number[0], number[1], …, number [n – 1])+1; Monoprocesador – pueden deshabilitarse las interrupciones choosing[i] := false; El código que esta corriendo debe ejecutar sin apropiación for j := 0 to n – 1 Generamente es demasiado ineficiente en sistemas do begin multiprocesador while choosing[j] do no-op; Los SOs que usan esto no son ampliamente escalables while number[j] ≠ 0 Las computadoras modernas proveen instrucciones especiales and (number[j],j) < (number[i], i) do no-op; que se ejecutan atómicamente end; Atómico = no-interrumpible sección crítica Sea por verificación de una palabra de memoria y su number[i] := 0; inicialización resto de sección O por intercambio de dos palabras de memoria until false; JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 4
5.
Solución usando Test-and-Set
Exclusión Mutua con Test-and-Set Dato compartido : var lock: boolean (inicialmente false) Verifica y modifica el contenido de una palabra atomicamente. Proceso Pi repeat función Test-and-Set (var target: boolean): boolean; while Test-and-Set (lock) do no-op; begin b i sección crítica Test-and-Set := target; lock := false; target := true; resto de sección end; until false; JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Instrucción Swap Solución usando Swap La variable booleana compartida es inicializada en FALSE; Cada proceso tiene una variable local booleana key Definición: Solución: while (true) { void Swap (boolean *a, boolean *b) key = TRUE; { while ( key == TRUE) boolean temp = *a; Swap (&lock, &key ); *a = *b; // sección critica *b = temp: lock = FALSE; } // sección restante } JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Semáforos El Semáforo como Herramienta General de Sincronización Semáforo de Cuenta – el valor entero puede tener un rango Es una herramienta de sincronización. sobre un dominio sin restricciones. Semáforo S – variable entera Semáforo Binario – el valor entero puede tener un rango Dos operaciones standard modifican S: wait() y solo entre 0 y 1; puede ser más simple de implementar signal() También se los conoce como mutex locks Originalmente llamadas P() y V() Puede implementarse un semáforo de cuenta S como un p Puede ser accedido solo por dos operaciones semáforo binario indivisibles (deben ser atómicas): Provee exclusión mutua wait (S): while S≤ 0 do no-op; Semáforo S; // inicializado en 1 S := S – 1; wait (S); Sección Critica signal (S): S := S + 1; signal (S); JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 5
6.
El Semáforo como
Herramienta General de Sincronización Implementación de S con Semáforos Binarios Ejecute B en Pj solo después que A ejecute en Pi Estructuras de datos: Use el semáforo flag inicializado a 0 Código: var S1: binary-semaphore; S2: binary-semaphore; S3: binary-semaphore; binary semaphore; Pi Pj C: integer; M M A wait(flag) Initialización: signal(flag) B S1 = S3 = 1 S2 = 0 C = valor inicial del semaforo S JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Implementación de S (Cont.) Implementación del Semáforo operación wait wait(S3); Debe garantizar que dos procesos no puedan ejecutar wait () wait(S1); y signal () sobre el mismo semáforo al mismo tiempo C := C – 1; Entonces, la implementación se convierte en el problema de if C < 0 la sección crítica donde el código del wait y el signal son la then begin sección crítica. signal(S1); wait(S2); Podemos tener ahora espera ocupada en la end implementación de la sección crítica porque: else signal(S1); El código de implementación es corto signal(S3); operación signal Poca espera ocupada si la sección crítica está wait(S1); raramente invocada C := C + 1; Note que las aplicaciones pueden pasar y gastar mucho if C ≤ 0 then signal(S2); tiempo en secciones críticas, entonces esta no es una buena signal(S1); solución. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Implementación de Semáforo sin Espera Ocupada Implementación (Cont.) Las operaciones del semáforo se definen como Con cada semáforo hay asociada una cola de espera. Cada entrada en dicha cola tiene dos datos: wait(S): S.value := S.value – 1; valor (de tipo entero) if S.value < 0 then begin puntero al próximo registro en la lista agregue este proceso a S.L; block; Dos operaciones: end; signal(S): S.value := S.value + 1; block – ubica el proceso invocando la operación en la apropiada cola de espera . if S.value ≤ 0 then begin wakeup – remueve uno de los procesos en la cola remueva un proceso P de S.L; de espera y lo ubica en la cola de listos. wakeup(P); end; JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 6
7.
Interbloqueo e Inanición
Problemas Clásicos de Sincronización Interbloqueo – dos o más procesos están esperando indefinidamente por un evento que puede ser causado por solo uno de los procesos que esperan. Sean S y Q dos semáforos inicializados a 1 Problema del Buffer Limitado P0 P1 Problema de Lectores y Escritores wait(S); wait(Q); Problema de los Filósofos Cenando wait(Q); wait(S); M M signal(S); signal(Q); signal(Q); signal(S); Inanición – bloqueo indefinido. Un proceso no puede ser removido nunca de la cola del semáforo en el que fue suspendido. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 4 Problema del Buffer Limitado Problema del Buffer Limitado (Cont.) Proceso Productor Datos compartidos repeat type item = … … var buffer = … produce un item en nextp … full, empty, mutex: semaphore; wait(empty); nextp, nextc: item; wait(mutex); full :=0; empty := n; mutex :=1; … agregue nextp al buffer … signal(mutex); signal(full); until false; JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Problema del Buffer Limitado(Cont.) Problema de los Lectores-Escritores Un conjunto de datos es compartido entre un número de procesos Proceso Consumidor concurrentes repeat Lectores – solo leen el conjunto de datos, no realizan wait(full) actualizaciones wait(mutex); Escritores – pueden leer y/o escribir … remueve un item de buffer a nextc Problema – permitir a múltiples lectores leer al mismo tiempo. Un p p p solo escritor puede acceder a los datos compartidos al mismo … tiempo. signal(mutex); Datos compartidos signal(empty); Conjunto de datos … consume el item en nextc Semáforo mutex inicializado a 1. … Semáforo wrt inicializado a 1. until false; Entero readcount inicializado a 0. JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 7
8.
Problema de los
Lectores-Escritores Problema de los Lectores-Escritores Datos compartidos Proceso Lector var mutex, wrt: semaphore (=1); wait(mutex); readcount : integer (=0); readcount := readcount +1; if readcount = 1 then wait(wrt); signal(mutex); Proceso Escritor … wait(wrt); se realiza la lectura … … se realiza la escritura wait(mutex); … readcount := readcount – 1; signal(wrt); if readcount = 0 then signal(wrt); signal(mutex): JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Problema de los Filósofos Cenando Problema de los Filósofos Cenando Filósofo i: repeat wait(chopstick[i]) wait(chopstick[i+1 mod 5]) … comer … signal(chopstick[i]); signal(chopstick[i+1 mod 5]); … Datos compartidos pensar Fuente con arroz (conjunto de datos) … var chopstick: array [0..4] of semaphore;(=1 inicialmente) until false; JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 4 Problemas con Semáforos Monitores Es un constructor de sincronización de alto nivel que Incorrecto uso de las operaciones sobre permite compartir en forma segura un tipo de dato abstracto entre procesos concurrentes. semáforos: type monitor-name = monitor signal (mutex) …. wait (mutex) declaraciones de variables procedure entry P1 :(…); wait (mutex) … wait (mutex) begin b i … end; d procedure entry P2(…); begin … end; Omitir el wait (mutex) o el signal (mutex) (o M ambos) procedure entry Pn (…); begin…end; begin código de inicialización end JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos 8
9.
Vista esquemática de
un Monitor Variables de Condición condición x, y; datos compartidos cola de entrada Dos operaciones sobre una variable de condición x.wait x wait () – el proceso que invoca esa ... operación es suspendido operaciones x.signal () – reinicia uno de los procesos (si hay alguno) que invocó x.wait () código inicialización JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Monitor con Variables de Condición Solución de los Filósofos Cenando type filósofos-cenando = monitor var state : array [0..4] of :(pensando, hambre, comiendo); datos var self : array [0..4] of condition; compartidos procedure entry pickup (i: 0..4); x cola de entrada begin y colas asociadas a las estado[i] := hambre, test (i); variables de condición x e y if estado[i] ≠ comiendo th self[i].wait, t d [i] i d then lf[i] it end; ... procedure entry putdown (i: 0..4); operaciones begin estado[i] := pensando; código test (i+4 mod 5); inicialización test (i+1 mod 5); end; JRA © 2009 Sistemas Operativos – Sincronización de Procesos 5 JRA © 2009 Sistemas Operativos – Sincronización de Procesos Solución de los Filósofos Cenando Solución de los Filósofos Cenando procedure test(k: 0..4); begin Cada filósofo invoca las operaciones pickup() y if estado[k+4 mod 5] ≠ comiendo putdown() en la siguiente secuencia: and state[k] = hambre and state[k+1 mod 5] ] ≠ comiendo then begin dp.pickup (i) estado[k] : comiendo; := self[k].signal; Comer end; end; dp.putdown (i) begin for i := 0 to 4 do estado[i] := pensando; end. JRA © 2009 Sistemas Operativos – Sincronización de Procesos 5 JRA © 2009 Sistemas Operativos – Sincronización de Procesos 9
10.
Ejemplos de Sincronización
Sincronización en SOLARIS Solaris Implementa una variedad de locks para soportar multitasking, multithreading (incluyendo threads en Windows XP tiempo real), y multiprocesamiento. Linux Usa mutex adaptivos para mayor eficiencia en la protección de datos para segmentos de código cortos. Pthreads Usa variables de condición y locks lectores-escritores cuando grandes secciones de código necesitan acceder a los datos. Usa turnstiles para ordenar la lista de threads esperando para adquirir un mutex adaptivo o un lock lectores-escritores JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Sincronización Windows XP Sincronización en Linux Usa máscaras de interrupción para proteger el acceso a Linux: recursos globales en sistemas mono procesador Deshabilita las interrupciones para Usa spinlocks en sistemas multiprocesador implementar secciones críticas cortas Tambiém provee dispatcher objects los cuales actuan como mutex y semáforos Los Dispatcher objects pueden proveer eventos Linux provee: Un evento actúa como una variable de condición semaforos spin locks JRA © 2009 Sistemas Operativos – Sincronización de Procesos JRA © 2009 Sistemas Operativos – Sincronización de Procesos Sincronización en Pthreads APIs Pthreads son independientes de los SOs Proveen: Locks mutex Fin Variables de condición Extensiones no portables incluyen: Módulo 6 Locks lector-escritor spin locks Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur JRA © 2009 Sistemas Operativos – Sincronización de Procesos 10
Descargar ahora