Sistemas operativos modernos
Principio 2: Integridad Desde luego, la interfaz debe permitir hacer todo lo que los usuarios necesitan hacer, es decir, debe ser completa o íntegra. Esto nos recuerda otra cita famosa, ahora de Albert Einstein: Tododebeserlomássencilloposible,peronomás. En otras palabras, el sistema operativo debe hacer exactamente lo que se necesita de él y no más. Si los usuarios necesitan almacenar datos, debe proporcionar algún mecanismo para al macenar datos. Si los usuarios necesitan comunicarse entre sí, el sistema operativo debe ofre cer un mecanismo de comunicación, etc. En el discurso que pronunció en 1991 al recibir el Premio Turing, Femando Corbató, uno de los diseñadores de CTSS y MULTICS, combinó los conceptos sencillez e integridad, y dijo: Enprimerlugar,esimportantedestacarelvalordelasencillezylaelegancia,puesla complejidadsuelemultiplicarlasdificultadesy, comohemosvisto,propiciarerrores. Midefinicióndeeleganciaesel logrodeunajuncionalidaddadaconunmínimode mecanismoyunmáximodeclaridad. La idea clave aquí es unmínimodemecanismo. Dicho de otro modo, cada característica, fun ción y llamada al sistema debe sostener su propio peso. Debe hacer una sola cosa, y hacerla bien. Cuando un miembro del equipo de diseño propone extender una llamada al sistema o aña dir alguna nueva característica, los demás deben preguntar: “¿Sucedería algo terrible si no la incluyéramos?” Si la respuesta es: “No, pero a alguien podría serle útil algún día”, debe colo carse en una biblioteca en el nivel de usuario, no en el sistema operativo, aunque eso la haga más lenta. No todas las funciones tienen que ser más rápidas que la luz. La meta es preservar lo que Corbató llamó mínimo de mecanismo. Veamos brevemente dos ejemplos tomados de la experiencia del autor: M IN IX y Amoeba. En lo fundamental, M IN IX tiene tres llamadas al sistema: send, receive y sendrec. El siste ma está estructurado en forma de colección de procesos, y el administrador de memoria, el sistema de archivos y cada controlador de dispositivo son procesos calendarizables individua les. En primera instancia, lo único que hace el kemel es calendarizar procesos y encargarse de la transferencia de mensajes entre ellos. Por ello, sólo se necesitan dos llamadas al sistema: send, para enviar un mensaje, y receive, para recibir uno. La tercera llamada, sendrec, no es más que una optimización por razones de eficiencia, la cual permite enviar un mensaje y soli citar una contestación con un solo salto al kernel. Todo lo demás se hace pidiendo a algún otro proceso (por ejemplo, el proceso de sistema de archivos o el controlador de disco) que realice el trabajo. Amoeba es aún más sencillo. Sólo tiene una llamada al sistema: efectuar una llamada a procedimiento remoto. Esta llamada envía un mensaje y espera una contestación. En esencia, es lo mismo que sendrec de M IN IX . Todo lo demás se basa en esta única llamada. Principio 3: Eficiencia La tercera pauta es la eficiencia de implementación. Si una característica o llamada al sistema no puede implementarse de forma eficiente, quizá no vale la pena tenerla. También debe ser in
RkJQdWJsaXNoZXIy MjI4NDcx