Puertos como capacidades
Derechos de comunicación protegidos por el núcleo, sin autoridad ambiental. La idea detrás de todo el modelo de seguridad de KyberOS, y de cada sistema de capacidades moderno.
En desarrollo activo
Antes de que existiera Linux
En 1985, seis años antes de Linux 0.01, un equipo de la Universidad Carnegie Mellon empezó a reconstruir el núcleo UNIX alrededor de una idea radical: mantener el núcleo pequeño, poner todo lo demás en espacio de usuario y conectarlo todo con mensajes. Lo llamaron Mach. Cuatro décadas después, sus descendientes corren en cada dispositivo Apple del planeta, su diseño de memoria virtual vive dentro de los BSD y su vocabulario es el que KyberOS sigue hablando.
Orígenes
La historia empieza en los años setenta en la Universidad de Rochester, donde el grupo de Jerry Feldman construyó RIG, el Rochester Intelligent Gateway: una red de minicomputadoras controlada por un sistema operativo de paso de mensajes llamado Aleph, nombrado por el punto de Borges que contiene todos los demás puntos. Un joven ingeniero del equipo, Richard Rashid, cargaría con su idea central el resto de su carrera: la comunicación, no los archivos, como principio organizador de un núcleo.
En 1979 Rashid dejó Rochester por Carnegie Mellon, y para 1981 él y George G. Robertson habían construido Accent para el proyecto de cómputo distribuido SPICE. Accent le dio al mundo las primitivas por las que Mach es recordado: puertos protegidos por el núcleo como capacidades, IPC transparente en red y movimientos de memoria con copia en escritura vía la MMU.
Para 1985, DARPA quería una base moderna y lista para multiprocesadores para UNIX. CMU ganó el encargo: reconstruir el núcleo BSD alrededor de las ideas de Accent, mantenerlo compatible con UNIX y hacerlo pequeño. El proyecto Mach corrió en CMU de 1985 a 1994.
El equipo solía ir en bici a comer bajo la lluvia de Pittsburgh, salpicando charcos de lodo. Avie Tevanian bromeó que muck («lodo») podía ser un retroacrónimo: Multi-User (o Multiprocessor Universal) Communication Kernel.
Más tarde, el ingeniero italiano de CMU Dario Giuse le preguntó al líder del proyecto, Rick Rashid, cómo se llamaba. Al oír «MUCK» pronunciado, Giuse lo escribió como dictaba la ortografía italiana: Mach. A Rashid le gustó tanto la grafía que se quedó. Nunca lleva el nombre de Ernst Mach ni de la velocidad del sonido, aunque el juego de palabras era demasiado bueno para corregirlo.
Cronología
Jerry Feldman, J.E. Ball, J.R. Low, Paul Rovner, Luidy Bukys y un joven Rick Rashid construyen el Rochester Intelligent Gateway. Aleph demuestra que un núcleo organizado alrededor del paso de mensajes funciona, y siembra la semilla de todo lo que vino después.
Rashid y George Robertson convierten las lecciones de Aleph en Accent: puertos de capacidad que el propio núcleo protege, IPC transparente en red y copia en escritura vía la MMU. El ADN de Mach está completo antes de que Mach exista.
CMU acepta el reemplazo de BSD. El artículo de USENIX de 1986, «Mach: A New Kernel Foundation for UNIX Development», establece el vocabulario que aún se usa: tareas, hilos, puertos, mensajes, objetos de memoria, paginadores externos.
Mach corre en multiprocesadores VAX, Sun-3, IBM RT, Encore y Sequent. El código BSD sigue dentro del núcleo. En 1988, NeXT de Steve Jobs lanza NeXTSTEP 0.8 sobre Mach, con Tevanian dirigiendo el software. En 1989 la Open Software Foundation adopta Mach 2.5 como base de OSF/1, su rival de System V.
El código BSD es expulsado del núcleo hacia servidores en espacio de usuario. Un solo núcleo puede alojar ahora varias personalidades de SO a la vez: BSD, DOS, Mac OS, OSF/1. MIG convierte las interfaces IPC en stubs RPC generados. OSF/1 se convierte en Digital UNIX, luego Tru64, y da vida a sistemas desde estaciones de trabajo hasta el Intel Paragon.
El fundador de Mach se une a Microsoft y termina creando Microsoft Research, uno de los laboratorios industriales más influyentes en la historia de la computación.
CMU cierra el proyecto. El grupo FLUX de Jay Lepreau en la Universidad de Utah lo continúa como Mach 4: IPC más rápido mediante hilos migratorios (el trabajo de Bryan Ford), soporte x86 limpiado, controladores de Linux. Cuando Utah termina, Thomas Bushnell (BSG) adopta el código para el GNU Hurd como GNU Mach, mantenido por Roland McGrath y el proyecto GNU hasta hoy.
Apple y el Research Institute de OSF lanzan MkLinux: el propio Linux, corriendo como un solo servidor sobre Mach 3, en Power Macs. La idea de una personalidad de SO como servidor en espacio de usuario queda probada en producción. En 1997 Apple compra NeXT; Mach vuelve a casa, a Cupertino.
NeXTSTEP se convierte en Rhapsody, luego en Mac OS X Server 1.0 (1999), luego en Darwin, liberado como código abierto en 2000, y finalmente en Mac OS X 10.0 en marzo de 2001. Su núcleo, XNU («X is Not Unix»), fusiona Mach con BSD y el framework de controladores IOKit: un híbrido, por velocidad. Tevanian es jefe de software de Apple hasta 2006.
iPhone (2007), iPad, Apple Watch, Apple TV, Vision Pro: cada dispositivo Apple lleva un descendiente de XNU, miles de millones de herederos de Mach en bolsillos y muñecas. GNU Mach sigue sosteniendo al Hurd. El diseño de memoria virtual de Mach, adoptado en 4.4BSD, vive en FreeBSD. Y en KyberOS, la visión original corre de nuevo: Mach puro, personalidades en espacio de usuario, sin híbridos.
La gente
KyberOS se apoya en su trabajo. Esta página, y este proyecto, existen para mantener viva su idea y darle el crédito que merece.
Fundador del proyecto
Llevó la idea del paso de mensajes del RIG de Rochester al Accent de CMU y a Mach mismo, y dirigió el proyecto en su mejor época. Se fue en 1991 para fundar Microsoft Research.
Co-creador
Arquitecto central de Mach y la fuente accidental de su nombre. Llevó Mach a NeXT como jefe de software y luego a Apple, convirtiendo a Mach en la línea de núcleos más desplegada de la historia.
Artículo de 1986, primer autor
Dirigió el escrito que presentó al mundo las tareas, los hilos, los puertos y los mensajes en USENIX 1986.
Equipo central, artículo de 1986
Central en el diseño del IPC de Mach y en el trabajo posterior de CMU sobre Mach, incluido el Kernel Interface Manual de 1990.
Equipo central, artículo de 1986
Ingeniería de memoria virtual y de núcleo en Mach; siguió con una larga carrera en Microsoft Research entre sistemas y biología computacional.
Equipo central, artículo de 1986
Ingeniero de núcleo y depurador legendario en Mach 2 y Mach 3; luego llevó su experiencia a GNU Mach.
Equipo central, artículo de 1986
Arquitecto de las bases de tareas/hilos y memoria virtual de Mach; coautor del trabajo de manejo de excepciones que definió a Mach 3.
Época de Mach 3
Planificación y el mecanismo de manejo de excepciones de Mach; coautor del Kernel Interface Manual de 1990.
Época de Mach 3
Coautor de MIG y la mente detrás de las continuaciones, el truco de gestión de hilos de Mach que ahorraba espacio e influyó a una generación de núcleos.
Época de Mach 3
Coautor de MIG desde el proyecto de interfaces IPC Matchmaker; después, una larga carrera en Microsoft.
Época de Mach 3
Coautora de MIG, escribió los manuales de instalación y compilación de Mach 3 con los que el mundo instaló Mach, cocreó el sistema de distribución SUP e hizo trabajo fundacional en seguridad de Mach.
Accent, 1981
Coautor de Accent, el antepasado directo de Mach, donde los puertos como capacidades y el IPC en red se probaron por primera vez.
1975–79
Jerry Feldman, J.E. Ball, J.R. Low, Paul Rovner, Luidy Bukys y sus colegas construyeron Aleph sobre una Data General Eclipse y arrancaron toda esta línea de pensamiento.
El nombre
Ingeniero de CMU cuya ortografía italiana de «MUCK» le dio a Mach su nombre: uno de los accidentes más felices de la computación.
Mach 4, Universidad de Utah
Dirigió el grupo FLUX que mantuvo vivo a Mach después de CMU, formando a una generación de investigadores de sistemas. (1954–2008)
Desarrollador líder de Mach 4
Reescribió el modelo de hilos de Mach alrededor de los hilos migratorios, impulsó los lanzamientos prácticos para x86 y mantuvo la llama viva en Utah.
GNU Mach, 1996
Arquitecto del GNU Hurd; adoptó el Mach 4 de Utah como GNU Mach y guió sus primeros lanzamientos.
Mantenedor de GNU Mach
Mantenedor de GNU Mach y del Hurd por muchos años; dirigió la modernización de controladores OSKit-Mach.
1984–hoy
Jonathan Chew, Joseph Barrera III, Brian Bershad, Alessandro Forin, Randall Dean, Eric Cooper, David Julin, Richard Sanzi, Steven Shafer, Keith Loepere, el equipo del OSF Research Institute en Grenoble, la gente de MkLinux, y cada hacker del Hurd y de Darwin que mantuvo a Mach corriendo.
La herencia
Derechos de comunicación protegidos por el núcleo, sin autoridad ambiental. La idea detrás de todo el modelo de seguridad de KyberOS, y de cada sistema de capacidades moderno.
Mach 3 alojaba servidores BSD, DOS, Mac OS y OSF/1 sobre un solo núcleo. Las personalidades UNIX + Linux de KyberOS son la misma idea, hecha con cuarenta años de retrospectiva.
Copia virtual para fork, vm_copy y cargas de mensajes. Mach convirtió a COW en el truco estándar para mover datos sin mover bytes.
Objetos de memoria con almacenamiento de respaldo en espacio de usuario. Los sistemas de archivos y los controladores se volvieron servidores, y el núcleo dejó de necesitar saberlo.
Definiciones de interfaz compiladas a stubs RPC: el patrón detrás de cada IDL moderno, de CORBA a gRPC al MIG del plan de KyberOS.
El costo de IPC castigó el sueño multiservidor de Mach y provocó el L4 de Liedtke como respuesta. KyberOS codifica ambas lecciones: rutas rápidas en el núcleo de IPC, un servidor grande por personalidad.
Linaje
Cada rama de abajo nació en un edificio de ciencias de la computación en Pittsburgh. KyberOS es una rama nueva del tronco original.
Las mujeres y los hombres que construyeron Mach lo hicieron a la vista de todos: artículos, código fuente, manuales y un diseño lo bastante bien documentado para reimplementarlo décadas después. KyberOS existe porque eligieron compartir su trabajo. Donde nos apartamos de ellos, lo hacemos con sus lecciones en la mano; donde los seguimos, lo hacemos con gratitud.