Mach is een compactekernel ontwikkeld aan deCarnegie Mellon Universiteit (CMU). Het werd ontwikkeld voor de ondersteuning van onderzoek op het gebied vanbesturingssystemen, waarbij de nadruk lag opgedistribueerde enparallelle berekeningen. Het project aan de CMU was actief van1985 tot en met1994.
Mach is ontwikkeld vanuit het inzicht dat moderne besturingssystemen een aantal dingen met elkaar gemeen hebben of zouden moeten hebben, zoals:
In het begin en midden van de jaren 80 waren er een aantal projecten die probeerden in deze behoeften te voorzien. Vaak ging het daarbij om het veranderen van onderdelen van bestaande besturingssystemen, vooralBSD. Na iedere wijziging werd het besturingssysteem opnieuwgecompileerd, de machine opnieuw opgestart en de wijziging uitgeprobeerd. Deze benadering was problematisch, vooral ook omdat zelfs kleine probleempjes de hele machine dedencrashen.
Met Mach begon men een nieuw concept te verkennen, dat nu bekendstaat onder de naammicrokernel. Daarbij bevindt zich de code van het besturingssysteem niet in één grote kernel, maar wordt de meeste code gedelegeerd in kleinere programma's, zogenaamdeservers, die net als alle andere programma's draaien als processen onder de microkernel. Daarbij kwam een eind aan de situatie waarbij de kernel min of meer gelijkstond aan het besturingssysteem, en werd de rol van de kernel beperkt tot die van verkeersagent en dienstregelaar voor de servers.
Dit zou moeten betekenen dat men na een wijziging aan het besturingssysteem alleen maar het gewijzigde server-programma hoefde te herladen, zonder het hele besturingssysteem te hoeven hercompileren. Alleen na het werken aan de Machkernel zelf zou een herstart nog nodig zijn, en dat zou maar zelden moeten voorkomen.
Mach is zelf geen volledig besturingssysteem en zonder een verzameling servers is het vrijwel onbruikbaar. Deze servers bestonden toen echter nog niet. Om toch een bruikbaar systeem te krijgen, maakten de auteurs van Mach even snel een aanpassing van het besturingssysteemBSD: in plaats van BSD in onderdelen op te breken en van ieder onderdeel eenserver te maken, compileerden ze eenvoudigweg de hele kernel als één server en draaiden ze dat. Het resultaat stond bekend alsPOE.
POE draaide dus min of meer als een toepassing zoals alle andere, maar de prestaties waren vreselijk. Voor iedere aanroep vanuit een gebruikerstoepassing, bijvoorbeeld om de tijd op te vragen van de systeemklok, moest een bericht naar de kernel worden gestuurd (een bewerkelijke verrichting die bekendstaat alscontext switch). De kernel stuurde dat bericht dan via nog een context switch door naar deUnix-library. Het antwoord moest de hele weg weer terug. Dus kreeg Mach, buiten zijn schuld, de reputatie flexibel maar erg langzaam te zijn.
In het daarop volgende decennium heeft men dit berichtenverkeer vele malen sneller kunnen maken. Uiteindelijk werden de prestaties van Mach-achtige besturingssystemen vaak beter dan die van de BSD's waar ze op gebaseerd waren. Tegen die tijd had de academische wereld echter de interesse in het onderzoek op het gebied van besturingssystemen min of meer verloren, en zo is de belofte van Mach nog altijd niet ingelost.
Ooit dacht men namelijk dat Mach de hele wereld van de besturingssystemen langzaam zou overnemen, maar dit is niet gebeurd. Misschien is de belangrijkste reden voor het algemene falen van Mach wel luiheid: iedereen leek te denken dat iemand anders maar een opbibliotheken gebaseerd besturingssysteem moest leveren, en dus deed niemand het. De tot nu toe grootste inspanning in die richting isde Hurd vanGNU. De Hurd is echter al meer dan tien jaar vertraagd, mede door de opkomst vanLinux. Een aantal commerciële besturingssystemen heeft meer succes gehad, zoalsQNX, dat alle beloften van Mach lijkt in te lossen.
Het werk aan Mach vond een aantal jaren lang plaats aan de CMU, maar werd uiteindelijk stilgelegd toen veel van de medewerkers de universiteit verlieten voor het bedrijfsleven. Mach is in het midden van de jaren 90 korte tijd weer tot leven gewerkt aan deUniversity of Utah, wat leidde tot Mach 4 met belangrijke verbeteringen, maar werd daarna weer een slapend project.
Ondertussen benaderde een aantal bedrijven het gebruik van Mach op een praktische manier. De BSD-laag (of die van een ander besturingssysteem) werd direct binnenin de kernel gedraaid, zodat veel context switches konden worden voorkomen. Dat leverde redelijke prestaties op, zonder op de mogelijkheden van meerdere processoren en makkelijk te gebruikenthreads in te leveren. Maar zelfs deze voordelen zijn relatief kleiner geworden omdat de verscheidene Unix-aanbieders ze inmiddels in hun eigen producten hebben verwerkt.
Dergelijke versies van op Mach gebaseerde besturingssystemen waren onder andereOSF/1,NeXTSTEP, enOS/2 vanIBM voor de op deRS/6000 gebaseerde machines. Van deze systemen wordt er geen nog gebruikt. Ook andere besturingssystemen verkenden de mogelijkheid om naar een dergelijke benadering over te stappen, zoalsPink vanApple en Workplace OS van IBM.
Inmiddels heeftAppleOpenSTEP overgenomen om daarmee hetMac OS te vervangen. (OpenSTEP is in feite een bijgewerkte versie van het op Mach 2.5 gebaseerde besturingssysteemNeXTSTEP.) Het resultaat heetMac OS X, wat net als zijn voorlopers gebaseerd is op de combinatie Mach/BSD.