# Mach (nucli)

Mach és un projecte de disseny de sistemes operatius iniciat a la Universitat Carnegie Mellon amb l'objectiu de desenvolupar un micronucli.

## Objectiu

Mach és un nucli de sistema operatiu desenvolupat a la Carnegie Mellon University (CMU) per suportar la recerca de sistemes operatius, principalment computació distribuïda i paral·lela. El projecte es va dur a terme a la CMU des de 1985 fins a 1994.
Mach es va desenvolupar amb la premissa que tots els sistemes operatius moderns comparteixen una sèrie de característiques en comú, o són desitjades si és que no les tenen encara. Aquestes inclouen:
* Suport per a múltiples aplicacions usant multitasca.
* Fils, els quals poden ser pensats com les parts d'una aplicació, o mini-aplicacions quan hi ha multitasca.
* Suport per a multi-processadors, en una màquina única o sobre una xarxa.
* Comunicacions inter-processos, enviant missatges directament entre aplicacions.
* Protecció i seguretat de memòria.

## Història

Per l'època, a inicis de la meitat dels 80, diversos projectes van intentar resoldre un d'aquests problemes. Això típicament va suposar partir d'un sistema operatiu existent - sovint BSD (UNIX) - i modificar-ne parts. Després de cada modificació el sistema operatiu era compilat, la màquina reiniciada, i es provava el nou canvi. Hi havia una sèrie de problemes amb aquest enfocament, fins i tot els més insignificants errors causaven que la màquina sencera es pengés.
Mach explora el concepte conegut com a micronucli. En lloc de tenir tot el codi per al sistema operatiu en un gran programa únic (anomenat nucli), la majoria del codi està ubicat en programes més petits coneguts com a servidors, els quals s'executen com qualsevol altre programa. El treball del nucli es redueix essencialment a "ser" el sistema operatiu, a mantenir els servidors i programar el seu accés al maquinari.
En teoria això significa que els canvis al sistema operatiu tan sols requereixen una recàrrega d'aquest únic programa servidor, concepte oposat a reconstruir el sistema operatiu i reiniciar la màquina. Només treballar en el nucli Mach en si mateix requeriria un reinici i en teoria això hauria de ser un fet inusual.
Mach no és un sistema operatiu en si mateix, i és inservible sense un conjunt de servidors. De manera que per obtenir un sistema útil i executant, els autors de Mach van portar el Unix BSD al nucli Mach de forma ràpida i simple: en comptes de separar BSD en diferents parts i construir cadascuna d'elles com un servidor, simplement compilar el nucli sencer en un servidor i el van executar. El resultat era conegut com a POE.
Amb POE executant entre les altres aplicacions, el rendiment va ser pèssim. Cada crida d'una aplicació d'usuari, requeria que el missatge fos enviat al nucli (una operació simple coneguda com a canvi de context), el qual enviava la comanda a la llibreria Unix amb un altre canvi de context i després repetir el procés per a obtenir la resposta. No obstant això, Mach, tot i que no era un error intrínsec, era considerat molt poderós, però increïblement lent.
Durant la dècada següent, el treball es va orientar a millorar el funcionament d'aquests missatges, fins al punt que el rendiment d'aquests sistemes operatius basats en Mach fou sovint millor que el dels BSD en què estaven basats. No obstant això per aquest temps el món acadèmic havia perdut en gran part interès en la investigació de sistemes operatius.

## En l'actualitat

A finals del segle XX es pensava que el Mach assumiria lentament el control de l'univers sencer de sistemes operatius, però això no ha succeït. Potser la raó més gran del fracàs de Mach pot ser la "ganduleria": a tots els semblava que era el treball d'un altre lliurar la biblioteca basada en el SO, i no ho va fer ningú. L'esforç més gran fins ara és GNU Hurd, però GNU Hurd duu al voltant d'una dècada d'endarreriment. Diversos sistemes operatius propietaris han estat més encertats, incloent QNX que compleix totes les expectatives de Mach.
El treball al capdamunt del Mach es va dur durant diversos anys a la CMU, per quedar finalment inactiu quan molts dels desenvolupadors van deixar l'acadèmia per treballar a la indústria. El Mach va ser breument reviscut a la Universitat de Utah a mitjans dels 90 i va produir el Mach 4 (http://www.cs.utah.edu/flux/mach4/html/Mach4-proj.html) que tenia millores significatives, abans de quedar inactiu altre cop.
Mentrestant empreses d'informàtica van prendre enfocaments pràctics per utilitzar Mach. La capa del BSD (i altres) va ser executada directament dins el nucli (el que evita així intercanvis de context) el que va donar lloc a un rendiment raonable mentre que encara conservava els avantatges del multiprocés i d'un model de fils fàcil d'utilitzar. No obstant això fins i tot aquests avantatges s'han erosionat tant com el fet que diverses empreses d'informàtica de Unix que han treballat per a proporcionar als seus propis productes.

## Relacions amb altres sistemes operatius

Els sistemes operatius basats en aquest concepte del Mach van ser OSF/1, NextStep, i IBM OS/2 per les màquines basades en RS/6000 - cap dels quals ja usat àmpliament. Altres sistemes operatius volien migrar a aquesta classe de sistema també, com Pink d'Apple, Workplace OS d'IBM i diversos més.
Apple va seleccionar OpenStep per a ser la base per al successor del seu clàssic Mac OS. Es va convertir en API Cocoa Mac OS X. OpenStep és de fet una versió actualitzada de NextStep, que va utilitzar el Mach 2.5. Com a tal, l'amalgama de Mach/BSD de OpenStep és la base per al sistema operatiu Mac OS X d'Apple.
El desenvolupador líder en el projecte Mach, Richard F. Rashid, ha estat treballant a Microsoft des 1991 en les diverses posicions a nivell superior en la divisió de la recerca de Microsoft, Microsoft Research. El Windows NT de Microsoft, precursor del Windows XP, va començar amb un model basat en un micronucli similar al de Mach. Un altre dels desenvolupadors originals de Mach, Avie Tevanian, va ser abans cap de programari en NeXT i fins a maig del 2006 va ser director de l'Oficina de Tecnologia de programari a Apple.

## Vegeu també

* Unix
* Mac OS X
* BSD
* GNU Mach

## Enllaços externs

* The Mach project at Carnegie Mellon
* Mach kernel source code - Browsable version of the Mach nucli source code on the FreeBSD/Linux kernel cross reference site