Está en la página 1de 20

DEDICATORIA

El presente trabajo esta dedicado a Dios y a nuestros padres quienes son el motivo de nuestra

superación y gracias a su amor que nos brindan cada día con el cual nos han sabido guiar en

nuestra vida por el sendero de la verdad a fin de poder honrar a nuestras respectivas familias,

brindándonos su esfuerzo y sacrificio para ofrecernos un futuro mejor y así culminar nuestra vida

universitaria de manera satisfactoria.


ÍNDICE
I. INTRODUCCIÓN......................................................................................................................4

II. CONCEPTOS PREVIOS DE LA CONCURRENCIA................................................................5

III. DEFINICIÓN..........................................................................................................................6

IV. RAZONES PARA PERMITIR LA EJECUCIÓN CONCURRENTE........................................8

V. PROCESOS PARALELISMO.....................................................................................................9

VI. TIPOS DE PROCESOS CONCURRENTES.........................................................................10

VI.1 PROCESOS CONCURRENTES COOPERANTES...........................................................10

VI.2 PROCESOS CONCURRENTES INDEPENDIENTES......................................................11

VII. HILOS...................................................................................................................................12

VIII. PROBLEMAS DE LA CONCURRENCIA.........................................................................17

IX. REFERENCIAS.....................................................................................................................22
I. INTRODUCCIÓN

Este presente trabajo monográfico se desarrolló con el propósito de explicar acerca de la

“Concurrencia de los Procesos en un Sistema Operativo”.

La sistematización de este informe consta de cuatro capítulos, de tal manera que en el primer

capítulo se contempla la introducción al ya mencionado tema; en el segundo capítulo se considera

el cuerpo o desarrollo considerando la teoría y ejemplos; Finalmente, en el cuarto capítulo se

anotan las fuentes bibliográficas y referencias de donde se obtuvo la información ya mencionada

para la elaboración de este trabajo.


II. CONCEPTOS PREVIOS DE LA CONCURRENCIA

 SO gestiona una colección de procesos que se ejecutan en forma concurrente.

 La concurrencia es importante en el diseño de SOs.

La concurrencia es la capacidad del CPU para procesar más de un proceso al mismo tiempo. Un

procesador puede procesar al mismo tiempo el mismo número de procesos que el número de

CORES que tiene, de esta forma, si un procesador tiene un CORE, entonces solo podrá ejecutar un

proceso a la vez, por otro parte, si tenemos 8 CORES, entonces podremos ejecutar hasta 8

procesos al mismo tiempo. (Blancarte, 2017)

Un caso particular es el paralelismo (programación paralela). Los procesos pueden “competir” o

colaborar entre sí por los recursos del sistema. Por tanto, existen tareas de colaboración y

sincronización. (Florido, 2018)

Se manifiesta en aspectos tales como la comunicación entre procesos, acceso a los recursos,

sincronización de ejecución.
Dos procesos son concurrentes cuando la primera instrucción de uno de ellos se ejecuta

después de la primera instrucción del otro y antes la última. (Cano, 2021)

Se ejecutan al mismo tiempo los dos procesos, lo que tendríamos una situación llamada

“programación paralela”. Ejemplo: el navegador web puede dar a más de un proceso; uno que

controla las acciones del usuario con interfaz, otro que hace peticiones al servidor, etc.

1. Donde pueden existir procesos que colaboren para un determinado fin.

2. Pueden existir otros procesos que compiten por recursos del sistema. Esto para obtener

tiempo de procesador.

El orden de ejecución de las instrucciones y el indeterminismo. Indeterminismo, pueden arrojar

diferentes resultados cuando se ejecutan rápidamente sobre el mismo conjunto de datos de entrada.

Mecanismos de sincronización y comunicación entre procesos.

III. DEFINICIÓN

Según (StudentPlace, 2018) La Concurrencia: es una propiedad de los sistemas en la cual los

procesos de un cómputo se hacen simultáneamente, y pueden interactuar entre ellos, es decir son

procesados al mismo tiempo, de manera que, para ejecutar uno de ellos, no hace falta que se haya

ejecutado otro.
Según (Velásquez, 2008)la concurrencia es simplemente la ejecución de varias tareas al

mismo tiempo. Ahora esto de ejecutarse "al mismo tiempo" es relativo de acuerdo a la arquitectura

del ordenador, - ¿espera que? de seguro preguntaras- esto es debido a que, de acuerdo a la

arquitectura básica, el ordenador solo puede ejecutar un programa o tarea a la vez, y no más, si

nosotros percibimos la ilusión de que varios programas se ejecutan al mismo tiempo

(Multiprogramación) es debido a que el sistema operativo intercala las tareas que se ejecutan en el

procesador a una velocidad sumamente rápida.

Pongamos un ejemplo: digamos que estoy reproduciendo una canción al mismo tiempo que

estoy escribiendo esta entrada, y a su vez estoy tengo un video abierto en YouTube. Lo que en

realidad sucede es que mi computadora hace esto:

• Reproduce la canción durante 1 nanosegundo y se detiene

• Escribe una letra durante 1 nanosegundo y se detiene

• Reproduce una parte del video durante 1 nanosegundo y se detiene

• Repite estas instrucciones otra vez miles de veces por segundo.

Al poner todo junto y al hacerlo a una velocidad ultra rápida (1 nanosegundo) nos da la

ilusión de que todo sucede al mismo instante, pero no es así. En fin, olvidémonos de esto por un

instante, pero conservémoslo para los ejemplos siguientes.

En fin, quedémonos en decir que los procesos son concurrentes si existen simultáneamente.

Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o

pueden ser asíncronos, lo cual significa que en ocasiones requieren cierta sincronización o

cooperación.

Según (Florido) la concurrencia aparece cuando dos o más procesos son contemporáneos.

Un caso particular es el paralelismo (programación paralela). Los procesos pueden “competir” o


colaborar entre sí por los recursos del sistema. Por tanto, existen tareas de colaboración y

sincronización. La programación concurrente se encarga del estudio de las nociones de ejecución

concurrente, así como sus problemas de comunicación y sincronización.

¿Cuáles son sus beneficios?

 Velocidad de ejecución. Al subdividir un programa en procesos, éstos se pueden “repartir”

entre procesadores o gestionar en un único procesador según importancia.

 Solución a problemas de esta naturaleza. Existen algunos problemas cuya solución es más

fácil utilizando esta metodología. - Sistemas de control: Captura de datos, análisis y

actuación (p.ej. sistemas de tiempo real). - Tecnologías web: Servidores web que son

capaces de atender varias peticiones concurrentemente, servidores de chat, email, etc.-

Aplicaciones basabas en GUI: El usuario hace varias peticiones a la aplicación gráfica

(p.ej.) Navegador web). - Simulación: Programas que modelan sistemas físicos con auto-

no-mía.- Sistemas Gestores de Bases de Datos: Cada usuario un proceso.

IV. RAZONES PARA PERMITIR LA EJECUCIÓN CONCURRENTE

Los procesos del sistema pueden ejecutarse concurrentemente, puede haber múltiples tareas en

el CPU con varios procesos. Según (Baeza, 2014) existen varias razones para permitir la ejecución

concurrente:

 Compartir recursos físicos: Ya que los recursos del hardware de la computadora son

limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario.

 Compartir recursos lógicos: Puesto que varios usuarios pueden interesarse en el mismo

elemento de información (por ejemplo, un archivo compartido), debemos proporcionar un

entorno que permita el acceso concurrente a estos tipos de recursos.


 Acelerar los cálculos: Si queremos que una tarea se ejecute con mayor rapidez, debemos

dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las demás.

 Modularidad: Podremos construir el sistema en forma modular, dividiendo las funciones

del sistema en procesos separados.

 Comodidad: Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo,

puede editar, imprimir y compilar en paralelo.

La ejecución concurrente que requiere la cooperación entre procesos necesita un mecanismo para

la sincronización y comunicación de procesos, exclusión mutua y sincronización.

V. PROCESOS PARALELISMO

Hay paralelismo consiste en tomar un único problema y mediante la concurrencia llegar a

una solución más rápido. El paralelismo que hace es tomar el problema inicial, dividir el problema

en fracciones más pequeñas y luego cada fracción es procesada de forma concurrente,

aprovechando al máximo la capacidad del procesador para resolver el problema.

La principal diferencia del paralelismo contra la concurrencia es que en el paralelismo

todos los procesos concurrentes están intimada mente relacionados a resolver el mismo problema,

de tal forma que el resultado de los demás procesos afecta al resultado final.

Característica:
 El paralelismo requiere un soporte físico: varios procesadores

 La concurrencia es el paso general y el paralelismo es particular.

 La ejecución y paralelismo se refiere a la ejecución de código, hay procesos y flujo

concurrentes.

Ejemplo de concurrencia:

Empecemos con la concurrencia, imagina una aplicación de descarga de música, en la cual

puedes descargar un número determinado de canciones al mismo tiempo, cada canción es

independiente de la otra, por lo que la velocidad y el tiempo que tarde en descargarse cada una no

afectara al resto de canciones. Esto lo podemos ver como un proceso concurrente, ya que cada

descarga es un proceso totalmente independiente del resto.

VI. TIPOS DE PROCESOS CONCURRENTES

Según (UNAM, 2012) lo procesos concurrentes se dividen en:

VI.1 PROCESOS CONCURRENTES COOPERANTES

Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como

procesos independientes y cooperantes.

Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros

procesos. Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandatos

que se ejecutan de forma simultánea en un sistema.

Los procesos cooperantes, cuando están diseñados para trabajar conjuntamente en alguna

actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos en el ejemplo del

compilador que se vio anteriormente, los dos procesos que lo conforman son procesos

cooperantes.
Tanto si los procesos son cooperantes como independientes, puede producirse una serie de

interacciones entre ellos. Estas interacciones pueden ser de dos tipos:

 Interacción motivada: porque los procesos comparten o compiten por el acceso a recursos

físicos o lógicos. Esta situación aparece en los distintos tipos de procesos anteriormente

comentados. Por ejemplo, dos procesos totalmente independientes pueden competir por el

acceso al disco. En este caso el sistema operativo deberá encargarse de que los dos

procesos accedan ordenadamente sin que se cree ningún conflicto.

Esta situación también aparece cuando varios procesos desean modificar el contenido de un

registro de una base de datos. Aquí es el gestor de la base de datos el que se tendrá que encargar de

ordenar los distintos accesos al registro.

 Interacción social: porque los procesos se comunican y sincronizan entre sí para alcanzar

un objetivo común. Por ejemplo, los procesos compiladores y ensambladores descritos

anteriormente son dos procesos que deben comunicarse y sincronizarse entre ellos con el

fin de producir código en lenguaje máquina.

Virtualmente todos los sistemas de tiempo-real son inherentemente concurrentes (los dispositivos

operan en paralelo en el mundo real).

VI.2 PROCESOS CONCURRENTES INDEPENDIENTES

 Procesos que se ejecutan concurrentemente, pero sin ninguna relación.

 No necesitan comunicarse.

 No necesitan sincronizarse.

Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandato que se

ejecutan de forma simultánea en un sistema.

Pueden producir una serie de interacciones entre ellos:


 Interacción Motivada: porque los procesos comparten y compiten por el acceso a recursos

físicos y lógicos.

 Interacción social: Los procesos independientes pueden competir por el acceso al disco. en

este caso el sistema operativo deberá encargarse de que los 2 procesos accedan

ordenadamente sin que se cree ningún conflicto.

VII. HILOS

Según (WordPress, 2013) Un subproceso del sistema operativo es una función que

permite que una aplicación realice varias tareas al mismo tiempo. Los diferentes hilos de ejecución

tienen múltiples recursos, como espacio de memoria, archivos

abiertos, situaciones de autenticación, etc. Esta acción simplifica el diseño

de aplicaciones que deben realizar múltiples funciones al mismo tiempo. Un hilo es

esencialmente una tarea que se puede ejecutar en paralelo con otra tarea; tenga en cuenta que

cada subproceso tiene un contador de programa único, una pila de ejecución y un estado de

CPU (incluidos los valores  de  registro).

En  muchos sistemas operativos que permiten subprocesos, cambiar de un subproceso a  otro

dentro de un proceso es más rápido que cambiar de un proceso a otro. Este fenómeno se debe al

hecho de que los subprocesos  comparten datos y  espacio de direcciones, mientras que los
procesos independientes no solamente nacen.

Un subproceso muestra un estado, principalmente: en ejecución, listo y bloqueado. Vincular el

modo de suspensión de un subproceso no tiene sentido porque es un concepto de proceso.

En cualquier caso, cuando un proceso se vuelca de la memoria principal (RAM), todos

sus subprocesos deben volcarse porque todos comparten el espacio de direcciones del proceso.

Las siguientes imágenes nos muestran 3 hilos con que se trabaja en un código escrito en java.

Tenemos nuestra clase padre llamado: Hilos Concurrenci


Creamos el primer hilo, heredado de la clase padre lo cual mostrará un mensaje.

Cre

amos nuestra segunda clase heredado de la clase principal.


Creamos nuestra tercera clase, heredada de clase padre.

Fin

almente inicializamos todas las clases heredadas en la clase padre(lo cual vinieran a ser los

hilos).
Ejecutamos y vemos los resultados.

VIII. PROBLEMAS DE LA CONCURRENCIA

Según (Baeza, 2014)En los sistemas de tiempo compartido (aquellos con varios usuarios,

procesos, tareas, trabajos que reparten el uso de CPU entre estos) se presentan muchos problemas

debido a que los procesos compiten por los recursos del sistema. Imagine que un proceso está

escribiendo en la unidad de cinta y se le termina su turno de ejecución e inmediatamente después

el proceso elegido para ejecutarse comienza a escribir sobre la misma cinta. El resultado es una

cinta cuyo contenido es un desastre de datos mezclados. Así como la cinta, existen una multitud de

recursos cuyo acceso debe der controlado para evitar los problemas de la concurrencia.

El sistema operativo debe ofrecer mecanismos para sincronizar la ejecución de procesos:

semáforos, envío de mensajes, 'pipes', etc. Los semáforos son rutinas de software (que en su nivel

más interno se auxilian del hardware) para lograr exclusión mutua en el uso de recursos. Para

entender este y otros mecanismos es importante entender los problemas generales de concurrencia,

los cuales se describen enseguida.

 Condiciones de Carrera o Competencia: La condición de carrera (race condition) ocurre

cuando dos o más procesos accedan un recurso compartido sin control, de manera que el
resultado combinado de este acceso depende del orden de llegada. Suponga, por ejemplo,

que dos clientes de un banco realizan cada uno una operación en cajeros diferentes al

mismo tiempo.

 Postergación o Aplazamiento Indefinido(a): Esto se mencionó en el apartado anterior y

consiste en el hecho de que uno o varios procesos nunca reciban el suficiente tiempo de

ejecución para terminar su tarea. Por ejemplo, que un proceso ocupe un recurso y lo

marque como 'ocupado' y que termine sin marcarlo como 'desocupado'. Si algún otro

proceso pide ese recurso, lo verá 'ocupado' y esperará indefinidamente a que se 'desocupe'.

 Condición de Espera Circular: Esto ocurre cuando dos o más procesos forman una cadena

de espera que los involucra a todos. Por ejemplo, suponga que el proceso A tiene asignado

el recurso 'cinta' y el proceso B tiene asignado el recurso 'disco'. En ese momento al

proceso A se le ocurre pedir el recurso 'disco' y al proceso B el recurso 'cinta'. Ahí se forma

una espera circular entre esos dos procesos que se puede evitar quitándole a la fuerza un

recurso a cualquiera de los dos procesos.

 Condición de No Apropiación: Esta condición no resulta precisamente de la concurrencia,

pero juega un papel importante en este ambiente. Esta condición especifica que, si un

proceso tiene asignado un recurso, dicho recurso no puede arrebatársele por ningún motivo,

y estará disponible hasta que el proceso lo 'suelte' por su voluntad.

 Condición de Espera Ocupada: Esta condición consiste en que un proceso pide un recurso

que ya está asignado a otro proceso y la condición de no apropiación se debe cumplir.

Entonces el proceso estará gastando el resto de su time slice checando si el recurso fue

liberado. Es decir, desperdicia su tiempo de ejecución en esperar. La solución más común a

este problema consiste en que el sistema operativo se dé cuenta de esta situación y mande a
una cola de espera al proceso, otorgándole inmediatamente el turno de ejecución a otro

proceso.

 Condición de Exclusión Mutua: Cuando un proceso usa un recurso del sistema realiza una

serie de operaciones sobre el recurso y después lo deja de usar. A la sección de código que

usa ese recurso se le llama 'región crítica'. La condición de exclusión mutua establece que

solamente se permite a un proceso estar dentro de la misma región crítica. Esto es, que en

cualquier momento solamente un proceso puede usar un recurso a la vez. Para lograr la

exclusión mutua se ideo también el concepto de 'región crítica'. Para logar la exclusión

mutua generalmente se usan algunas técnicas para lograr entrar a la región crítica:

semáforos, monitores, el algoritmo de Dekker y Peterson, los 'candados'. Para ver una

descripción de estos algoritmos consulte

 Condición de Ocupar y Esperar un Recurso: Consiste en que un proceso pide un recurso y

se le asigna. Antes de soltarlo, pide otro recurso que otro proceso ya tiene asignado.

Los problemas descritos son todos importantes para el sistema operativo, ya que debe ser

capaz de prevenir o corregirlos. Tal vez el problema más serio que se puede presentar en un

ambiente de concurrencia es el 'abrazo mortal', también llamado 'trabazón' y en inglés deadlock. El

deadlock es una condición que ningún sistema o conjunto de procesos quisiera exhibir, ya que

consiste en que se presentan al mismo tiempo cuatro condiciones necesarias: La condición de no

apropiación, la condición de espera circular, la condición de exclusión mutua y la condición de

ocupar y esperar un recurso. Ante esto, si el deadlock involucra a todos los procesos del sistema, el

sistema ya no podrá hacer algo productivo. Si el deadlock involucra algunos procesos, éstos

quedarán congelados para siempre.

A continuación, tenemos ejemplo mediante código en Python explicando un poco mejor el

uso de hilos Con concurrencias.


IX. REFERENCIAS

Baeza, T. d. (2014). Materia SisOperativo. Obtenido de

https://sites.google.com/site/materiasisoperativo/unidad-2-administrador-del-proceso-y-

del-procesador/2-4-concurrencia-y-secuenciabilidad

Florido, M. Á. (s.f.). Obtenido de

https://www2.ulpgc.es/hege/almacen/download/20/20233/tema1.pdf

Loza Daso, E. (20 de Octubre de 2013). WordPress. Obtenido de

https://edwardlozadaso.wordpress.com/hilos/

StudentPlace. (18 de Septiembre de 2018). studentplace98blogspot. Obtenido de

https://studentplace98.blogspot.com/2018/09/concurrencia-y-secuencialidad-sistemas.html

UNAM, A. d. (2012). La Divisa del Nuevo Milenio. Obtenido de CONOCIMIENTOSWEB.NET:

https://conocimientosweb.net/dcmt/ficha19190.html#:~:text=Los%20procesos

%20cooperantes%2C%20cuando%20est%C3%A1n,lo%20conforman%20son

%20procesos%20cooperantes

Velásquez, D. (01 de 01 de 2008). Web Programación. Obtenido de

https://webprogramacion.com/concurrencia-de-procesos/

WordPress, J. a. (20 de Octubre de 2013). Blog de WordPress. Obtenido de

https://edwardlozadaso.wordpress.com/hilos/

También podría gustarte