Sistemas operativos modernos
Un problema es el direccionamiento. Puesto que las multicomputadoras son estáticas, con un número fijo de procesadores, la forma más fácil de manejar dicho direccionamiento es ha cer que d i r sea una dirección de dos partes, consistente en un número de CPU y un número de proceso o de puerto en la CPU direccionada. Así, cada CPU puede manejar sus propias direc ciones sin peligro de conflictos. Llamadas bloqueadoras o no bloqueadoras Las llamadas que acabamos de describir son llamadas bloqueadoras (también conocidas como llamadas síncronas). Cuando un proceso invoca a send, especifica un destino y un búfer a en viar a ese destino. Mientras se está enviando el mensaje, el proceso transmisor se bloquea (es decir, queda suspendido). La insüoicción que sigue a la llamada a send no se ejecuta sino hasta que se ha terminado de enviar el mensaje, como se muestra en la figura 8-20a. De forma simi lar, una llamada a receive no devuelve el control sino hasta después de que se ha recibido en rea lidad un mensaje y se ha colocado en el búfer de mensajes al que apunta el parámetro. El proceso permanece suspendido por receive hasta que llega un mensaje, aunque tarde horas. En algunos sistemas, el receptor puede especificar de quién desea recibir, en cuyo caso permanece rá bloqueado hasta que llegue un mensaje de ese transmisor. Transmisor en ejecución ■Transmisor bloqueado • Salto a! kernel, transmisor bloqueado Transmisor en ejecución Retorno del kernel, transmisor liberado Mensaje enviado • (a) Transmisor en ejecución Transmisor bloqueado Interrupción de sistema Transmisor en ejecución Retorno Mensaje enviado Mensaje copiado en un búfer de kernel (b) Figura 8-20. a) Llamada send bloqueadora, b} Llamada send no bloqueadora. Una altemafiva a las llamadas bloqueadoras son las llamadas no bloqueadoras (también conocidas como llamadas asincronas). Si send es no bloqueadora, devolverá de inmediato el
RkJQdWJsaXNoZXIy MjI4NDcx