Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo Práctico
Curso: Primero
Sede: Posadas
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.
El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos
recursos.
2)
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.
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.
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)
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.
El control de competencia involucra al sistema operativo, porque es el que asigna los recursos.
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.
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).
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.
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
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
*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.
*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.
*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)
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.
Programación concurrente
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:
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.