Está en la página 1de 9

Instituto Hernando Arias de Saavedra

Análisis de Sistemas de Información

Trabajo Práctico

Alumno Responsable del Trabajo: Cesar, Suarez

Curso: Primero

Materia: Sistemas Operativos

Sede: Posadas

Docente Responsable del espacio: Coronel, Miriam

Fecha de Entrega: 23 de Octubre del 2022, 23:00hs.

Año: 2022
Actividad

Los dos temas centrales de los sistemas operativos modernos son la multiprogramación y el proceso
distribuido. La concurrencia es fundamental para ambos temas y fundamental para el diseño de la
tecnología de los sistemas operativos
CONCURRENCIA ENTRE PROCESOS
Los temas fundamentales del diseño de SO están relacionados con la gestión de procesos e hilos:
§  Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-
procesador
§  Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema
multiprocesador.
§  Procesamiento Distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas
de computadores múltiples y distribuidos
La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación
entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de
varios procesos y asignación del tiempo de procesador a los procesos.
 
CUESTIONARIO:
1.       ¿Cuáles son los principios generales de la concurrencia?
2.       Ventajas de la concurrencia
3.       ¿Cómo se puede clasificar la interacción entre procesos?
4.       ¿Qué ocurre cuando hay competencia entre procesos?
5.       ¿Qué es exclusión mutua?
6.       ¿Cuáles son los requisitos para la exclusión mutua?
7.       ¿Qué es un semáforo?
8.       En qué consiste la comunicación entre procesos (IPC)?
9.       Describa tipos de comunicación
10.   Describa el problema lectores-escritores
1) En un sistema de multiprogramación con un único procesador, los procesos se intercalan en el
tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y
produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce
beneficios en la eficiencia del procesamiento y en la estructuración de los programas.

La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento


concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de
ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos,
de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:

1. Compartir recursos globales es riesgoso

2. Para el sistema operativo es difícil gestionar la asignación óptima de recursos.

Las dificultades anteriores también se presentan en los sistemas multiprocesador.

El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos
recursos.

2)

*Hacer un mejor uso de los procesadores de computadora

Ahora las CPU son de múltiples núcleos y cada vez más núcleos. Si un programa es de un solo
subproceso, solo puede usar un núcleo de todos modos, y ninguna cantidad de núcleos de CPU
puede mejorar el rendimiento de la máquina. Si un programa es multiproceso, puede utilizar varios
núcleos de la CPU para realizar operaciones. Cuantos más núcleos de la CPU, más rápido se puede
ejecutar.

*Velocidad de respuesta más rápida

El subproceso múltiple permite ejecutar una serie de operaciones simultáneamente, lo que puede
mejorar la velocidad de respuesta del programa. Por ejemplo, cuando un usuario realiza un pedido,
incluye insertar datos del pedido, generar una instantánea del pedido, enviar un correo electrónico
para notificar al vendedor y registrar la cantidad de bienes vendidos.

Una vez finalizadas estas operaciones comerciales, el usuario debe esperar 1 segundo. El usuario
puede esperar 0,5 s para operaciones como generar instantáneas de pedidos y enviar correos
electrónicos a otros subprocesos para su procesamiento.

*Más fácil de desarrollar

La programación concurrente se consideró al comienzo del diseño de Java y proporcionó un modelo


de programación consistente. Los programadores que usan Java pueden enfocarse más en su
negocio sin tener que considerar cómo usar el multiproceso.
3)

Se puede clasificar la interactúan de los procesos en función del nivel de conocimiento que cada
proceso tiene de la existencia de los demás. Existen tres niveles de conocimiento:

1) Los procesos no tienen conocimiento de los demás: son procesos independientes que no operan
juntos. Ej: la multiprogramación de procesos independientes. Aunque los procesos no trabajen
juntos, el sistema operativo se encarga de la "competencia" por los recursos.

2) Los procesos tienen un conocimiento indirecto de los otros: los procesos no conocen a los otros
por sus identificadores de proceso, pero muestran cooperación el objeto común.

3) Los procesos tienen conocimiento directo de los otros: los procesos se comunican por el
identificador de proceso y pueden trabajar conjuntamente.

4)

Cuando hay procesos en competencia, se deben solucionar dos problemas de control:

1) la necesidad de exclusión mutua. Suponiendo que dos procesos quieren acceder a un recurso no
compartible. A estos recursos se les llama "recursos críticos" y la parte del programa que los utiliza
es la "sección crítica” del programa. Es importante que sólo un programa pueda acceder a su
sección crítica en un momento dado.

Hacer que se cumpla la exclusión mutua provoca un interbloqueo.

2) la inanición si tres procesos necesitan acceder a un recurso, P1 posee al recurso, luego lo


abandona y le concede el acceso al siguiente proceso P2, P1 solicita acceso de nuevo y el sistema
operativo concede el acceso a P1 Y P2 alternativamente, se puede negar indefinidamente a P3 el
acceso al recurso. El control de competencia involucra al sistema operativo, porque es el que asigna
los recursos.

El control de competencia involucra al sistema operativo, porque es el que asigna los recursos.

* Cooperación entre procesos por compartimiento:

Comprende los procesos que interactúan con otros sin tener conocimiento explícito de ellos. Ej. :
Varios procesos pueden tener acceso a variables compartidas.

Los procesos deben cooperar para asegurar que los datos que se comparten se gestionan
correctamente. Los mecanismos de control deben garantizar la integridad de los datos compartidos.

* Cooperación entre procesos por comunicación:

Los distintos procesos participan en una labor común que une a todos los procesos.

La comunicación sincroniza o coordina las distintas actividades, está formada por mensajes de
algún tipo. Las primitivas para enviar y recibir mensajes, vienen dadas como parte del lenguaje de
programación o por el núcleo del sistema Operativo.
5)

Es un mecanismo empleado en el diseño de los sistemas operativos para evitar los problemas de
competencia por recursos, se basa en definir una zona o región crítica la cual está marcada por las
instrucciones que hacen uso del recurso en competencia (recurso crítico).

6) Requisitos para la Exclusión Mutua.

1. Sólo un proceso, de todos los que poseen secciones críticas por el mismo recurso compartido,
debe tener permiso para entrar en ella en un momento dado.

2. Un proceso que se interrumpe en una sección no crítica debe hacerlo sin interferir con los otros
procesos.

3. Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado
indefinidamente, no puede permitirse el interbloqueo O la inanición.

4. Si ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe
poder hacerlo sin demora.

5. No se debe suponer sobre la velocidad relativa de los procesos o el número de procesadores.

6. Un proceso permanece en su sección crítica por un tiempo finito.

Una manera de satisfacer los requisitos de exclusión mutua es dejar la responsabilidad a los
procesos que deseen ejecutar concurrentemente.

Tanto si son programas del sistema como de aplicación, los procesos deben coordinarse unos con
otros para cumplir la exclusión mutua, sin ayuda del lenguaje de programación o del sistema
operativo. Estos métodos se conocen como soluciones por software.

7) Semáforo

Para solucionar problemas de procesos concurrentes, se diseñó un S.O. como un conjunto de


procesos secuenciales, eficiente y fiable para dar soporte a la cooperación. Los procesos de usuario
podrían utilizar estos mecanismos si el procesador y el S.O. los hacían disponible.

El principio fundamental es el siguiente, 20 procesos pueden cooperar por medio de simples


señales, de manera que se pueda obligar a un proceso a detener en una posición determinada hasta
que reciba una señal específica. Para la señalización se usan variables especiales llamadas
semáforos "S", los procesos ejecutan las primitivas wait(s) si la señal aun no se transmitió, el
proceso se suspende hasta que tiene lugar la transmisión.
8) Corresponde a una función básica de los sistemas operativos. Pueden comunicarse por
intermedio de compartir espacios de memoria, que podrán ser variables o buffers. O por intermedio
de las rutinas IPC, las cuales permiten a los procesos comunicarse y sincronizarse por medio de
mensajes.

Esta comunicación es establecida siguiendo los parámetros o reglas de los protocolos de


comunicación, en donde los más usados son IP para la capa de red, protocolos de control de
retransmisión, para la capa de transporte, protocolo de transferencia de archivos y de hipertexto para
la capa de aplicación.

Estos procesos que se comunican, no necesariamente deben estar ejecutándose en las misma
máquina, estos pueden ejecutarse desde maquinas distantes y conectadas a través de una red. Entre
las técnicas de IPC se encuentran métodos para paso de mensajes, sincronización, memoria
compartida y llamadas de procedimientos remotos (RPC). La aplicación o ejecución varía
dependiendo el ancho de banda y la latencia de la red, en la comunicación entre procesos y también
del tipo de datos que se están transmitiendo.

9) Tipos de comunicación

*Comunicación Síncrona: Corresponde al trámite de comunicación en el que el proceso que envía


permanecerá bloqueado hasta la recepción de la petición.

*Comunicación asíncrona: A diferencia de la síncrona, los procesos pueden seguir el trámite de su


ejecución, sin necesidad de bloquearse una vez enviado el mensaje.

*Persistente: corresponde al tipo de comunicación en el que el receptor no necesariamente debe


estar activo en el momento en que se está estableciendo comunicación y el mensaje que se está
emitiendo puede ser guardado el tiempo que transcurra hasta que el receptor se encuentre en estado
activo.

*Momentánea: este tipo de comunicación depende directamente del estado activo del receptor. Si
este no se encuentra activo no se entregara el mensaje. Es decir que para que exista una transmisión
exitosa deberá estar el receptor activo.

*Directa: se caracterizan ya que la especificación de este tipo de comunicación es dada a partir de


las primitivas send y receive, en donde no hay entidades intermedias en el proceso y donde el
receptor debe conocer la identidad de todos los posibles emisores y podrá recibir mensajes de
cualquier emisor, a diferencia del emisor el cual debe especificar a quien va dirigido el mensaje.

*Indirecta: en este tipo de comunicación también se maneja las primitivas, la diferencia es que
deben especificar un intermediario como destino y como fuente y son llamados mailbox o buzones.
Estos mailbox son creados a petición de un proceso usuario. Entre sus características encontramos
que un mismo mailbox puede recibir mensajes de diferentes procesos y así mismo enviar a otros
procesos, causando que un proceso no necesariamente deba saber la identidad del proceso emisor.

Existen dos tipos de mailbox:


- Privado: en el cual solo operan el proceso que lo creo y su descendencia, se elimina cuando el
proceso que solicito su creación y sus hijos mueren o terminan.

- Publico: el propietario de este es el sistema operativo o el subsistema de comunicación, este


mailbox puede ser utilizado por cualquier proceso. Este puede permanecer persistente aunque los
procesos generadores terminen.

*Simétrica: en este tipo de comunicación todos los procesos pueden enviar y recibir mensajes a
través de ella y se denomina bidireccional en el caso de la comunicación en dos sentidos de los
procesos comunicados.

*Asimétrica: este tipo de comunicación se caracteriza por que solo uno de los procesos podrá
enviar mensajes y los demás procesos solo reciben y teniendo en cuenta la anterior característica se
denomina unidireccional.

10)

Un ejemplo de un problema de concurrencia sería el siguiente: dados dos procesos A (productor) y


B (consumidor) que se ejecutan indefinidamente en el tiempo, el proceso A debe recibir tiempo de
ejecución antes que B. Tras esto, el proceso B debe recibir su oportunidad de ejecución, dando paso
de nuevo al proceso A y así sucesivamente, siguiendo un esquema de alternancia estricta.

Recuerde que el planificador de procesos, al desconocer la naturaleza de los procesos y sus


objetivos, no dispone de información suficiente para garantizar la secuencia de ejecución descrita en
el ejemplo anterior. De este modo, suponiendo que ambos procesos se encuentran en estado
preparado, podría seleccionar al proceso B para pasar a estado activo antes de seleccionar al proceso
A, situación que no es deseada.

El planificador de procesos, como hemos visto en capítulos anteriores, emplea criterios de


planificación que no tienen en consideración el objetivo de los procesos. Podemos decir que este
desconoce cuál es el propósito de los procesos; únicamente puede observar si presentan un
comportamiento más o menos interactivo.

Por tanto, el programador, a la hora de modelar los procesos, debe emplear los mecanismos de
arbitraje que ofrece el sistema operativo y que permitirían resolver el problema de concurrencia que
se plantee.

Mecanismos de arbitraje
Los mecanismos de arbitraje que ofrece el sistema operativo son dos principalmente:

Mecanismos de sincronización: el sistema operativo ofrece mecanismos que permiten a los procesos
coordinar su ejecución para conseguir el objetivo sin que sucedan situaciones no deseadas, como
por ejemplo que dos o más procesos coincidan simultáneamente en el acceso a un cierto recurso que
no se puede compartir.

Mecanismos de mensajería: el sistema operativo ofrece mecanismos de comunicación entre


procesos mediante mensajes. El intercambio de mensajes entre procesos permite coordinarlos.

Programación concurrente

El término programación concurrente se emplea con frecuencia para referirse a un conjunto de


programas que funcionan en cooperación.

Hay tres formas de interacción entre procesos cooperativos:

Concurrencia: Hay un recurso común, si varios procesos modificaran la misma información a la


vez, cada uno podría destruir parte del trabajo de los demás. Si lo hace uno tras otro, en serie, se
obtendrá el resultado correcto.

Sincronización: El Sistema Operativo se encarga de enviarle señales a los procesos para coordinar
su evolución y conseguir que progrese armónicamente.

Comunicación: El S.O. transmite mensajes entre los procesos, que se usan para intercambiar, enviar
o recibir información.

Se le llama programación concurrente ya que la concurrencia fue la primera forma de iterar recursos
entre procesos cooperativos.

Sección crítica

Una sección crítica se trata de una sección del código que no debe ser ejecutada por varios procesos
o hilos simultáneamente. Un ejemplo de sección crítica es la sección de código en la que se accede
a un recurso compartido. Para evitar el acceso simultáneo a la sección crítica se emplean
mecanismos que garantizan la exclusión mutua.

La exclusión mutua se debe realizar de forma coordinada y eficiente, para ello se requiere:

No más de un proceso por sección crítica y recurso compartido.

El mismo proceso no puede usar el mismo recurso compartido indefinidamente.

Todo proceso debe entrar antes o después a usar el recurso.

Si el recurso está sin uso, cualquiera que lo requiera dispondrá de él inmediatamente.

Si hay varios esperando usar el recurso y éste se libera, uno de los que estaba esperando lo usará
durante un tiempo determinado.
Para llevar esto a cabo se necesita un protocolo que indique cuando el recurso está libre y cuando
está siendo ocupado.

También podría gustarte