Por Brinch Hansen | |
---|---|
Nacido | ( 13 de noviembre de 1938 )13 de noviembre de 1938 |
Fallecido | 31 de julio de 2007 (31 de julio de 2007)(68 años) |
Alma máter | Universidad Técnica de Dinamarca |
Conocido por | |
Cónyuge | Milena |
Niños | 2 |
Premios | |
Carrera científica | |
Campos | Ciencias de la Computación |
Instituciones | |
Sitio web | brinch-hansen.net |
Per Brinch Hansen (13 de noviembre de 1938 - 31 de julio de 2007) fue un científico informático danés - estadounidense conocido por su trabajo en sistemas operativos , programación concurrente y computación paralela y distribuida .
Per Brinch Hansen nació en Frederiksberg , un enclave rodeado por Copenhague , Dinamarca . Su padre, Jørgen Brinch Hansen, trabajó como ingeniero civil, convirtiéndose en un destacado experto en mecánica de suelos , y más tarde aceptó una cátedra en la Universidad Técnica de Dinamarca . Su madre, Elsebeth Brinch Hansen (de soltera Ring), era hija del compositor danés Oluf Ring y trabajó como peluquera antes de casarse. [1]
Brinch Hansen asistió al Skt. Jørgens Gymnasium y luego estudió ingeniería eléctrica en la Universidad Técnica de Dinamarca, donde buscó un área en la que dedicarse que "todavía estuviera en su fase pionera" con la creencia de que "si se estaba enseñando una materia, probablemente ya era demasiado tarde para hacer contribuciones fundamentales". [1] [2] Después de una pasantía estudiantil de siete semanas en el Laboratorio Hursley de IBM en Inglaterra, decidió dedicar su carrera a las computadoras. Inicialmente centrado en la construcción de computadoras, la lectura de un libro sobre el proyecto IBM 7030 Stretch que describía la organización de las computadoras desde el punto de vista de un programador [3] reorientó su interés hacia convertirse en arquitecto de computadoras. [1]
Después de completar una maestría en ciencias en ingeniería electrónica en 1963, Brinch Hansen consiguió un trabajo en Regnecentralen , entonces una institución de investigación dependiente de la Academia Danesa de Ciencias Técnicas (Akademiet for de Tekniske Videnskaber), trabajando en el grupo de compiladores, dirigido por Peter Naur y Jørn Jensen . [2] Allí, su primer proyecto importante fue escribir un analizador para un compilador COBOL para la computadora Siemens 3003.
Posteriormente, escribió un sistema de archivos para ser utilizado durante la ejecución de los programas COBOL compilados, observando más tarde: [1]
Ahora comprendo que en realidad se trataba de un pequeño sistema operativo que yo había programado. Sin embargo, a mediados de los años 60, la línea divisoria entre la implementación de lenguajes y los sistemas operativos aún no estaba clara.
En 1966, Brinch Hansen se incorporó al grupo de hardware de Henning Isaksson en Regnecentralen, que por aquel entonces era una empresa con accionistas. Junto con Peter Kraft, definió la arquitectura informática y el conjunto de instrucciones para el tercer ordenador de Regnecentralen, el RC 4000, utilizando ALGOL 60 como lenguaje de descripción de hardware para producir una especificación formal .
Sin experiencia en multiprogramación , utilizó una copia de Cooperating Sequential Processes [4] que Edsger Dijkstra le había enviado para que comprendiera la sincronización de procesos mediante semáforos , y luego implementó un monitor RC 4000 en tiempo real especializado para su uso en la gestión de una planta de fertilizantes. Peter Kraft y Charles Simonyi , que todavía era un adolescente, escribieron un intérprete de código p y programas de tareas de registro de datos que se compilaron en código p. [1]
En el verano de 1967, Brinch Hansen dejó el grupo de hardware de Regnecentralen para convertirse en jefe de desarrollo de software RC 4000 , donde dirigió un equipo que incluía a Jørn Jensen, Peter Kraft y Søren Lauesen en la definición de un sistema de multiprogramación RC 4000 de propósito general , con el objetivo de evitar el desarrollo de un sistema operativo de control en tiempo real personalizado para cada instalación RC 4000, y para soportar el procesamiento por lotes y el tiempo compartido también. [1] El sistema resultante no era un sistema operativo completo, sino un pequeño núcleo que proporcionaba los mecanismos sobre los cuales se podían construir sistemas operativos para diferentes propósitos. [5] Para la primavera de 1969, se estaba ejecutando una versión confiable y bien documentada del sistema de multiprogramación RC 4000. [1]
A finales de 1970, Brinch Hansen se mudó a Pittsburgh , aceptando una invitación de Alan Perlis para visitar el departamento de informática de la Universidad Carnegie Mellon como investigador asociado, mientras escribía el primer libro de texto sistemático sobre principios de sistemas operativos. [1] [2] Durante este tiempo, en la Escuela de Verano de 1971 en Marktoberdorf y un simposio en Belfast , Brinch Hansen, Tony Hoare y Dijkstra comenzaron a discutir ideas que evolucionaron hasta convertirse en el concepto de monitor . En la primavera de 1972, después de leer sobre el concepto de clase inventado por Ole-Johan Dahl y Kristen Nygaard para Simula 67, Brinch Hansen completó su texto con un capítulo sobre protección de recursos que proponía la primera notación de monitor, utilizando clases compartidas. [6] En 1973, se publicó Operating System Principles , convirtiéndose en el primer libro de texto completo sobre sistemas operativos. [7]
En julio de 1972, Brinch Hansen se unió a la facultad del Instituto de Tecnología de California (Caltech) como profesor asociado de informática, donde comenzó a trabajar en la definición de un lenguaje de programación con procesos y monitores concurrentes. En abril de 1974, distribuyó un informe técnico sobre Concurrent Pascal . [1] [2] Un compilador de Concurrent Pascal para el PDP 11/45 , escrito por el estudiante de doctorado de Brinch Hansen, Al Hartmann, fue lanzado en enero de 1975. [8] Posteriormente, Brinch Hansen comenzó a escribir sistemas operativos modelo en Concurrent Pascal, para evaluar el lenguaje. En mayo de 1975, completó Solo, un sistema operativo de un solo usuario para el desarrollo de programas Concurrent Pascal. A continuación, reescribió el programador original en tiempo real RC 4000 en Concurrent Pascal, tardando tres días en escribirlo y tres horas de tiempo de máquina para probarlo sistemáticamente. [6]
Cuando el Departamento de Informática de Caltech cambió su enfoque hacia la ingeniería informática y se alejó de la programación, Brinch Hansen decidió irse, en lugar de buscar la titularidad allí. [1]
En 1976, Brinch Hansen eligió la Universidad del Sur de California (USC) para su siguiente puesto, de modo que su familia pudiera permanecer en su hogar de Altadena . Se incorporó a la facultad como profesor titular y primer director de un departamento de informática de reciente creación, y dirigió los esfuerzos para identificar y atraer a profesores de primer nivel para construir un departamento de primera clase. En 1980, el departamento de informática de la USC fue clasificado por el Consejo Nacional de Investigación como uno de los diez mejores de Estados Unidos. [1]
Mientras estaba en la USC, Brinch Hansen escribió su segundo libro, The Architecture of Concurrent Programs, basado en su trabajo de desarrollo de sistemas operativos con Concurrent Pascal. [2] Publicado en 1977, fue el primer libro sobre programación concurrente. [9] En 1978, Brinch Hansen se convirtió en el primer científico informático galardonado con el título de Doctor Technices, la distinción académica más alta dentro de la ingeniería y la ciencia tecnológica en Dinamarca, [10] por el trabajo documentado en The Architecture of Concurrent Programs . Más tarde, en 1978, Brinch Hansen publicó el concepto de lenguaje Distributed Processes, proponiendo el uso de llamadas a procedimientos remotos para sincronizar procesos que se ejecutan a través de una red de microcomputadoras. [11]
También en 1978, LJ Sevins y Steve Goings de Mostek visitaron a Brinch Hansen en la USC, donde describió una arquitectura de multiprocesador de bajo costo. Mostek comenzó un proyecto para implementar dicho multiprocesador, con Brinch Hansen trabajando como consultor. [1] Brinch Hansen desarrolló un nuevo lenguaje de programación concurrente, Edison, para el proyecto. [12] Al igual que con el proyecto RC 4000, Edison también se utilizó como lenguaje de especificación formal para el hardware. Mostek consiguió que funcionara un multiprocesador inicial de 4 nodos y Brinch Hansen escribió un compilador Edison portátil en un PDP 11/55, pero poco después, United Technologies adquirió Mostek [13] y canceló el proyecto. En 1982, Brinch Hansen trasladó el sistema Edison a una computadora personal (PC) IBM, y luego publicó su tercer libro, Programming a Personal Computer . [14]
En 1982, Brinch Hansen fue nombrado el primer profesor Henry Salvatori de Ciencias de la Computación en la USC. [1]
En 1984, sintiendo nostalgia de Dinamarca después de 14 años en el extranjero, Brinch Hansen dejó la USC y se unió a la facultad de la Universidad de Copenhague como profesor de datalogía . [1] En 1985, fue elegido miembro del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE). [15] Más tarde, en 1985, se publicó su cuarto libro Brinch Hansen on Pascal Compilers , que utilizó para su propio curso de compiladores. [16]
Mientras diseñaba un sistema operativo multicomputadora para la compañía danesa GN Elmi, Brinch Hansen concluyó que necesitaba un nuevo lenguaje, esta vez aprovechando el paradigma de paso de mensajes del CSP de Hoare . [1] El lenguaje resultante, Joyce , eliminó una limitación importante del CSP al introducir la recursión paralela . [17] Brinch Hansen desarrolló una implementación portátil en una IBM PC. [1]
Tras comprobar que ni él ni su familia se sentían a gusto en Dinamarca, Brinch Hansen decidió regresar a Estados Unidos, pero descubrió que su situación migratoria les exigía hacerlo muy rápidamente. Brinch Hansen se puso en contacto con John Reynolds en la Universidad de Syracuse y en 1987 se incorporó a la facultad como profesor distinguido. [1]
Mientras trabajaba con su estudiante Rangachari Anand, Joyce pasó a utilizar un multiprocesador Encore Multimax 320 en el Centro de Arquitecturas Paralelas del Noreste de la Universidad de Sudamérica. Sin embargo, al reconocer las limitaciones de escalabilidad de los multiprocesadores, Brinch Hansen buscó un multiordenador adecuado para seguir trabajando. En 1989 adquirió un Meiko Computing Surface y comenzó a experimentar con aplicaciones científicas desarrollando programas paralelos para el método de Householder (reducción) y luego la simulación de N -cuerpos como ejercicios de aprendizaje, y se sorprendió al descubrir que ambos programas tenían estructuras de control casi idénticas. Al concluir que ambos encajaban en un "paradigma de todos los pares", se centró en explorar estructuras de algoritmos paralelos reutilizables que denominó "paradigmas de programación" o "programas genéricos" (más tarde, conocidos popularmente como " patrones de diseño "). [1] En 1995, se publicó el quinto libro de Brinch Hansen, Studies in Computational Science: Parallel Programming Paradigms , [18] con programas reescritos en SuperPascal , un lenguaje de publicación completamente implementado que creó para algoritmos paralelos. [19]
En sus últimos años, Brinch Hansen publicó una retrospectiva de sus artículos más importantes, The Search for Simplicity (1996), [20] un texto para un curso de programación para no especialistas, Programming for Everyone in Java (1999), [21] una retrospectiva sobre la evolución de los sistemas operativos, Classic Operating Systems: From Batch Processing to Distributed Systems (2001), [22] y una retrospectiva sobre la evolución de la programación concurrente, The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls (2002). [23] Autopublicó una autobiografía en 2004, A Programmer's Story: The Life of a Computer Pioneer , en su sitio web. [1]
En 2002, Brinch Hansen recibió el premio IEEE Computer Pioneer Award "por el desarrollo pionero en sistemas operativos y programación concurrente ejemplificado por el trabajo en el sistema de multiprogramación RC 4000, monitores y Concurrent Pascal". [15]
El 31 de julio de 2007, Brinch Hansen murió, poco después de que le diagnosticaran cáncer terminal. [24]
Brinch Hansen conoció a su esposa Milena (de soltera Hrastar) en un viaje de estudios a Yugoslavia en 1962. Se casaron en 1965 y tuvieron dos hijos: su hija Mette y su hijo Thomas. [1]
En una carrera que abarcó cinco décadas, Brinch Hansen hizo contribuciones fundamentales en las áreas de sistemas operativos, computación concurrente y computación paralela y distribuida que fueron influyentes en la conformación del desarrollo de esos campos y en su avance desde técnicas ad hoc hasta disciplinas de ingeniería sistemática. [15] La influencia de su trabajo se vio amplificada por su "búsqueda incesante de la simplicidad", [15] su insistencia en la claridad, escribiendo y reescribiendo sus artículos muchas veces antes de publicarlos, [20] convirtiéndose en "uno de los mejores explicadores en el negocio", [25] y su compromiso con la prueba de conceptos en sistemas de trabajo: Brinch Hansen implementó y distribuyó sistemas de trabajo para los nuevos conceptos que desarrolló, señalando:
No es raro que un informático haga una propuesta sin comprobar si es buena en la práctica. Después de pasar tres días redactando la propuesta de monitorización y tres años implementándola, puedo entender perfectamente esta tentación. Quizá también sea a veces una respuesta humana a la tremenda presión que sufren los profesores universitarios para conseguir financiación y reconocimiento rápidamente. Sin embargo, debemos recordar que en ingeniería sólo cuenta una cosa: ¿funciona? (no "¿podría funcionar?" o "¿no sería genial si funcionara?"). [26]
El sistema multiprogramación RC 4000 introdujo el concepto, ahora estándar, de núcleo de sistema operativo y la separación de mecanismos y políticas en el diseño de sistemas operativos. Las arquitecturas de micronúcleo modernas tienen sus raíces en la arquitectura de núcleo extensible del RC 4000. [15] Mejorar el rendimiento del micronúcleo fue un tema importante en la investigación de sistemas operativos durante las tres décadas posteriores al RC 4000.
El texto de Brinch Hansen, Operating System Principles , fue el primer libro de texto completo sobre sistemas operativos. Publicado finalmente en seis idiomas (inglés, japonés, alemán, checo, polaco y serbocroata), [1] permaneció impreso durante décadas y años después de que el sistema RC 4000 que describía se volviera obsoleto. En 1990, casi dos décadas después de su publicación inicial, PJ Plauger lo revisó y dijo:
Este libro está terriblemente anticuado. Describe muchos de los algoritmos del sistema operativo RC4000. El RC4000 es lento, pequeño y carece de periféricos según los estándares actuales. Los algoritmos se presentan en un subconjunto de Pascal. ¿Por qué molestarse? La respuesta es que Brinch Hansen es uno de los mejores explicadores del sector. Explica las cosas con claridad y al grano. Tiene buen ojo para el principio general que se esconde detrás del ejemplo, pero se las arregla para evitar abstracciones innecesarias. Después de todos estos años, sigue siendo un placer leerlo. [25]
En 2005, los miembros de la Association for Computing Machinery (ACM) eligieron a Operating System Principles como uno de los 25 libros clásicos más importantes en una encuesta para elegir libros clásicos descatalogados para agregarlos a la Biblioteca Digital de la ACM. Operating System Principles ocupó el puesto 15 en la encuesta, apareciendo en el 8,8% de las papeletas. [27] Ahora está disponible en la Biblioteca Digital de la ACM.
Brinch Hansen demostró con Concurrent Pascal que era factible implementar sistemas operativos en lenguajes de alto nivel y que al hacerlo se reducía el esfuerzo de desarrollo en uno o dos órdenes de magnitud. [28] Además, se podían publicar sistemas operativos completos y comprenderlos en su totalidad. Brinch Hansen hizo precisamente eso en The Architecture of Concurrent Programs , lo que llevó a Roy Maddux y Harlan Mills a declarar:
La segunda parte del libro es realmente notable. En ella se puede ver un sistema operativo completo, con cada línea de programa abierta al escrutinio. No hay ningún misterio oculto y, después de estudiar ejemplos tan extensos, el lector siente que podría abordar tareas similares y que podría cambiar el sistema a voluntad. Nunca antes habíamos visto un sistema operativo mostrado con tanto detalle y de una manera tan susceptible de modificación. [29]
Brinch Hansen y Hoare desarrollaron el concepto de monitor. Brinch Hansen publicó la primera notación de monitor, adoptando el concepto de clase de Simula 67, [7] e inventó un mecanismo de colas. [30] Hoare refinó las reglas de reanudación de procesos. [31] Brinch Hansen creó la primera implementación de monitores, en Concurrent Pascal. [6] Más de una docena de lenguajes adicionales basados en monitores se habían creado en 1990: Simone, Modula , CSP/k, CCNPascal, PLY, Pascal Plus, Mesa, SB-Mod, Concurrent Euclid , Pascalc, Concurrent C, Emerald, Real-time Euclid, Pascal-FC, Turing Plus , Predula. [6]
Pascal fue el primer lenguaje de programación concurrente: [29] el primer lenguaje desarrollado específicamente para programación concurrente y, más importante aún, el primer lenguaje en demostrar que era posible incorporar funciones seguras [32] de alto nivel para la concurrencia, donde el sistema podía garantizar que los procesos accedieran únicamente a conjuntos disjuntos de variables y no interfirieran entre sí de manera dependiente del tiempo. [23] Hoare lo describió como "un ejemplo sobresaliente de lo mejor de la investigación académica en esta área". [33]
El código fuente y el código portable de Concurrent Pascal y el sistema operativo Solo se distribuyeron a al menos 75 empresas y 100 universidades en 21 países, lo que dio como resultado su adopción, portabilidad y adaptación generalizadas tanto en la industria como en el mundo académico. [6] Greg Andrews observó que Concurrent Pascal y los monitores "influyeron enormemente en la mayoría de las propuestas de lenguajes concurrentes posteriores". [6]
La arquitectura de programas concurrentes de Brinch Hansen fue el primer libro sobre programación concurrente, [29] y finalmente se publicó en tres idiomas (inglés, japonés y alemán). [1] Más de una docena de años después de su publicación, PJ Plauger observó:
Por supuesto, se han hecho mejoras en los últimos doce años. Tenemos mejores algoritmos de sincronización y lenguajes más sofisticados (si bien no necesariamente mejores) con control de concurrencia. Pero no encontrará una mejor descripción general de la programación concurrente que este libro. Al menos yo no he encontrado ninguno. [25]
En 2005, los miembros de la ACM votaron a La arquitectura de programas concurrentes como uno de los 25 libros clásicos más importantes, ubicándolo en el puesto 18 de la encuesta y apareciendo en el 8% de las papeletas. [27] Ahora está disponible en la Biblioteca digital de la ACM.
Las llamadas a procedimientos remotos utilizadas en los sistemas operativos modernos tienen sus orígenes en el sistema de multiprogramación RC 4000, [15] que utilizaba un protocolo de comunicación de solicitud-respuesta para la sincronización de procesos. [34]
En su artículo de 1978 sobre procesos distribuidos, Brinch Hansen propuso un lenguaje para computación distribuida basado en solicitudes externas que consisten en llamadas a procedimientos entre procesos. [35] Esto más tarde se conoció en un contexto de sistema operativo como la llamada a procedimiento remoto. [36]
Más tarde, Brinch Hansen desarrolló dos lenguajes que extendían el paradigma de paso de mensajes CSP de Hoare con recursión paralela, [17] [19] y mostró cómo implementarlo eficientemente. [37]