Virtual

Solo disponible en BuenasTareas
  • Páginas : 6 (1341 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de octubre de 2010
Leer documento completo
Vista previa del texto
2.2 COMUNICACIÓN ENTRE PROCESOS

Los procesos con frecuencia necesitan comunicarse con otros procesos. Por ejemplo, en un conducto de shell, la salida del primer proceso debe pasarse al segundo proceso, y así sucesiva mente. Por tanto, es necesaria la comunicación entre procesos, de preferencia en una forma bien estructurada que no utilice interrupciones. En las siguientes seccionesexaminaremos algunos de los problemas relacionados con esta comunicación entre procesos o IPC.

En pocas palabras, tenemos tres problemas. Ya hicimos alusión al primero de ellos: ¿cómo puede un proceso pasar información a otro? El segundo tiene que ver con asegurarse de que dos o más procesos no se estorben mutuamente al efectuar actividades críticas (suponga que dos procesos tratan de apoderarse al mismotiempo de los últimos 100K de memoria). El tercero se relaciona con la secuencia correcta cuando existen dependencias: Si el proceso A produce datos y el proceso B los imprime, B tiene que esperar hasta que A haya producido algunos datos antes de comenzar a imprimir. Examinaremos estos tres problemas a partir de la siguiente sección.

2.2.1 Condiciones de competencia

En algunos sistemasoperativos, los procesos que están colaborando podrían compartir cierto
almacenamiento común en el que ambos pueden leer y escribir. El almacenamiento compartido puede estar en la memoria principal o puede ser un archivo compartido; la ubicación de la memoria compartida no altera la naturaleza de la comunicación ni los problemas que surgen. Para ver cómo funciona la comunicación entre procesos en lapráctica, consideremos un ejemplo sencillo 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, revisa periódicamente el directorio para ver si hay archivos por imprimir, y silos hay los imprime y luego borra sus nombres del directorio.

Imagine que nuestrodirectorio de spooler tiene un número elevado (potencialmente infinito) de
ranuras, numeradas 0, 1, 2, ..., cada una con capacidad para un nombre de archivo. Imagine además que hay dos variables compartidas, out, que apuntan al siguiente archivo por imprimir, e in, que apunta a la siguiente ranura libre del directorio. Estas dos variables bien podrían guardarse en un archivo de dos palabras queestuviera accesible para todos los procesos. En un instante dado, las ranuras O a 3 están vacías (los archivos ya se imprimieron) y las ranuras 4 a 6 están llenas (con los nombres de archivos en cola para imprimirse). En forma más o menos simultánea, los procesos A y B deciden que desean poner en cola un archivo para impresión. Esta situación se muestra en la Fig. 2-7.

En las jurisdicciones en lasque aplica la ley de Murphy, podría ocurrir lo siguiente. El proceso
A lee in y almacena su valor, 7, en una variable local llamada siguiente_ranura_libre. Justo en
ese momento ocurre una interrupción de reloj y la CPU decide que el proceso A ya se
ejecutó durante suficiente tiempo, así que conmuta al proceso B. El proceso B también lee in, y

también obtiene un 7, así que almacena el nombrede su archivo en la ranura 7 y actualiza in con el valor 8. Luego se va y hace otras cosas.

Tarde o temprano, el proceso A se ejecuta otra vez, continuando en donde se interrumpió. A
examina siguiente_ranura_libre, encuentra 7 ahí, y escribe su nombre de archivo en la ranura 7, borrando el nombre que el proceso B acaba de poner ahí. Luego A calcula siguiente_ranura_libre + 1, que es 8, yasigna 8 a in. El directorio de spooler no tiene contradicciones internas, así que el demonio de impresión no notará que algo esté mal, si bien el proceso B nunca obtendrá sus salidas. Situaciones como ésta, en la que dos o más procesos leen o escriben datos compartidos y el resultado final depende de quién se ejecuta precisamente cuándo, se denominan condiciones de competencia. La depuración de...
tracking img