Un comentario sobre el sistema operativo UNIX de sexta edición de John Lions (posteriormente reeditado como Lions' Commentary on UNIX 6th Edition [1] [2] y comúnmente conocido como el Libro de Lions ) es una publicación muy influyente [3] de 1976 que contiene comentarios analíticos sobre el código fuente del software del"núcleo residente" [4] (es decir, kernel ) del sistema operativo informático Unix de sexta edición , además de una copia formateada e indexada por Lions, de dicho código fuente obtenido de los autores en AT&T Bell Labs .
El trabajo de Lions, un ejemplo del éxito temprano de UNIX como código portable para una plataforma de publicación, fue compuesto utilizando herramientas UNIX, en sistemas que ejecutaban código portado en la Universidad, similar al que documentó. [5]
Se consideró comúnmente que era el libro más copiado en informática . [ cita requerida ] A pesar de su antigüedad, el libro de Lions todavía se considera un excelente comentario sobre código simple y de alta calidad.
La obra de Lions fue reimpresa por última vez en 1996 por Peer-To-Peer Communications, [6] y ha sido circulada, recreada o reconstruida de diversas maneras en varios medios por otras partes. [5]
El código fuente y los comentarios se imprimieron en forma de libro en 1977, después de haber sido reunidos por primera vez en mayo de 1976, como un conjunto de notas de clase [4] para los cursos de informática de Lions (6.602B y 6.657G, mencionados en la introducción del libro) en la Universidad de Nueva Gales del Sur .
La UNSW había obtenido el código fuente de UNIX en 1975, en respuesta a la consulta de Ken Robinson a Dennis Ritchie en Bell en 1974. [7] Bell Labs era una subsidiaria de AT&T, debido al Decreto de Consentimiento de 1956, AT&T no tenía permitido realizar negocios en ningún otro campo, por lo tanto no podía vender el software, aunque se le exigía, paradójicamente, que licenciara sus inventos, como Unix y el transistor. Western Electric , otra subsidiaria de AT&T, administraba la licencia. A partir de 1977, con las licencias v7 y posteriores, AT&T prohibió los comentarios de código para la enseñanza y solo permitió una copia del Comentario de los Leones, impresa, por licencia.
El boletín de usuarios de UNIX, UNIX News , de USENIX , de marzo de 1977, anunció la disponibilidad del libro para los licenciatarios de UNIX. [4]
La dificultad de seguir el ritmo de la popularidad del libro hizo que en 1978 sólo estuviera disponible en AT&T Bell Labs . [8]
Cuando AT&T anunció la versión 7 de UNIX en USENIX en junio de 1979, la licencia académica/de investigación ya no permitía automáticamente su uso en el aula. Sin embargo, miles de estudiantes de informática de todo el mundo difundieron fotocopias. Como no se les enseñaba en clase, a veces se reunían fuera del horario laboral para comentar el libro. Muchos pioneros de UNIX y del código abierto tenían una valiosa fotocopia de varias generaciones. [ cita requerida ]
Otros efectos posteriores del cambio de licencia incluyeron la creación de Minix por parte de Andrew S. Tanenbaum . Como escribió Tanenbaum en Operating Systems (1987):
Cuando AT&T lanzó la versión 7, comenzó a darse cuenta de que UNIX era un producto comercial valioso, por lo que emitió la versión 7 con una licencia que prohibía que el código fuente se estudiara en los cursos, para evitar poner en peligro su condición de secreto comercial. Muchas universidades cumplieron con esta norma simplemente abandonando el estudio de UNIX y enseñando solo teoría.
Varias personas relacionadas con UNIX, en particular Peter H. Salus , Dennis Ritchie y Berny Goodheart, presionaron a los distintos propietarios de Unix (AT&T, Novell , la Operación Santa Cruz ) durante muchos años para que permitieran la publicación oficial del libro. En 1996, la Operación Santa Cruz finalmente autorizó la liberación del código fuente de la sexta edición, que tenía veinte años de antigüedad (junto con el código fuente de otras versiones de " Antiguo UNIX "), y el código completo más la versión de 1977 del comentario fue publicado por Peer-To-Peer Communications ( ISBN 978-1-57398-013-5 ). [6] La reedición incluye comentarios de Michael Tilson (SCO), Peter Salus, Dennis Ritchie, Ken Thompson , Peter Collinson, Greg Rose, Mike O'Dell, Berny Goodheart y Peter Reintjes.
El código fuente del sistema operativo UNIX de nivel seis es el código fuente del núcleo, ligeramente editado por Lions para separar mejor la funcionalidad: inicialización del sistema y gestión de procesos, interrupciones y llamadas del sistema, E/S básica, sistemas de archivos y canales y dispositivos de caracteres. Todos los procedimientos y símbolos se enumeran en orden alfabético con una referencia cruzada.
El código tal como se presenta se ejecutará en una PDP-11 /40 con unidad de disco RK05 , interfaz de impresora de línea LP11, grabadora de cinta de papel PCL11 e interfaz de terminal KL11, o un emulador PDP-11 adecuado, como SIMH .
Un comentario sobre el sistema operativo UNIX comienza con notas sobre UNIX y otra documentación útil (las páginas del manual de UNIX, los manuales de hardware de DEC , etc.), una sección sobre la arquitectura del PDP-11 y un capítulo sobre cómo leer programas en C. A continuación, se incluye el comentario sobre el código fuente, dividido en las mismas secciones que el código. El libro termina con ejercicios sugeridos para el estudiante.
Como explica Lions, este comentario complementa los comentarios del código fuente. Es posible entender el código sin el comentario adicional, y se recomienda al lector que lo haga y que lea las notas solo cuando sea necesario. El comentario también señala cómo se podría mejorar el código.
El infame comentario del programa "No se espera que entiendas esto" aparece en la línea 2238 del código fuente ( Lions' Commentary , p. 22) al final de un comentario que explica el mecanismo de intercambio de procesos. Se refiere a la línea 325 del archivo slp.c. [9] El código fuente dice: [10] [11]
/* * Si el nuevo proceso se detuvo porque se * intercambió, establezca el nivel de pila en la última llamada * a savu(u_ssav). Esto significa que el retorno * que se ejecuta inmediatamente después de la llamada a aretu * en realidad retorna desde la última rutina que hizo * el savu. * * No se espera que entienda esto. */ if ( rp -> p_flag & SSWAP ) { rp -> p_flag =& ~ SSWAP ; aretu ( u . u_ssav ); }
Una de las principales razones por las que este fragmento de código era difícil de entender era que dependía de una peculiaridad de la forma en que el compilador de C para el PDP-11 guardaba los registros en las llamadas a procedimientos. Este código falló cuando se trasladó a otras máquinas y tuvo que ser rediseñado en la versión 7 de UNIX . [12] Dennis Ritchie explicó más tarde el significado de esta observación: [10]
"No se espera que entiendas esto" fue pensado como un comentario en el espíritu de "Esto no estará en el examen", más que como un desafío descarado.