Está en la página 1de 7

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

También podría gustarte