# TRIX

TRIX es un núcleo de llamadas remotas a procedimientos, desarrollado por el Instituto Tecnológico de Massachusetts y cuyos autores decidieron que fuera libremente distribuido; Trix era totalmente compatible con UNIX Versión 7.

## Diseño e implementación

TRIX se basa en la inicialización de cada CPU del sistema con el mismo programa, pasando a cada instancia el ID numérico de la CPU en la que se ejecuta. Con esto, TRIX consiguió la primera CPU configurada de forma global, poniendo el FLAG correspondiente a cada instancia cuando está inicializada. Tras esto, cada instancia del kernel podía acceder a los datos globales, aunque también se podía acceder a los privados siempre que se tuviera el permiso necesario.
Al sistema de ficheros se podía acceder desde una aplicación desde el espacio de usuarios.
El kernel admitía subprocesos sin nombre ejecutados sobre dominios, donde cada dominio es un equivalente a un proceso en UNIX (pero sin ningún puntero de pila). Un subproceso podía cambiar los dominios, el nombre de referencia y la propia implementación de los procesadores asociados al sistema. El programador del sistema migraría los subprocesos entre CPUs, con el fin de tener ocupados los procesadores durante el máximo tiempo posible.
El "garbage collector" o el recolector de basura del sistema tenía como prioridad eliminar los elementos no utilizados, identificar los demás subprocesos periódicamente y liberaba los dominios no usados. El modelo de memoria compartida, usado para coordinar el trabajo entre CPUs, provocaba latencias altas en el bus de memoria, creando un sistema ineficiente. El sistema de TRIX se empezó implementando un sistema de paso de mensajes entre CPUs no bloqueantes, algo de los que los propios diseñadores eran conscientes.
Aunque el sistema operativo TRIX fue implementado en sus inicios en una NuMachine, su principal ventaja era que este sistema operativo era muy portable. Fue diseñado en lenguaje C y ensamblador.

## Intento de uso por parte del proyecto GNU

Richard Stallman menciona en el MANIFIESTO GNU de 1985 que existe un núcleo inicial para el sistema operativo GNU, aunque se necesitan muchas más características para emular un sistema UNIX.(Esto era una referencia al núcleo TRIX, donde sus autores decidieron distribuirlo como software libre.
Durante un discurso en octubre de 1986, Stallman detalló que el núcleo TRIX era ejecutable, pero tenía existía en ciertas partes del proyecto incompatibilidad con los sistemas UNIX(aunque aún faltara más por desarrollar). Actualmente los sistemas TRIX, usan un sistema de ficheros que comparte la misma estructura que los sistemas UNIX sobre el disco. Esto permitía depurar de forma mucho más sencilla, debido a que podían configurar los archivos con UNIX y ejecutar TRIX posteriormente. En diciembre de 1986, los desarrolladores usaron el kernel de TRIX como primero intento de generar el kernel para GNU.Posteriormente, vieron que TRIX era inviable como punto de partida de GNU
* Solo corría sobre " una oscura y cara caja negra 68000 ", por lo que entonces requería este sistema de portabilidad a otras arquitecturas.
* Se decidió que el diseño del microkernel Mach, servía de mejor forma en arquitecturas sobre servidores. Esto envolverá en un futuro a GNU Hurd.