Sistemas operativos modernos
Aspectos de diseño de sistemas con transferencia de mensajes Los sistemas con transferencia de mensajes presentan muchos problemas y cuestiones de dise ño difíciles que no existen con los semáforos ni con los monitores, sobre todo si los procesos en comunicación están en máquinas distintas conectadas por una red. Por ejemplo, cabe la po sibilidad de que en la red se pierdan mensajes. Para protegerse contra tal pérdida, el emisor y el receptor pueden convenir en que tan pronto como el receptor reciba un mensaje, devolverá un mensaje especial de acuse. Si el emisor no recibe tal acuse dentro de cierto plazo, retrans mitirá el mensaje. Ahora consideremos lo que sucede si el mensaje se recibe en forma correcta, pero el acu se se pierde. El emisor retransmitirá el mensaje y el receptor lo obtendrá dos veces. Es indis pensable que el receptor pueda distinguir entre un mensaje nuevo y la retransmisión de uno antiguo. Por lo regular, este problema se resuelve anexando números de sucesión consecutivos a cada mensaje original. Si el receptor recibe un mensaje con el mismo número de sucesión que el mensaje anterior, sabrá que está repetido y puede ignorarlo. Lograr la comunicación pese a la falta de fiabilidad de la transferencia de mensajes es una parte importante del estudio de las redes de computadoras. Para más información, consulte Tanenbaum (1996). Los sistemas de mensajes también deben resolver el problema de cómo nombrar los proce sos de modo que las llamadas send o receive no sean ambiguas. Otro aspecto importante de los sistemas de mensajes es la autenticación: ¿cómo sabe el cliente que se está comunicando con el verdadero servidor de archivos y no con un impostor? En el otro extremo del espectro, hay cuestiones de diseño que son importantes cuando el emisor y el receptor están en la misma máquina. Una de ellas es el desempeño. Copiar men sajes de un proceso a otro siempre lleva más tiempo que efectuar una operación de semáforo o entrar en un monitor. Se ha trabajado mucho en aumentar la eficiencia de la transferencia de mensajes. Por ejemplo, Cheriton (1984) después sugirió limitar el tamaño de los mensajes a lo que cabría en los registros de la máquina, y efectuar la transferencia de mensajes em pleando los registros. El problema del productor-consumidor con transferencia de mensajes Ahora veamos cómo puede resolverse el problema del productor-consumidor con transferen cia de mensajes y sin compartir memoria. En la figura 2-29 se presenta una solución. Damos por hecho que todos los mensajes tienen el mismo tamaño y que el sistema operativo coloca en forma automática en un búfer los mensajes que se enviaron pero aún no se han recibido. En es ta solución usamos un total de N mensajes, que es análogo al uso de N ranuras en el búfer de memoria compartida. Lo primero que hace el consumidor es enviar N mensajes vacíos al pro ductor. Cada vez que éste tiene un elemento que entregar al consumidor, toma un mensaje va cío y devuelve uno lleno. Así, el número total de mensajes en el sistema se mantiene constante con el paso del tiempo, y dichos mensajes pueden guardarse en una cantidad de memoria da da, que se conoce con antelación.
RkJQdWJsaXNoZXIy MjI4NDcx