UNIVERSIDAD NACIONAL DEL ALTIPLANO
FACULTAD DE INGENIERIA MECANICA
ELECTRICA, ELECTRONICA Y SISTEMAS
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
INFORME
CURSO: SISTEMAS OPERATIVOS
PRESENTADO POR: NESTOR ARMANDO QUISPE QUISPE
DONCENTE: ING. FIDEL HUANCO RAMOS
PUNO-PERU
2020
1. ¿Qué es concurrencia?
Definición de diccionario: coincidir en el espacio o en el tiempo dos o más personas o
cosas. n En Informática, se habla de concurrencia cuando hay una existencia simultánea
de varios procesos en ejecución. n Ojo, concurrencia existencia simultánea no implica
ejecución simultánea.
1.1. Paralelismo y concurrencia
El paralelismo es un caso particular de la concurrencia. n Se habla de paralelismo
cuando ocurre la ejecución simultánea de instrucciones.
1.2. Procesos cooperativos
Necesidades de sincronización y comunicación Los procesos concurrentes tendrán
necesidad de comunicarse información Además, será necesario en ocasiones detener a
un proceso hasta que se produzca un determinado evento o se den ciertas condiciones à
sincronización
Ejemplo 1: MODIFICACIÓN CONCURRENTE DE UNA VARIABLE
Ejemplo 2: BUCLES INFINITOS CONCURRENTES
1.3. Problema al modificar datos compartidos
Ambas rutinas son correctas si se ejecutan por separado, pero podrían NO funcionar si
se ejecutan de manera concurrente n Supongamos que contador contiene en un
momento dado el valor 5 y que las instrucciones “contador=contador+1” y
“contador=contador-1” se ejecutan de forma concurrente (¡contador podría ser 4, 5 o 6!)
2. Sección crítica: modelo del sistema
N procesos intentan acceder a un recurso compartido en un bucle infinito:
loop
Sección_No_Crítica (SNC);
Pre_Protocolo;
Sección_Crítica (SC);
Post_Protocolo;
end loop;
Sección crítica: Segmento de código donde se accede a datos compartidos con
otros procesos
2.1. Sección crítica: modelo del sistema (2)
Nunca puede haber más de un proceso en la sección crítica (exclusión mutua)
Los pre y post protocolos serán algoritmos para garantizar que se cumple la
exclusión mutua
2.2. Requisitos de la solución
a) Exclusión mutua
b) Progreso: si ningún proceso está en sección crítica y hay procesos que desean
entrar en su s.c., sólo estos últimos participarán en la decisión y ésta se tomará
en un tiempo finito.
c) Espera limitada: hay un límite para el número de veces que otros procesos
pueden adelantarse a un proceso que quiere entrar en s.c.
Importante
Suponemos que cada proceso se ejecuta a una velocidad distinta de cero n No
podemos hacer suposiciones acerca de las velocidades relativas de los procesos
2.3. Solución trivial: cortar la multiprogramación
Si suspendemos la multiprogramación, desaparece el problema de acceso a los datos
compartidos…pero perdemos todas las ventajas de la multiprogramación. Hay que
buscar una solución menos radical
2.4. Solución del hardware: inhibir las interrupciones
Antes de que un proceso entre en su sección crítica, se inhiben las interrupciones. Así es
imposible que el proceso sea expulsado de la CPU mientras está accediendo al dato
compartido. Al salir de la SC, se rehabilitan las interrupciones
2.5. Inhibir las interrupciones: problemas
Mientras un proceso está en SC, se suspende toda la concurrencia en el sistema -> no se
le da oportunidad a otros procesos que no están accediendo al recurso compartido. Esta
técnica no se puede implementar en un multiprocesador
2.6. Soluciones con espera activa
La sincronización se basa en que un proceso espera mediante la comprobación continua
de una variable, manteniendo ocupada la CPU.
Soluciones Software
Soluciones Hardware
Algoritmo de Peterson - ¡¡FUNCIONA!!
Solución para N procesos: Algoritmo de la panadería (Lamport)
3. Mecanismos de Sincronización
Basadas en memoria compartida
-Inhibición de Interrupciones
-Espera activa
-Semáforos
-Regiones críticas
-Monitores
Basadas en el paso de mensajes
-Canales
-Buzones
3.1. Semáforos
Edsger Dijkstra, 1965
Objetivo: herramienta universal para sincronizar procesos, que sirva como componente
básico para construir algoritmos concurrentes, Dijkstra lo definió como una variable
entera S con dos operaciones atómicas: n P(S): esperar a que S>0; S:=S-1; n V(S):
S:=S+1.
El semáforo no puede adquirir valores negativos
4. Problemas clásicos de concurrencia
4.1. Producto Consumidor
Un proceso Productor produce un ítem y lo pone en un área compartida.
Un proceso Consumidor lo retira de área compartida
Variantes:
El área compartida permite n ítems
Hay 2 consumidores, ambos deben consumir el mismo ítem antes de liberar
el área (echo)
4.2. Fumadores
En una "mesa" hay varias unidades de papel, tabaco y fósforos. Un grupo de procesos
pasa su vida fumando. Para cada fumada se consume una unidad de cada recurso. Si
falta algún recurso, los procesos que lo necesitan entran en estado de espera.
Aleatoriamente aparece un agente que repone algunas unidades de los recursos.
4.3. Filósofos
Estos filósofos pasan su vida esperando ... y comiendo en una mesa redonda de una
fuente inagotable de fideos con palillos chinos (después de todo, ellos inventaron los
fideos). Para comerlos requieren de dos palillos. En la versión clásica son 5 filósofos
pero puede generalizarse a 2n+1 con n>1 para evitar trivialidades. El problema es que
hay la misma cantidad de filósofos que de palillos, y que hacen falta 2 palillos para
comer