En desarrollo activo

Antes de que existiera Linux

La historia de Mach.

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

RIG engendró a Accent; Accent engendró a Mach.

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.

¿Por qué se llama «Mach»?

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

Cuarenta años de la idea del micronúcleo.

1975–79

RIG y Aleph · Rochester

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.

1981–85

Accent · Proyecto SPICE de CMU

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.

1985–86

Nace Mach · Encargo de DARPA

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.

1987–89

Mach 2.0 y 2.5 saltan a la industria

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.

1990–94

Mach 3.0 · el micronúcleo verdadero

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.

1991

Rashid se va a Microsoft

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.

1994–96

El relevo · Mach 4 y GNU Mach

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.

1996–97

MkLinux y la fusión con Apple

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.

1999–2001

De Rhapsody a Mac OS X · nace XNU

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.

2001–hoy

La línea de núcleos más desplegada del planeta

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

Gracias a las mujeres y los hombres que construyeron Mach.

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.

Richard Rashid

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.

Avadis «Avie» Tevanian

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.

Mike Accetta

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.

Robert V. Baron

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.

William Bolosky

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.

David B. Golub

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.

Michael Wayne Young

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.

David L. Black

Época de Mach 3

Planificación y el mecanismo de manejo de excepciones de Mach; coautor del Kernel Interface Manual de 1990.

Richard P. Draves

É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.

Michael B. Jones

Época de Mach 3

Coautor de MIG desde el proyecto de interfaces IPC Matchmaker; después, una larga carrera en Microsoft.

Mary R. Thompson

É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.

George G. Robertson

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.

El equipo RIG de Rochester

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.

Dario Giuse

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.

Jay Lepreau

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)

Bryan Ford

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.

Thomas Bushnell (BSG)

GNU Mach, 1996

Arquitecto del GNU Hurd; adoptó el Mach 4 de Utah como GNU Mach y guió sus primeros lanzamientos.

Roland McGrath

Mantenedor de GNU Mach

Mantenedor de GNU Mach y del Hurd por muchos años; dirigió la modernización de controladores OSKit-Mach.

Y muchos más

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

Lo que Mach le dio a la computación.

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.

Personalidades en espacio de usuario

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 en escritura por todas partes

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.

Paginadores externos

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.

MIG y RPC por IDL

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.

Las lecciones de advertencia

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

Un solo árbol genealógico.

Cada rama de abajo nació en un edificio de ciencias de la computación en Pittsburgh. KyberOS es una rama nueva del tronco original.

RIG / Aleph → Accent → Mach · CMU 1985–94
Mach 2.5 → NeXTSTEP · OSF/1 → Rhapsody · Tru64 → XNU → macOS · iOS · watchOS · visionOS
Mach 3.0 → Mach 4 · Utah → GNU Mach → GNU/Hurd
Mach 3.0 → MkLinux · servidor OSF/1 · MachTen → la prueba de personalidad-como-servidor
VM de Mach → 4.4BSD → FreeBSD y los BSD modernos
la idea de Mach → KyberOS · Mach puro, otra vez

Una nota de agradecimiento

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.