Está en la página 1de 9

UNIVERSIDAD DE LA COSTA – CUC

Ingeniería de Sistemas

Interfaces del Sistema


Tipos de Sistemas Operativos

Nombre del Estudiante:


Camilo Mejía
Yair Zuluaga Caldera

Nombre del Profesor:


Yesith Ternera Muñoz

Atlántico, Barranquilla 17 septiembre 2.020


Definición de concurrencia

Dos o más 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.
En sistemas multiprocesador, esta ejecución simultánea podría conseguirse
completamente, puesto que podremos asignarle, por ejemplo, un proceso A al procesador
A y un proceso B al procesador B y cada procesador realizaran la ejecución de su
proceso.
Cuando tenemos un solo procesador se producirá un intercalado de las instrucciones de
ambos procesos, de tal forma que tendremos la sensación de que hay un paralelismo en el
sistema (concurrencia, ejecución simultánea de más de un proceso).
Ahora bien, está claro que en esto debemos tener en cuenta que mientras un proceso está
escribiendo un valor en una variable determinada, puede darse el caso que otro proceso
que es concurrente al primero vaya a leer o escribir en esa misma variable, entonces
habrá que estudiar el caso en el que un proceso haga una operación sobre una variable (o
recurso en general) y otro proceso concurrente a él realice otra operación de tal forma que
no se realice correctamente. Para estudiar esto, y determinar el tipo de operaciones que se
pueden realizar sobre recursos compartidos utilizaremos las condiciones de Bernstein.

Programación Concurrente
Virtualmente todos los sistemas de tiempo-real son inherentemente concurrente – los
dispositivos operan en paralelo en el mundo real.
Programación concurrente es el nombre dado a las técnicas y natación de programación
para expresar “Paralelismo” potencial y resolver la sincronización y los problemas de
comunicación
En la programación concurrente solo se cuenta con un procesador. El tiempo de CPU se
reparte entre varios procesos.
El paralelismo implica que existen varios procesadores en el sistema. La programación
paralela implica dividir la ejecución de un programa en distintos módulos los cuales se
ejecutarán en distintos procesadores.
Tipos de Concurrencia

 Concurrencia aparente: Hay más procesos que procesadores.

– Los procesos se multiplexan en el tiempo.


– Pseudoparalelismo
• Concurrencia real: Cada proceso se ejecuta en un procesador.

– Se produce una ejecución en paralelo.


– Paralelismo real.

Modelos de programación concurrente

• Multiprogramación con un Único procesador


– El sistema operativo se encarga de repartir el tiempo entre los procesos
(planificación expulsiva/no expulsiva).

• Multiprocesador
– Se combinan paralelismo real y Pseudoparalelismo.
- Normalmente más procesos que CPU’s.

• Sistema distribuido
– Varios computadores conectados por red.
Ventajas de la ejecución concurrente

• Facilita la programación.
– Diversas tareas se pueden estructurar en procesos separados.
– Servidor Web: Un proceso encargado de atender a cada petición.

• Acelera la ejecución de cálculos.


– División de cálculos en procesos ejecutados en paralelo.
– Ejemplos: Simulaciones, Mercado eléctrico, Evaluación de carteras financieras.

• Mejora la interactividad de las aplicaciones.


– Se pueden separar las tareas de procesamiento de las tareas de atención de
usuarios.
– Ejemplo: Impresión y edición.

• Mejora el aprovechamiento de la CPU.


– Se aprovechan las fases de E/S de una aplicación para procesamiento de otras.
Exclusión mutua
Sección crítica: Segmento de código que manipula un recurso y debe ser ejecutado de
forma atómica. Se asocia a un recurso un mecanismo de gestión de exclusión mutua.
Solamente un proceso puede estar simultáneamente en la sección crítica de un recurso.

Condiciones para la exclusión mutua

• Solamente se permite un proceso puede estar simultáneamente en la sección crítica


de un recurso.
• No debe ser posible que un proceso que solicite acceso a una sección crítica sea
postergado indefinidamente.
• Cuando ningÚN proceso este en una sección crítica, cualquier proceso que solicite
su entrada lo hará sin demora.
• No se puede hacer suposiciones sobre la velocidad relativa de los procesos ni el
NÚMERO de procesadores.
• Un proceso permanece en su sección crítica durante un tiempo finito.
Semáforos (Dijkstra)

Fueron introducidos inicialmente por Dijkstra (1968). Son componentes de muy bajo
nivel de abstracción, de fácil comprensión y con una gran capacidad funcional. Por el
contrario, son unos componentes que por su bajo nivel de abstracción resultan muy
peligrosos de manejar y frecuentemente son causa de muchos errores.

Sincronización de procesos mediante un mecanismo de señalización → →semáforo.


Se puede ver un semáforo como una variable entera con tres operaciones asociadas.
Iniciación a un valor no negativo.

– semWait: Decrementa el contador del semáforo.


• Si s<0 → →El proceso se bloquea.

– semSignal: Incrementa el valor del semáforo.


• Si s<=0 → →Desbloquea un proceso.

Problema de los lectores-escritores


• Problema que se plantea cuando se tiene un área de almacenamiento compartida.
– Múltiples procesos leen información.
– Múltiples procesos escriben información.

• Condiciones:
– Cualquier NÚMERO de lectores pueden leer de la zona de datos
concurrentemente.
– Solamente un escritor puede modificar la información a la vez.
– Durante una escritura ningún lector puede realizar una consulta.
Referencias:

https://webprogramacion.com/43/sistemas-operativos/concurrencia-de-procesos.aspx
http://ocw.uc3m.es/ingenieria-informatica/sistemas-operativos/material-de-clase-
1/mt_t3_l6.pdf

También podría gustarte