Die Geschichte der BSD: Von Unix-Ergänzung zum freien Betriebssystem
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 10,18 KB
Was ist BSD?
BSD steht für Berkeley Software Distribution und bezeichnet ein Betriebssystem, das vom Unix-System abgeleitet wurde. Es basiert auf den Beiträgen, die ursprünglich von der University of California in Berkeley geleistet wurden.
Die Anfänge und die Rolle von AT&T
In den frühen Jahren des Unix-Systems erlaubten dessen Schöpfer von den Bell Labs (Teil von AT&T) der University of California in Berkeley und anderen Universitäten, den Quellcode zu nutzen und an ihre Bedürfnisse anzupassen. Während der siebziger und achtziger Jahre nutzte Berkeley das System intensiv für die Forschung im Bereich Betriebssysteme.
Als AT&T die Nutzungserlaubnis für kommerzielle Zwecke zurückzog, förderte die Universität die Entwicklung einer eigenen, von Unix inspirierten Distribution. Diese Distribution basierte auf den eigenen Beiträgen der Universität und war zunächst für akademische Zwecke gedacht. Später wurden die Einschränkungen bezüglich Vervielfältigung, Verbreitung und Veränderung stark reduziert.
Geschichte der BSD-Distributionen
Die ersten PDP-11 Distributionen
Die ersten Unix-Distributionen der Bell Labs in den 70er Jahren enthielten den Quellcode des Betriebssystems, was es Forschern an Universitäten ermöglichte, Unix zu modifizieren und zu erweitern. Das erste Unix-System in Berkeley war eine PDP-11, die 1974 installiert und seitdem von der Informatik-Abteilung für Forschungszwecke genutzt wurde. Andere Universitäten interessierten sich für die Software aus Berkeley. Im Jahr 1977 erstellte und versandte Bill Joy, damals Student in Berkeley, die Bänder der ersten Berkeley Software Distribution (BSD).
Wichtige frühe Versionen
- 1BSD: War eine Ergänzung zur Sechsten Edition von Unix und kein vollständiges Betriebssystem. Hauptbestandteile waren ein Pascal-Compiler und ein Texteditor, erstellt von Bill Joy.
- 2BSD: Wurde 1978 veröffentlicht. Es enthielt aktualisierte Versionen von 1BSD sowie zwei neue Programme von Joy, die bis heute auf Unix-Systemen existieren: der Texteditor vi und die C-Shell. Die späteren Versionen von 2BSD enthielten Anpassungen der BSD-Distributionen, die auf der VAX-Architektur basierten, um sie mit der PDP-11-Architektur kompatibel zu machen.
- 2.9BSD: Veröffentlicht 1983. Diese Version enthielt Code von BDS 4.1c und wurde als erste Distribution als vollständiges Betriebssystem betrachtet (eine modifizierte Version von Unix Version 7). Die jüngste Version war 2.11BSD, die 1992 veröffentlicht wurde und mithilfe von Updates durch Freiwillige bis 2003 weiterentwickelt wurde.
VAX-Versionen und 3BSD
1978 wurde in Berkeley ein VAX-Computer installiert. Der existierende Port von Unix auf die VAX-Architektur, UNIX/32V, nutzte jedoch nicht die Kapazität des virtuellen Speichers dieser Architektur. Der Kernel von 32V wurde von Berkeley-Studenten weitgehend neu geschrieben, um den virtuellen Speicher nutzen zu können. Ende 1979 wurde 3BSD veröffentlicht, das einen neuen Kernel, 2BSD-Anpassungen für die VAX-Architektur und Dienstprogramme von 32V enthielt. BSD 3 wurde auch als Virtual VAX/UNIX oder vmunix (Virtual Memory Unix) bezeichnet. Der Begriff /vmunix wurde für BSD-Kernel-Images bis 4.4BSD verwendet.
Die 4.x BSD-Reihe
BSD 4, veröffentlicht im November 1980, bot viele Verbesserungen gegenüber 3BSD. Dazu gehörten insbesondere:
- Überwachung der Arbeit (Job Control) der früheren Version der C-Shell (csh).
deliver(der Vorläufer vonsendmail).- "Zuverlässige" Signale.
- Die Curses Programm-Bibliothek.
4.1BSD bis 4.3BSD
- 4.1BSD: (Juni 1981) War eine Reaktion auf die Kritik an BSD im Vergleich zum damals dominierenden Betriebssystem für VAX, VMS. Bill Joy verbesserte 4.1BSD, bis es die gleiche Leistung wie VMS erreichte. Die Distribution sollte ursprünglich 5BSD genannt werden, wurde aber umbenannt, um Verwechslungen mit der Veröffentlichung von Unix System V durch AT&T zu vermeiden.
- 4.2BSD: Die Implementierung dauerte zwei Jahre und brachte erhebliche Verbesserungen. Vor der offiziellen Veröffentlichung gab es drei Zwischenversionen:
- 4.1a: Enthielt eine modifizierte Version der vorläufigen TCP/IP-Implementierung von BBN.
- 4.1b: Umfasste das neue Berkeley Fast File System (FFS), realisiert von Marshall Kirk McKusick.
- 4.1c: War eine interne Version, die in den letzten Monaten der Entwicklung von BSD 4.2 verwendet wurde.
- 4.3BSD: (Juni 1986) Die wichtigsten Änderungen waren die Verbesserung vieler neuer Beiträge, die in 4.2BSD nicht enthalten waren, sowie die Optimierung des BSD-Codes. Die TCP/IP-Implementierung hatte sich vor der Veröffentlichung erheblich von der offiziellen BBN-Einführung unterschieden. Nach Tests durch die DARPA wurde jedoch festgestellt, dass die in BSD 4.2 enthaltene Version überlegen war und beibehalten werden sollte. Nach Version 4.3 wurde entschieden, dass zukünftige Versionen auf einer anderen Architektur als der veralteten VAX basieren sollten. Die Anpassung an die Power 6/32 Plattform (4.3BSD-Tahoe) bewies den Wert der Trennung von maschinenabhängigem und maschinenunabhängigem Code, was die zukünftige Portabilität erleichterte.
Net/2 und Rechtsstreitigkeiten
Nach der Veröffentlichung von Net/1 schlug Daeubler vor, weitere nicht-AT&T-Teile von BSD unter derselben Lizenz wie Net/1 freizugeben. Ziel war es, viele der Standard-Unix-Werkzeuge ohne AT&T-Code neu zu implementieren. Innerhalb von 18 Monaten wurden alle proprietären AT&T-Dienstprogramme ersetzt; nur wenige proprietäre Dateien verblieben im Kernel. Diese Dateien wurden entfernt, was zu Net/2 führte – einem nahezu vollständigen, frei verteilbaren Betriebssystem.
Net/2 diente als Grundlage für zwei BSD-Ports auf die Intel 80386 Architektur: William Jolitz' 386BSD und das proprietäre BSD/386 (später umbenannt in BSD/OS) von Berkeley Software Design (BSDi). 386BSD war von kurzer Dauer, war aber der Ausgangspunkt für FreeBSD und NetBSD.
BSDi geriet bald in rechtliche Probleme mit AT&T, die die Rechte an Unix System V und der Marke beanspruchten. Die Klage wurde 1992 eingereicht, wobei die Verteilung von Net/2 bis zur Klärung der Gültigkeit der Forderungen untersagt wurde.
Der Prozess verlangsamte die Entwicklung der freien BSD-Nachfolger für fast zwei Jahre, in denen ihre Rechtsform in Frage stand. Dies führte dazu, dass Linux, dessen Entwicklung zur gleichen Zeit begann, größere Unterstützung gewann. Linus Torvalds sagte, hätte es ein freies, Unix-basiertes Betriebssystem für die 386-Architektur gegeben, hätte er Linux wahrscheinlich nicht erstellt. Die Auswirkungen auf die Softwarelandschaft wären erheblich gewesen.
4.4BSD und die Nachfolger
Die Klage wurde im Januar 1994 zugunsten von Berkeley beigelegt. Von den 18.000 Dateien der Distribution mussten nur drei entfernt und 70 geändert werden, um die Eigentumsrechte von AT&T zu kennzeichnen.
Im Juni 1994 wurde BSD 4.4 in zwei Versionen veröffentlicht:
- 4.4BSD-Lite: Frei verfügbar, ohne proprietären Code.
- 4.4BSD-Encumbered (belastet): Nur für AT&T-Händler verfügbar.
Schaltungsvereinfachung und Boolesche Algebra
Vereinfachung einer Schaltung besteht darin, zunächst die Boolesche Funktion der Schaltung festzustellen, dann die Funktion zu vereinfachen und schließlich die Schaltung der vereinfachten Funktion darzustellen.
Die Vereinfachung von Schaltungen bringt einige Herausforderungen mit sich. Manchmal ist es schwierig oder unmöglich, allein anhand der Form der Booleschen Funktion zu bestimmen, welche von mehreren Schaltungen die einfachste ist. Die optimale Schaltung kann von den relativen Kosten der benötigten Logikgatter und Schalter abhängen.
Wenn man sich nur auf die Gesetze der Booleschen Algebra stützt, könnte eine mögliche Vereinfachung übersehen werden. Es ist auch möglich, dass ein einfacherer Schritt erkannt wird, wenn man die dualen Gesetze anstelle der ursprünglichen betrachtet. Dies legt eine weitere Vereinfachungsmethode nahe, die nützlich sein kann und sich wie folgt ausdrückt:
Um eine Funktion f zu vereinfachen, nehmen Sie die duale Funktion f* und vereinfachen Sie den resultierenden Ausdruck. Wenn Sie dann erneut die duale Funktion bilden, erhalten Sie die Funktion f zurück, jedoch in einer anderen Form, die in der Regel einfacher ist als das Original.
Karnaugh-Diagramme
Disjunktive und konjunktive Normalformen sind für verschiedene Zwecke nützlich, beispielsweise um festzustellen, ob zwei Ausdrücke dieselbe Boolesche Funktion darstellen. Für andere Zwecke sind sie jedoch oft umständlich und erfordern mehr Operationen als nötig. Eine Methode, um einen einfacheren Ausdruck zu definieren, ist die Methode der Karnaugh-Diagramme.
Karnaugh-Diagramme sind im Grunde einfache Venn-Diagramme, bei denen die Tabellen in verschiedenen Regionen innerhalb eines Rechtecks angeordnet sind.