jueves, 28 de enero de 2016

Comunicación entre procesos

Resumen de las clases dictadas el 16 diciembre

1.     INTRODUCCIÓN

Con el paso del tiempo los sistemas operativos han ido evolucionando y mejorando su interfaz gráfica, actualmente los usuarios pueden con un simple clic realizar la acción que desean, pero cuando recién aparecieron no sucedía esto, en el  sistema operativo MS-DOS los usuarios debían conocer un poco más allá en  el manejo de un computador para realizar hasta la actividad más sencilla, por ejemplo para  abrir un simple archivo se necesitan comandos, así mismo para cerrarlo etc., era todo un trámite, nada comparado con la actualidad.

Así como mejoro la interfaz gráfica también la forma interna de trabajar en los sistemas operativos, es por ello que surge la necesidad de que los procesos se comuniquen entre sí, para que cada uno sepa que está realizando el proceso vecino y así los dos no se encuentren realizando la misma tarea y utilizando recursos para nada. 

2.      OBJETIVO

Conocer que implica la comunicación entre procesos, además una introducción a MS-DOS y sus comandos.  

3.     MARCO TEÓRICO


3.1 COMUNICACIÓN ENTRE PROCESOS


El desarrollo de aplicaciones concurrentes involucra el uso de mecanismo. Estos mecanismos conocidos genéricamente como mecanismo de comunicación entre procesos (IPC) permiten que los distintos procesos que conforma una aplicación “hablen entre sí”.

Existen tres cuestiones a analizar en la comunicación de procesos.

  • ·         La primera se alude a cómo un proceso puede pasar información a otro (Condiciones de carrera).
  • ·         La segunda está relacionada con hacer que dos o más procesos no se interpongan entre sí.
  • ·         La tercera trata acerca de obtener la secuencia apropiada cuando hay dependencias presentes.
Figura 1. Comunicación entre procesos, de manera gratifica.  


3.1.1        CONDICIONES DE CARRERA


frecuentemente los procesos que trabajan en conjunto pueden compartir cierto espacio de almacenamiento en el que pueden leer y escribir datos. 
Para ver cómo funciona la comunicación entre procesos en la práctica, consideremos un ejemplo simple pero común: un spooler de impresión. Cuando un proceso desea imprimir un archivo, introduce el nombre del archivo en un directorio de spooler especial.

Otro proceso, el demonio de impresión, comprueba en forma periódica si hay archivos que deban imprimirse y si los hay, los imprime y luego elimina sus nombres del directorio.

Imagine que nuestro directorio de spooler tiene una cantidad muy grande de ranuras, numeradas como 0, 1, 2,…, cada una de ellas capaz de contener el nombre de un archivo. Imagine también que hay dos variables compartidas: sal, que apunta al siguiente archivo a imprimir, y ent, que apunta a la siguiente ranura libre en el directorio. Estas dos variables podrían mantenerse muy bien en un archivo de dos palabras disponible para todos los procesos. En cierto momento, las ranuras de la 0 a la 3 están vacías (ya se han impreso los archivos) y las ranuras de la 4 a la 6 están llenas (con los nombres de los archivos en la cola de impresión). De manera más o menos simultánea, los procesos A y B deciden que desean poner en cola un archivo para imprimirlo.



Figura 2. Dos procesos desean acceder a la memoria compartida al mismo tiempo.

3.2.1        REGIONES CRÍTICAS.


El problema de evitar las condiciones de carrera también se puede formular de una manera abstracta. Parte del tiempo, un proceso está ocupado realizando cálculos internos y otras cosas que no producen condiciones de carrera. Sin embargo, algunas veces un proceso tiene que acceder a la memoria compartida o a archivos compartidos, o hacer otras cosas críticas que pueden producir carreras. Esa parte del programa en la que se accede a la memoria compartida se conoce como región crítica o sección crítica. Si pudiéramos ordenar las cosas de manera que dos procesos nunca estuvieran en sus regiones críticas al mismo tiempo, podríamos evitar las carreras.

Aunque este requerimiento evita las condiciones de carrera, no es suficiente para que los procesos en paralelo cooperen de la manera correcta y eficiente al utilizar datos compartidos. Necesitamos cumplir con cuatro condiciones para tener una buena solución:


  •      No puede haber dos procesos de manera simultánea dentro de sus regiones críticas.
  •           No pueden hacerse suposiciones acerca de las velocidades o el número de CPUs.
  •      Ningún proceso que se ejecute fuera de su región crítica puede bloquear otros procesos.
  •      Ningún proceso tiene que esperar para siempre para entrar a su región crítica.

Figura 3. Exclusión mutua por regiones críticas.

3.1.3        EXCLUSIÓN MUTUA CON ESPERA OCUPADA

Es lograr la exclusión mutua, de manera que mientras un proceso esté ocupado actualizando la memoria compartida en su región crítica, ningún otro proceso puede entrar a su región crítica y ocasionar problemas.

En un sistema con un solo procesador, la solución más simple es hacer que cada proceso deshabilite todas las interrupciones justo después de entrar a su región crítica y las rehabilite justo después de salir. Con las interrupciones deshabilitadas, no pueden ocurrir interrupciones de reloj. Después de todo, la CPU sólo se conmuta de un proceso a otro como resultado de una interrupción del reloj o de otro tipo, y con las interrupciones desactivadas la CPU no se conmutará a otro proceso. Por ende, una vez que un proceso ha deshabilitado las interrupciones, puede examinar y actualizar la memoria compartida sin temor de que algún otro proceso intervenga.

3.2  MS-DOS


El MS-DOS (MicroSoft Disk Operating System) es un sistema operativo anterior al lanzamiento del reconocido Windows, con el objetivo de facilitar la comunicación entre el usuario y el ordenador, y utilizar eficientemente los recursos disponibles. Este S.O. contiene numerosas herramientas, para realizar tareas de administración como visualización del contenido de un disco, creación de archivos, etc.

No posee interfaz gráfica de archivos, sino que se utiliza mediante línea de comandos, es decir, se comanda mediante órdenes escritas.


Figura 4. Interfaz de MS-DOS

Para que el sistema entienda una orden que ingresemos, debemos respetar ciertos parámetros:

  • ·         Escribir correctamente la ruta de acceso (incluyendo el directorio raíz)
  • ·         Escribir el comando respetando la sintaxis
  • ·         No exceder el límite de caracteres

3.2.1        COMANDOS PARA LA GESTIÓN DE DIRECTORIOS


Comando: MD

Etimología: Make Directory
Función: Crear directorios
Sintaxis: MD [unidad/ruta] <nombre>

Comando: DIR
Etimología: De directorio
Función: Procesar una visualización de todos los ficheros, directorios, de la ruta en que nos encontremos.
Sintaxis: DIR [unidad/directorio/fichero]
Parámetros: Se puede especificar parámetros para que se listen los archivos y directorios de una forma concreta:
·         /N Ordena por nombre
·         /E Ordena por extensión
·         /S Ordena por tamaño
·         /D Ordena por fecha
·         /G Ordena poniendo agrupados todos los directorios después de los ficheros.

Comando: CD
Etimología: Change Dir (Cambiar directorio)
Función: Permite cambiar de un directorio a otro.
Sintaxis: CD [unidad:]\ [ruta]\ [directorio]


3.2.2        COMANDOS PARA LA GESTIÓN DE ARCHIVOS


Comando: COPY

Etimología: COPY de copiar en español
Función: Permite la reproducción o copia de archivos.
Sintaxis: copy  <fichero-origen> <fichero-destino>

Comando: Rename
Etimología: Viene de la palabra inglesa reneme (renombrar).
Función: Su función es dar un nuevo nombre a un fichero.
Sintaxis: rename <nombre-actual> <nombre-nuevo>

Comando: MOVE
Función: Este comando mueve ficheros de un directorio a otro.
Sintaxis: move [/y] <origen> <destino>

Comando: DEL
Etimología: Su nombre viene del inglés delete
Función: Es el comando encargado de eliminar archivos.
Sintaxis: del [unidad:] \[ruta] \ [directorio] \ <archivo>

3.3  GESTIÓN DE MEMORIA


En un sistema monoprogramado, la memoria principal se divide en dos partes: una para el sistema operativo (monitor residente, núcleo) y otra para el programa que se ejecuta en ese instante. En sistema multiprogramado, la parte de usuario de la memoria debe subdividirse aún más para hacer sitio a varios procesos. La tarea de subdivisión la lleva a cabo dinámicamente el sistema operativo y se conoce como gestión de memoria, repartiendo eficazmente la memoria, para introducir tantos procesos como sea posible. Se parte de la necesidad de que un programa esté cargado en la memoria principal para poder ser ejecutado.

Para satisfacer estos requisitos, el sistema operativo debe cumplir las siguientes tareas:

Aislamiento del proceso: el sistema operativo debe procurar que cada proceso independiente no interfiera en los datos y la memoria de ningún otro.

Asignación y gestión automáticas: el sistema operativo puede lograr eficiencia asignando memoria dinámicamente a los trabajos, según la vayan necesitando.

Soporte para programación modular: El programa se ha de construir en módulos de tamaño variable para optimizar el uso de la memoria.

Protección y control de acceso: el sistema operativo debe permitir que las secciones de memoria estén accesibles de diferentes maneras para los diversos usuarios, de manera que esto no amenaza de la integridad de los programas y del mismo sistema.

Almacenamiento a largo plazo: muchos programas de aplicaciones necesitan ser almacenados en memoria después de apagar el computador.

3.3.1        PARTICIÓN DE LA MEMORIA


La tarea principal de sistema de gestión de memoria es cargar los programas en la memoria principal para su ejecución en el procesador. En casi todos los sistemas mulprogramados modernos, esta tarea requiere un sofisticado esquema llamado memoria virtual. La memoria virtual ésta, a su vez, basada en el uso de una de dos técnicas básicas: segmentación o paginación. Antes de ver estas técnicas de memoria virtual, consideraremos técnicas más simples que no requieren el uso de memoria virtual. 

Una de estas técnicas, la partición, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos técnicas, la paginación simple y la segmentación simple, se usan conjuntamente. No obstante, el estudio de la memoria virtual resultará más sencillo si se consideran en primer lugar estas dos técnicas sin tener en cuenta la memoria virtual.

4.     CONCLUSIÓN


La comunicación entre procesos dentro de un sistema operativo es importante, ya que si cada proceso supiera lo que realiza su proceso vecino no intentaría realizar la misma acción, pero esto no siempre ocurre es por ello que existen la condiciones de carrera que lo que hacen es que si un proceso está realizando una tarea y otro intenta acceder este lo deja en un pila esperando, pero esto no es suficiente es así que se crearon las regiones críticas y exclusión mutuas donde cada proceso cumplen condiciones para evitar que dos procesos estén en las mismas regiones críticas.

5.     BIBLIOGRAFÍA


Tanenbaum, A. 2009. Sistemas Operativos Modernos. 3ed. México, D. F. p 117-140.

Ortiz, H. 2005.Sistems Operativos.1ed. Colombia. p 45-60.

Villar, A. 2006. Introducción a la informática y al uso de y manejo de aplicaciones comerciales. España.

Luzardo, L. 2001. Manual de usuario Básico. (En Línea) Formato PDF. Disponible en: www.decimoplaneta.com