Per Brinch Hansen (13 de noviembre de 1938 - 31 de julio de 2007) fue un 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ó a Skt. Jørgens Gymnasium y luego estudió ingeniería eléctrica en la Universidad Técnica de Dinamarca, donde buscó un área que "todavía estaba 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] reenfocó su interés en 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 posteriormente: [1]
Ahora entiendo que en realidad era un pequeño sistema operativo que yo había programado. Sin embargo, a mediados de la década de 1960, todavía no se entendía claramente la línea divisoria entre la implementación del lenguaje y los sistemas operativos.
En 1966, Brinch Hansen se trasladó al grupo de hardware de Henning Isaksson en Regnecentralen, que entonces era una empresa con accionistas. Junto con Peter Kraft, definió la arquitectura informática y el conjunto de instrucciones para la tercera computadora de Regnecentralen, la 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 comprender la sincronización de procesos mediante semáforos , y luego implementó un monitor especializado en tiempo real RC 4000 para usarlo 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 para definir un sistema de multiprogramación RC 4000 de uso general , con el objetivo de Evite desarrollar un sistema operativo de control en tiempo real personalizado para cada instalación de RC 4000 y admita también el procesamiento por lotes y el tiempo compartido . [1] El sistema resultante no fue 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] En 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 y aceptó 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 los principios de los sistemas operativos. [1] [2] Durante este tiempo, en la Escuela de Verano de 1971 en Marktoberdorf y en 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ó Principios del sistema operativo , convirtiéndose en el primer libro de texto completo sobre sistemas operativos. [7]
En julio de 1972, Brinch Hansen se incorporó 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] En enero de 1975 se publicó un compilador de Pascal concurrente para el PDP 11/45 , escrito por el estudiante de doctorado de Brinch Hansen, Al Hartmann. [8] Posteriormente, Brinch Hansen comenzó a escribir sistemas operativos modelo en Pascal concurrente, para evaluar el idioma. En mayo de 1975, completó Solo, un sistema operativo de usuario único para el desarrollo de programas Pascal concurrentes. A continuación, reescribió el programador en tiempo real RC 4000 original en Concurrent Pascal, y tardó 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 un puesto permanente allí. [1]
En 1976, Brinch Hansen eligió la Universidad del Sur de California (USC) para su siguiente puesto, para que su familia pudiera permanecer en su casa de Altadena . Se unió a la facultad como profesor titular titular y primer presidente de un departamento de informática recién creado, y dirigió los esfuerzos para identificar y atraer profesores de primer nivel para construir un departamento de primer nivel. En 1980, el Consejo Nacional de Investigación clasificó el departamento de informática de la USC como uno de los diez mejores de Estados Unidos. [1]
Mientras estaba en la USC, Brinch Hansen escribió su segundo libro, La arquitectura de programas concurrentes, basado en su trabajo desarrollando 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 en recibir el título de Doctor Technices, la más alta distinción académica dentro de la ingeniería y las ciencias tecnológicas 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 de Procesos Distribuidos, 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 multiprocesador de bajo costo. Mostek inició 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 puso en funcionamiento 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, Programación de una computadora personal . [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 por 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 sobre compiladores Pascal , que utilizó para su propio curso de compiladores. [dieciséis]
Mientras diseñaba un sistema operativo multicomputadora para la empresa danesa GN Elmi, Brinch Hansen concluyó que necesitaba un nuevo lenguaje, esta vez aprovechando el paradigma de transmisión de mensajes del CSP de Hoare . [1] El lenguaje resultante, Joyce , eliminó una limitación importante de CSP al introducir la recursividad paralela . [17] Brinch Hansen desarrolló una implementación portátil en una PC IBM. [1]
Después de descubrir que ni él ni su familia se sentían como en casa en Dinamarca, Brinch Hansen decidió regresar a Estados Unidos, pero descubrió que su estatus migratorio les obligaba 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]
Trabajando con su alumno Rangachari Anand, Joyce fue trasladado a un multiprocesador Encore Multimax 320 en el Centro de Arquitecturas Paralelas del Noreste de SU. Sin embargo, al reconocer las limitaciones de escala de los multiprocesadores, Brinch Hansen buscó una multicomputadora adecuada para seguir trabajando. Al adquirir una superficie de computación Meiko en 1989, 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. Concluyendo que ambos se ajustan a un "paradigma de todos los pares", luego 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, Sistemas operativos clásicos: del procesamiento por lotes a sistemas distribuidos (2001), [22] y una retrospectiva sobre la evolución de la programación concurrente, El origen de la programación concurrente: de semáforos a llamadas a procedimientos remotos ( 2002). [23] Él mismo publicó unas memorias 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 Pascal concurrente". [15]
El 31 de julio de 2007, Brinch Hansen murió, poco después de que le diagnosticaran un 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 abarca cinco décadas, Brinch Hansen hizo contribuciones fundamentales en las áreas de sistemas operativos, computación concurrente y computación paralela y distribuida que influyeron en la configuración del desarrollo de esos campos y 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 del mundo". business" [25] y su compromiso de probar 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 3 días redactando la propuesta del monitor y 3 años implementándola, puedo entender muy bien esta tentación. Quizás también sea a veces una respuesta humana a la tremenda presión sobre los profesores universitarios para obtener financiación y reconocimiento rápidamente. Sin embargo, debemos recordar que en ingeniería sólo una cosa cuenta: ¿funciona (no "podría funcionar" o "no sería bueno si funcionara")? [26]
El sistema de multiprogramación RC 4000 introdujo el concepto ahora estándar de núcleo de sistema operativo y la separación de mecanismo y política en el diseño del sistema operativo. Las arquitecturas de microkernel modernas tienen sus raíces en la arquitectura de núcleo extensible del RC 4000. [15] La mejora del rendimiento del microkernel fue un tema importante en la investigación de sistemas operativos durante tres décadas después del RC 4000.
El texto de Brinch Hansen, Principios del sistema operativo , fue el primer libro de texto completo sobre sistemas operativos. Finalmente se publicó 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 quedara 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 del 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 claramente y al grano. Tiene buen ojo para el principio general detrás del ejemplo, pero logra 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) votaron Principios del sistema operativo como uno de los 25 libros clásicos principales, en una encuesta para elegir libros clásicos agotados para agregarlos a la Biblioteca digital ACM. Los Principios del Sistema Operativo ocuparon el puesto 15 en la encuesta, apareciendo en el 8,8% de las papeletas. [27] Ahora está disponible en la Biblioteca Digital ACM.
Utilizando Concurrent Pascal, Brinch Hansen demostró que era factible implementar completamente 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 podrí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. Aquí se ve un sistema operativo completo, con cada línea de programa abierta a escrutinio. No hay ningún misterio oculto, y tras estudiar ejemplos tan extensos, el lector siente que podría abordar trabajos similares y que podría cambiar el sistema a su antojo. 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 cola. [30] Hoare refinó las reglas de reanudación del proceso. [31] Brinch Hansen creó la primera implementación de monitores, en Concurrent Pascal. [6] En 1990 se habían creado más de una docena de lenguajes adicionales basados en monitores: Simone, Modula , CSP/k, CCNPascal, PLY, Pascal Plus, Mesa, SB-Mod, Concurrent Euclid , Pascalc, Concurrent C, Emerald, Real. -tiempo Euclides, Pascal-FC, Turing Plus , Predula. [6]
Concurrent Pascal fue el primer lenguaje de programación concurrente: [29] el primer lenguaje desarrollado específicamente para programación concurrente y, lo que es más importante, el primer lenguaje que demostró que era posible incorporar funciones seguras [32] de alto nivel para la concurrencia, donde el El sistema podría garantizar que los procesos accedan únicamente a conjuntos disjuntos de variables y no interfieran 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 portátil para Concurrent Pascal y el sistema operativo Solo se distribuyó a al menos 75 empresas y 100 universidades en 21 países, lo que resultó en 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 sus monitores "influyeron mucho en la mayoría de las propuestas de lenguaje concurrentes posteriores". [6]
The Architecture of Concurrent Programs 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ó:
Sin duda, se han realizado mejoras en los últimos doce años. Tenemos mejores algoritmos de sincronización y lenguajes más sofisticados (si 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 ACM votaron La arquitectura de los programas concurrentes como uno de los 25 libros clásicos principales, ubicándolo en el puesto 18 en la encuesta y apareciendo en el 8% de las papeletas. [27] Ahora está disponible en la Biblioteca Digital ACM.
Las llamadas a procedimientos remotos utilizadas en los sistemas operativos modernos tienen sus raíces 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 el contexto del sistema operativo como 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 recursividad paralela, [17] [19] y mostró cómo implementarlos de manera eficiente. [37]