REPÚBLICA BOLIVARIANA DE VENEZUELA
UNIVERSIDAD ALEJANDRO DE HUMBOLT
CÁTEDRA: SISTEMAS OPERATIVOS II
|
Comunicación y
sincronización de los sistemas operativos
Autores:
Baldan
Juan
Chirinos
Mervin
_____________________________________________________________________________________________
INTRODUCCIÓN
La comunicación entre procesos; es la comunicación necesaria, sí se
desea que varios procesos puedan colaborar para realizar una misma tarea. La sincronización
de procesos; es el funcionamiento coordinado en la resolución de una tarea
encomendada.
Los sistemas operativos ofrecen mecanismos básicos de comunicación, que
permiten transferir cadenas de bytes. Deben ser los procesos que se comunican
quienes interpreten el significado de las cadenas transferidas para su labor
coordinada.
Los mecanismos de comunicación y sincronización son dinámicos, es decir,
cuando se necesita un mecanismo de este estilo, se crea, se usa y se destruye,
de forma que no se establezca de manera definitiva ningún mecanismo de
comunicación, ya que ellos podrían producir efectos indeseados. En pocas
palabras la comunicación es algo puntual. Los servicios básicos de comunicación
son:
- Crear: el proceso solicita la creación del mecanismo.
- Enviar o escribir: el proceso emisor envía información al proceso receptor.
- Recibir o leer: el proceso receptor recibe información.
- Destruir: el proceso solicita la destrucción del mecanismo de comunicación.
La comunicación puede ser síncrona; donde los dos procesos han de
ejecutar servicios de forma simultánea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta el
servicio recibir. La comunicación
también puede ser asíncrona; donde el emisor hace el envío y prosigue su
ejecución. El sistema operativo ofrece un almacenamiento intermedio para
guardar la información enviada, hasta que el receptor la solicite.
_____________________________________________________________________________________________
Comunicación y
sincronización de los sistemas operativos
Los procesos que se 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.
Tanto si los procesos son
independientes como cooperantes, pueden producirse una serie de interacciones
entre ellos. Estas interacciones pueden ser de dos tipos:
- Interacciones motivadas porque los procesos que 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. Como 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; 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 y sincronizar a los dos procesos.
Estos dos tipos de interacciones obligan al sistema operativo a incluir
mecanismo y servicios que permitan la comunicación y la sincronización entre
procesos.
Indicadores de eventos más comunes
Haciendo enfoque sobre los sistemas, los indicadores de eventos pueden
ser cualquier aviso, advertencia, informe, señal o notificación, con la cual el
sistema proporcione alguna información útil para el usuario final o para su
propio beneficio. Entre estos indicadores podemos mencionar:
Avisos: son
los que proporcionan alertas sobre situaciones en la cual pueden ocurrir sucesos
perjudiciales para el sistema o archivos del usuario.
Alertas:
proporcionan información sobre estados críticos del sistema o de las
aplicaciones.
Ayuda: proporcionan
tips, consejos y guías para el uso correcto y eficaz del sistema.
Información: son
los que muestran información de acontecimientos del sistema o algún hecho
relevante.
Solicitudes: notifican
al usuario que alguna aplicación requiere información delicada o permisos
adicionales y requiere una respuesta de afirmación o rechazo ante dicho suceso.
Buzones (mailboxes)
Son mecanismos que permiten a los procesos intercambiar información
durante su ejecución, mediante el envió de mensajes entre procesos. Se basa en
la utilización de una zona de memoria compartida que gestiona el sistema
operativo directamente y que por tanto, permanecerá oculta a los procesos. De
esta manera el proceso que tiene la necesidad de enviar un mensaje a otro,
deposita la información en esta zona de memoria compartida y el receptor lo lee
posteriormente.
Las llamadas al sistema operativo para enviar o recibir mensajes
sincronizan los procesos, ya que éstos tendrán que esperar por los mismos antes
de continuar su ejecución y procesamiento. Existen dos posibles tipos de
comunicación:
Directa: los
procesos envían y reciben los mensajes directamente entres sí, de manera que se
asocia un enlace bidireccional único entre cada dos procesos. La principal
desventaja de este esquema es que cada proceso debe conocer exactamente el
nombre del destinatario o el remitente de los mensajes.
Indirecta: los
mensajes se envían y reciben a través de los mailboxes o buzones de correo, cada uno de estos buzones tiene un único
identificativo que le distingue de los demás. Con este método cada proceso
puede estar conectado al número de buzones que desee, consiguiendo comunicarse
con cualquier número de procesos.
Hay que destacar que la comunicación entre dos procesos sólo se podrá realizar
si comparten un buzón, que puede ser unidireccional o bidireccional. Cada buzón
puede ser compartido por varios procesos y cada proceso puede tener varios
buzones asociados.
Con los buzones se pueden emplear cuatro formas diferentes de
comunicación:
Buzón limitado: de un
proceso a otro.
Buzón de entrada: de varios a uno.
Buzón de salida: de
uno a varios.
Buzón múltiple: varios
procesos entre sí con el mismo buzón.
Almacenamiento y archivos compartidos
Un archivo o fichero informático es una entidad lógica compuesta por una
secuencia finita de bytes, almacenada en un sistema de archivos ubicada en la
memoria secundaria de un ordenador. Los archivos son agrupados en directorios
dentro del sistema de archivos y son identificados por un nombre de archivo. El
nombre forma la identificación única en relación a los otros archivos en el
mismo directorio.
Los archivos se utilizan cuando se desea almacenar datos de manera
persistente, o para guardarlos en memoria secundaria con el fin de no utilizar
memoria primaria, dado que esta última es normalmente más escasa que la
anterior.
Dependiendo de cada sistema de archivos, los ficheros pueden tener
atributos particulares como, por ejemplo, fecha de creación, fecha de última
modificación, dueño y permisos de acceso. El tipo de un archivo es
caracterizado por la organización de los datos contenidos y la interpretación
que realiza el software que los escribe o los lee.
Para cualquier sistema ordenado, las unidades de almacenamiento son
aquellas que permiten guardar física o virtualmente archivos de datos de todo
tipo. Específicamente en la informática, las unidades de almacenamiento serán
todos aquellos dispositivos, internos o externos, que almacenan la información
de un sistema dado. Los dispositivos diferirán entre sí en forma, tamaño y uso,
pero en conjunto todos contribuyen a la conservación de datos relevantes.
Los aspectos claves para elegir la tecnología de almacenamiento
incluyen: confiabilidad, capacidad, rendimiento, complejidad, facilidad de
administración y costo.
El uso compartido de archivos permite que los usuarios puedan compartir
cualquier tipo de archivos, aplicaciones o información en línea, mediante una
red informal de computadoras que operan el mismo software.
Los archivos de uso compartido son una propiedad de un archivo informático
que tiene la característica de ser accedido o manipulado por múltiples personas,
computadoras, sesiones o programas.
Los archivos pueden compartirse entre distintas computadoras de una red,
con diferentes permisos para cada una de ellas, entre distintas computadoras
por internet con programas especiales, entre ellos el peer to peer, entre distintas sesiones de usuarios de un sistema
operativo o entre distintos programas que utilizan iguales archivos.
En los sistemas operativos no solo se decide quién puede ver un archivo,
sino también que puede hacer con dicho archivo el destinatario, estos permisos
son llamados permisos de uso compartido, en los cuales se dispone de dos
opciones:
Lectura: con
esta opción los usuarios pueden abrir un archivo, pero no modificarlo ni eliminarlo.
Lectura y escritura: con esta opción los usuarios pueden abrir, modificar o eliminar un
archivo.
Primitivas enviar y recibir - Formatos de los
mensajes (encabezado, cuerpo)
Un mensaje es un contenedor que se emplea para intercambiar información
entre dos o más procesos. Los mensajes tienen un cierto formato generalmente
compuesto por una cabecera, que contiene información sobre la fuente y el
destinatario, y un cuerpo, que contiene información específica.
Los mecanismos de mensajería se refieren al conjunto de funcionalidades
que permiten al sistema operativo realizar la entrega de un mensaje a uno o
varios procesos. Mediante dicho mecanismo también es posible resolver problemas
de concurrencia.
Los sistemas operativos generalmente ofrecen dos llamadas al sistema
para que un proceso pueda enviar y recibir mensajes:
send(destino – mensaje): Envía un
mensaje a un destino.
receive(fuente – mensaje): Recibe un mensaje
de una fuente.
La primera llamada envía un mensaje a un destino dado, y la segunda
recibe un mensaje de un origen dado (o de cualquiera si al receptor no le
importa). Si no hay un mensaje disponible, el receptor podría bloquearse hasta
que uno llegue. Como alternativa, podría regresar de inmediato con un código de
error.
Los sistemas de transferencia de mensajes tienen muchos problemas y aspectos
de diseño complicados que no se presentan con otros sistemas de transferencia
como lo son los semáforos ni con los monitores, sobre todo si los procesos en
comunicación están en diferentes máquinas conectadas por una red. Como ejemplo;
se pueden perder mensajes en la red, para protegerse contra la pérdida de
mensajes, el emisor y el receptor pueden convenir que, tan pronto como se
reciba un mensaje, el receptor enviará de regreso un mensaje especial de acuse
de recibo o confirmación. Si el emisor no recibe el acuse dentro de cierto
intervalo de tiempo, retransmitirá el mensaje.
Por otro lado, si el mensaje en sí se recibe correctamente, pero se
pierde el acuse de recibo, el emisor retransmitirá el mensaje, de modo que el
receptor lo recibirá dos veces. Es indispensable que el receptor pueda distinguir
un mensaje nuevo de la retransmisión de uno viejo. Por lo general, este
problema se resuelve incluyendo números de secuencias consecutivas en cada
mensaje original. Si el receptor recibe un mensaje que tiene el mismo número de
secuencia que uno anterior, sabrá que el mensaje es un duplicado y podrá
ignorarlo.
La verificación de autenticidad es otro problema en los sistemas de
mensajes: ¿Cómo puede el cliente saber que se está comunicando con el verdadero
servidor de archivos y no con un impostor?
En el otro extremo del espectro, hay aspectos de diseño que son
importantes cuando el emisor y el receptor están en la misma máquina. Uno de
éstos es el rendimiento. El copiado de mensajes de un proceso a otro siempre es
más lento que efectuar una operación de semáforo o entrar en un monitor.
Aplicación a partir de un sistema operativo
Son programas que utilizan los servicios básicos del sistema operativo (por
eso dependen de él) y realizan una gestión concreta y especializada, entre las
aplicaciones más comunes tenemos:
Procesadores de texto: aplicaciones diseñadas para editar y/o procesar texto, logrando
documentos de alta calidad.
Hojas de cálculo: aplicaciones especialmente diseñadas para introducir, calcular,
manipular y analizar conjuntos de números.
Presentaciones automatizadas: aplicaciones que permiten al usuario crear y editar presentaciones
atractivas, incluyendo imágenes y sonidos.
Navegadores de Internet: aplicaciones diseñadas para proveer acceso a Internet, sus servicios y
sus recursos.
Administradores de bases de datos: aplicaciones diseñadas para acceder, almacenar y procesar grandes
colecciones de datos, en una forma eficiente.
Desarrolladores de sitios web: aplicaciones que brindan al usuario las herramientas necesarias para
diseñar, crear, editar y publicar páginas y sitios Web.
Multimedia: Programas
orientados a la creación de material donde usted podrá combinar imágenes, sonido
y texto para desarrollar material atractivoen la computadora.
Antivirus: Programas
orientados a la protección de las computadoras que hayan sido infectadas por virus.
Los virus son programas introducidos imprevistamente en la memoria de una
computadora que al activarse, destruye total o parcialmente la información
almacenada.
Programas de comunicación: Programas orientados a la comunicación entre computadoras. Por lo
general son utilizados cuando se maneja una red de computadoras, o se quiere
dar soporte a distancia de una computadora a otra.
Suelen ir unidos al hardware que soporta el tipo de interconexión
requerido: red de área local, conexión a fax, a módem, entre otros. Este
software tiene un carácter básico en los grandes ordenadores, puesto que su
forma de trabajo normal requiere el enlace permanente con un gran número de usuarios
y periféricos.
Lenguajes de programación: Los lenguajes de programación nos permiten crear aplicaciones para
resolver problemas específicos de empresas o personas a través de la
computadora. Un lenguaje de programación está formado por un conjunto de
palabras (Instrucciones) y una serie de reglas para escribir adecuadamente
estas palabras (sintaxis) con la finalidad de que sean entendibles por la computadora.
Aclarando que un programa es un conjunto de instrucciones con secuencia lógica
para realizar una tarea específica en la computadora.
Estos programas son los que emplean más frecuentemente los usuarios y su
variedad está limitada sólo por los que los crean. Algunos programas o aplicaciones
pueden realizar tareas amplias y variadas, otros están específicamente
diseñados para solucionar problemas muy concretos.
_____________________________________________________________________________________________
CONCLUSIÓN
Finalmente podemos decir que en muchos casos, los procesos se reúnen para
realizar tareas en conjunto, a este tipo de relación se le llama procesos
cooperativos. Para lograr la comunicación, los procesos deben sincronizarse, de
no ser así pueden ocurrir problemas no deseados. La sincronización es la
transmisión y recepción de señales que tiene por objeto llevar a cabo el
trabajo de un grupo de procesos cooperativos.
Es la coordinación y cooperación de un conjunto de procesos para
asegurar la comparación de recursos de cómputo. La sincronización entre
procesos es necesaria para prevenir y corregir errores de sincronización
debidos al acceso concurrente a recursos compartidos, tales como estructuras de
datos o dispositivos de entrada/salida, de procesos contendientes. La
sincronización entre procesos también permite intercambiar señales de tiempo entre
procesos cooperantes para garantizar las relaciones específicas de precedencia
impuestas por el problema que se resuelve.
Sin una sincronización adecuada entre procesos, la actualización de variables
compartidas puede inducir a errores de tiempo relacionados con la concurrencia
que son con frecuencia difíciles de depurar. Una de las causas principales de
este problema es que procesos concurrentes puedan observar valores
temporalmente inconsistentes de una variable compartida mientras se actualizan.
Una aproximación para resolver este problema es realizar actualizaciones de
variables compartidas de manera mutuamente exclusiva. Se pueden mejorar
permitiendo que a lo más un proceso entre a la vez en la sección crítica de
código en la que se actualiza una variable compartida o estructura de datos en
particular.
Para que los procesos puedan sincronizarse es necesario disponer de
servicios que permitan bloquear o suspender bajo determinadas circunstancias la
ejecución de un proceso.
No hay comentarios:
Publicar un comentario