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