Está en la página 1de 7

UNIVERSIDAD AUTÓNOMA DE SANTO DOMINGO

RECINTO SAN FRANCISCO DE MACORIS


INF324 – SISTEMAS OPERATIVOS

PREGUNTAS CAPÍTULO 5

1. ¿Qué son procesos concurrentes y para qué se utilizan?


2. Indique los tipos de procesos concurrentes
3. Nombre y explique brevemente los problemas clásicos de comunicación y
sincronización.
4. ¿Cuáles son los principales mecanismos de comunicación y sincronización?
5. Establezca la diferencia entre flujo de datos unidireccional y bidireccional.
6. ¿Qué es un Mutex?
7. ¿Qué son semáforos?
8. ¿Para qué sirve la memoria compartida?
9. ¿Qué son tuberías?
10. ¿En qué consiste la comunicación mediante archivos?

Preparado por Ing. Nelson Abreu


1. ¿Qué son procesos concurrentes y para qué se utilizan?

En general, la concurrencia será aparente siempre que el número de procesos sea


mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso
por procesador. La concurrencia será real cuando haya un proceso por procesador.
Aunque puede parecer que la intercalación y la superposición de la ejecución de
procesos presentan formas de ejecución distintas, se verá que ambas pueden
contemplase como ejemplos de procesos concurrentes y que ambas presentan los
mismos problemas, los cuales pueden resolverse utilizando los mismos mecanismos.

Existen diversas razones que motivan la ejecución de procesos concurrentes en un


sistema. Éstas son:

• Facilita la programación de aplicaciones al permitir que éstas se estructuren como


un conjunto de procesos que cooperan entre sí para alcanzar un objetivo común. Por
ejemplo, un compilador se puede construir mediante dos procesos:
El compilador propiamente dicho, que se encarga de generar código ensamblador, y
el proceso ensamblador que obtiene código en lenguaje máquina a partir del
ensamblador. En este ejemplo puede apreciarse la necesidad de comunicar a los dos
procesos.

• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo
que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en
paralelo con los demás. Hay que hacer notar, sin embargo, que esta división a veces
es difícil y no siempre es posible. Además, el aumento en la velocidad de ejecución
de la tarea sólo se puede conseguir si ejecutamos los distintos procesos en un
multiprocesador o una multicomputadora.

• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma simultánea


desde varios te males.

• Permite un mejor aprovechamiento de los recursos, en especial de la UCP ya que


se pueden aprovechar las fases de entrada - salida de unos procesos para realizar las
fases de procesamiento de otros.

2. Indique los tipos de procesos concurrentes.

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


como procesos independientes o 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 son 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 independientes como cooperantes, puede
producirse una serie de interacciones entre ellos. Estas interacciones pueden ser de
dos tipos:

• Interacciones motivadas 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 a 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 motivada 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. Estos
dos tipos de interacciones obligan al sistema operativo a incluir unos servicios que
permitan la comunicación y la sincronización entre procesos, servicios que se
presentarán a lo largo de este capítulo.

3. Nombre y explique brevemente los problemas clásicos de comunicación y


sincronización.

La interacción entre procesos se plantea en una serie de situaciones clásicas de


comunicación y sincronización. Estas situaciones junto con sus problemas se
presentan a continuación para demostrar la necesidad de comunicar y sincronizar
procesos. Todos ellos se resolverán a lo largo del presente capítulo mediante los
diferentes mecanismos de comunicación y sincronización que ofrecen los sistemas
operativos.

- El problema de la sección crítica.

Éste es uno de los problemas que con mayor frecuencia aparece cuando se
ejecutan procesos concurrentes, tanto si son cooperantes como independientes.
Considérese un sistema compuesto por n procesos {P1, P2, Pn} en el que cada
uno tiene un fragmento de código, que se denomina sección crítica. Dentro de la
sección crítica los procesos pueden estar accediendo y modificando y variables
comunes, registros de una base de datos, un archivo, en general cualquier
recurso compartido. La característica más importante de este sistema es que,
cuando un proceso se encuentra ejecutando código de la sección crítica, ningún
otro proceso puede ejecutar en su sección. Para ilustrar este problema se van a
presentar dos ejemplos en los que existe un fragmento de código que constituye
una sección critica. Considérese en primer lugar un sistema operativo que debe
asignar un identificador de proceso (PID) a dos procesos en un sistema
multiprocesador.
- Problema del productor-consumidor
El problema del productor-consumidor es uno de los problemas más habituales
que surge cuando se programan aplicaciones utilizando procesos concurrentes.
En este tipo de problemas uno o más procesos, que se denominan productores,
generan cierto tipo de datos que son utilizados o consumidos por otros procesos
que e denominan consumidores.
En esta clase de problemas es necesario disponer de algún mecanismo de
comunicación que permita a los procesos productor y consumidor intercambiar
información. Ambos procesos, además, deben sincronizar su acceso al
mecanismo de comunicación p a que la interacción entre ellos no sea
problemática: cuando el mecanismo de comunicación se llene, e] proceso
productor se deberá quedar bloqueado hasta que haya hueco para seguir
insertando elementos.

- El problema de los lectores-escritores


En este problema existe un determinado objeto, que puede ser un archivo, un
registro dentro de un archivo, etc., que va a ser utilizado y compartido por una
serie de procesos concurrentes. Algunos de estos procesos sólo van a acceder al
objeto sin modificarlo, mientras que otros van a acceder al objeto para modificar
su contenido. Esta actualización implica leerlo, modificar su contenido y
escribirlo. A los primeros procesos se les denomina lectores y a los segundos se
les denomina escritores. En este tipo de problemas existen una serie de
restricciones que han de seguirse:
• Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo.
Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni
escritor podrá acceder a él.
• Se permite, sin embargo, que múltiples lectores tengan acceso al objeto, ya que
ellos nunca van a modificar el contenido de este. En este tipo de problemas es
necesario disponer de servicios de sincronización que permitan a los procesos
lectores y escritores sincronizarse adecuadamente en el acceso al objeto.

- Comunicación cliente-servidor
En el modelo cliente-servidor, los procesos llamados servidores ofrecen una
serie de servicios a otros procesos que se denominan clientes. El proceso
servidor puede residir en la misma máquina que el cliente o en una distinta, en
cuyo caso la comunicación deberá realizarse a través de una red de
interconexión. Muchas aplicaciones y servicios de red, como el correo
electrónico y la transferencia de archivos, se basan en este modelo.
4. ¿Cuáles son los principales mecanismos de comunicación y sincronización?

Los principales mecanismos de comunicación que ofrecen los sistemas operativos


son los siguientes:

• Archivos.

• Tuberías.

• Variables en memoria compartida.

• Paso de mensajes.

Los principales mecanismos de sincronización que ofrecen los sistemas operativos


son:

• Señales.

• Tuberías.

• Semáforos,

• Mutex y variables condicionales,

• Paso de mensajes.

5. Establezca la diferencia entre flujo de datos unidireccional y bidireccional.

De acuerdo con el flujo de datos la comunicación puede ser unidireccional o


bidireccional. Un enlace es unidireccional cuando cada proceso conectado a él
únicamente puede enviar o recibir mensaje, pero no ambas cosas. Si cada proceso
puede enviar o recibir mensajes, entonces el paso de mensajes bidireccional.

6. ¿Qué es un Mutex?
Un mutex es el mecanismo de sincronización de procesos ligeros más sencillo y
eficiente. Los mutex se emplean para obtener acceso exclusivo a recursos
compartidos y para asegurar la exclusión mutua sobre secciones críticas.

7. ¿Qué son semáforos?

Es un mecanismo de sincronización que se utiliza generalmente en sistemas con


memoria compartida, bien sea un monoprocesador o un multiprocesador. Su uso en
una multicomputadora depende del sistema operativo en particular.
Un semáforo es un objeto con un valor entero, al que se le puede asignar un valor
inicial no negativo y al que sólo se puede acceder utilizando dos operaciones
atómicas: Wait y signal.

8. ¿Para qué sirve la memoria compartida?

La memoria compartida es un paradigma que permite comunicar a procesos que


ejecutan en la misma máquina, bien sea un monoprocesador o un multiprocesador.
Con este modelo de comunicación un proceso almacena un valor en una
determinada variable, y otro proceso puede acceder a ese valor sin más que
consultar la variable. De esta forma se consigue que los dos procesos puedan
comunicarse entre ellos

9. ¿Qué son tuberías?

Una tubería es un mecanismo de comunicación y sincronización. Desde el punto de


vista de su utilización, es como un pseudoarchivo mantenido por el sistema
operativo. Conceptualmente, cada proceso ve la tubería como un conducto con dos
extremos, uno de los cuales se utiliza para escribir o insertar datos y el otro para
extraer o leer datos de la tubería. La escritura se realiza mediante el servicio que se
utiliza para escribir datos en un chivo. De igual forma, la lectura se lleva a cabo
mediante el servicio que se emplea para leer de un archivo.

10. ¿En qué consiste la comunicación mediante archivos?

Un archivo es un mecanismo que puede emplearse para comunicar procesos. Por


ejemplo, un proceso puede escribir datos en un archivo y otro puede leerlos. El
empleo de archivos como mecanismo de comunicación presenta las siguientes
ventajas:
• Permite comunicar a un número potencialmente ilimitado de procesos. Basta con
que los procesos tengan permisos para acceder a los datos almacenados en un
archivo.
• Los servidores de archivos ofrecen servicios sencillos y fáciles de utilizar.

Este mecanismo, sin embargo, presenta una serie de inconvenientes que hacen que
en general no sea un mecanismo de comunicación ampliamente utilizado. Estos son:
• Es un mecanismo bastante poco eficiente, puesto que la escritura y lectura en disco
es lenta.
• Necesitan algún otro mecanismo que permita que los procesos se sincronicen en el
acceso a los datos almacenados en un archivo. Por ejemplo, es necesario contar con
mecanismos que permitan indicar un proceso cuando puede leer los datos de un
archivo.

También podría gustarte