Un comentario sobre el sistema operativo UNIX de la sexta edición de John Lions (más tarde reeditado como Comentario de los Leones sobre la sexta edición de UNIX [1] [2] y comúnmente conocido como el Libro de los Leones ) es una publicación muy influyente [3] de 1976 que contiene comentarios analíticos. en el código fuente de la sexta edición del software del "núcleo residente" [4] (es decir, kernel ) del sistema operativo de computadora Unix , además de una copia formateada e indexada por Lions, de dicho código fuente obtenido de los autores en AT&T Bell Labs .
Un ejemplo del éxito inicial de UNIX como código portátil para una plataforma de publicación, el trabajo de Lions se compuso utilizando herramientas UNIX, en sistemas que ejecutaban código portado en la Universidad, similar al que documentó. [5]
Comúnmente se consideraba el libro más copiado en informática . [ cita necesaria ] 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.
El trabajo de Lions fue reimpreso por última vez en 1996 por Peer-To-Peer Communications, [6] y otros partidos lo han hecho circular, recreado o reconstruido de diversas formas en varios medios. [5]
El código fuente y el comentario se imprimieron en forma de libro en 1977, después de haber sido compilados por primera vez en mayo de 1976, como un conjunto de notas de conferencias [4] para los cursos de informática de los Leones (6.602B y 6.657G, mencionados en la introducción del libro). en la Universidad de Nueva Gales del Sur .
De hecho, la UNSW había obtenido el código fuente de UNIX en 1975, en respuesta a la consulta de Ken Robinson en 1974 a Dennis Ritchie en Bell. [7] Bell Labs era una subsidiaria de AT&T, bajo restricciones debido a su naturaleza monopolística como proveedor nacional de infraestructura de telecomunicaciones, y no se le permitía realizar negocios en ningún otro campo, [ cita necesaria ] y, por lo tanto, no tenía libertad para beneficiarse de la venta. de software, [ cita necesaria ] sin embargo, UNIX estaba siendo proporcionado bajo licencia por otra subsidiaria de AT&T, Western Electric , al menos en 1977. [ aclaración necesaria ]
El grupo de usuarios de UNIX, el boletín informativo de USENIX , UNIX News , de marzo de 1977, anunció la disponibilidad del libro para los licenciatarios de UNIX. [4]
La dificultad para mantener el ritmo de la popularidad del libro significó que en 1978 solo estuviera disponible en AT&T Bell Labs . [8]
Cuando AT&T anunció UNIX Versión 7 en USENIX en junio de 1979, la licencia académica/de investigación ya no permitía automáticamente el uso en el aula. Sin embargo, miles de estudiantes de informática de todo el mundo difunden fotocopias. Como no se lo enseñaban en clase, a veces se reunían fuera de horario para discutir el libro. Muchos pioneros de UNIX y del código abierto tenían una preciada fotocopia de múltiples generaciones. [ cita necesaria ]
Otros efectos posteriores al cambio de licencia incluyeron que Andrew S. Tanenbaum creara Minix . Como escribió Tanenbaum en Sistemas operativos (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 estudiar el código fuente en los cursos, para evitar poner en peligro su condición de secreto comercial. Muchas universidades cumplieron y simplemente abandonaron el estudio de UNIX y enseñaron sólo teoría.
Varias personas de UNIX, particularmente Peter H. Salus , Dennis Ritchie y Berny Goodheart, presionaron a los distintos propietarios de Unix (AT&T, Novell , Santa Cruz Operation ) durante muchos años para que permitieran que el libro se publicara oficialmente. En 1996, la Operación Santa Cruz finalmente autorizó la publicación del código fuente de la sexta edición de veinte años de antigüedad (junto con el código fuente de otras versiones de " Ancient 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 nivel seis es el código fuente del kernel, ligeramente editado por Lions para separar mejor la funcionalidad: inicialización del sistema y gestión de procesos, interrupciones y llamadas al sistema, E/S básicas, sistemas de archivos y canalizaciones y dispositivos de caracteres. Todos los procedimientos y símbolos están listados alfabéticamente con una referencia cruzada.
El código presentado se ejecutará en un PDP-11 /40 con unidad de disco RK05 , interfaz de impresora de línea LP11, grabadora de cintas de papel PCL11 e interfaz de terminal KL11, o un emulador de 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, 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 fuente, dividido en las mismas secciones que el código. El libro finaliza con ejercicios sugeridos para el alumno.
Como explica Lions, este comentario complementa los comentarios de la fuente. Es posible comprender el código sin comentarios adicionales, y se recomienda al lector que lo haga y solo lea las notas según sea necesario. El comentario también comenta 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 ( Comentario de los Leones , 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 fue * intercambiado, 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 regresa de la última rutina que realizó * el savu. * *No se espera que usted 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 C del PDP-11 guardaba los registros en las llamadas a procedimientos. Este código falló cuando se transfirió a otras máquinas y tuvo que ser rediseñado en la Versión 7 UNIX . [12] Dennis Ritchie explicó más tarde el significado de esta observación: [10]
"No se espera que entiendas esto" pretendía ser un comentario con el espíritu de "Esto no estará en el examen", más que un desafío descarado.