Sistemas operativos modernos

donde distinguidos conferencistas se paraban al frente para hablar de algún recóndito error de programación en el kernel que habían descubierto y corregido. Un profesor australiano, John Lions, escribió un comentario acerca del código fuente de UNIX del tipo que por lo normal se reserva para las obras de Chaucer o Shakespeare (reimpreso como Lions, 1996). El libro des­ cribía la Versión 6 , llamada así porque se describía en la sexta edición del Manual del Progra­ mador UNIX. El código fuente comprendía 8200 líneas de C y 900 líneas de código ensamblador. Como resultado de toda esta actividad, pronto se difundieron nuevas ideas y me­ joras al sistema. Después de unos cuantos años, la Versión 6 fue sustituida por la Versión 7, la primera ver­ sión portátil de UNIX (se ejecutaba en la PDP-11 y en la Interdata 8/32), y a esas alturas com­ prendía 18,800 líneas de C y 2100 líneas de ensamblador. Toda una generación de estudiantes creció con la Versión 7, lo cual contribuyó a su difusión una vez que se graduaron y entraron a trabajar en la industria. A mediados de la década de 1980, UNIX se usaba de manera amplia en minicomputadoras y en estaciones de trabajo de ingeniería de diversos fabricantes. Varias compa­ ñías adquirieron incluso la licencia del código fuente para crear su propia versión de UNIX. Una de ellas fue una naciente empresa llamada Microsoft, que vendió la Versión 7 bajo el nombre XENIX durante varios años, hasta que su interés se dirigió a otras cosas. 10.1.3 UNIX portátil Ahora que UNIX estaba escrito en C, trasladarlo a una nueva máquina era mucho más fácil que al principio. Un traslado primero requiere escribir un compilador de C para la nueva máquina. Luego requiere escribir controladores de dispositivos para los dispositivos de E/S de la nueva máquina, como terminales, impresoras y discos. Aunque el código de los controladores está en C, no es posible trasladarlo, compilarlo y ejecutarlo en otra máquina porque no hay dos discos que funcionen de la misma manera. Por último, había que rescribir una pequeña cantidad de código dependiente de la máquina, como los manejadores de interrupciones y las rutinas de ad­ ministración de memoria, por lo regular en lenguaje ensamblador. El primer traslado más allá de la PDP-11 fiie a la minicomputadora Interdata 8/32. Este ejer­ cicio reveló un gran número de supuestos que UNIX hacía en forma implícita acerca de la má­ quina en la que se estaba ejecutando, como que los enteros tenían 16 bits, que los apuntadores también tenían 16 bits (lo que implicaba un tamaño máximo de 64 KB para los programas) y que la máquina tenía exactamente tres registros para contener variables importantes. Ninguna de estas cosas era cierta en la Interdata, por lo que se requirió una buena cantidad de trabajo para generalizar UNIX. Otro problema fue que, aunque el compilador de Ritchie era rápido y producía buen códi­ go objeto, sólo producía código objeto para la PDP-11. En lugar de escribir un nuevo compi­ lador específico para la Interdata, Steve Johnson, de Bell Labs, diseñó e implementò el compilador portátil de C, que podía reorientarse a fm de producir código para cualquier má­ quina razonable con una cantidad moderada de esfuerzo. Durante años, casi todos los compi­ ladores de C para máquinas distintas de la PDP-11 se basaron en el compilador de Johnson, lo cual ayudó mucho a que UNIX se extendiera a nuevas computadoras.

RkJQdWJsaXNoZXIy MjI4NDcx