Ah, endlich wieder eine technische Diskussion.

Der Originalartikel gefällt mir gut. Ein paar kleine Anmerkungen hätte ich noch:
- Defragged: Es ist wahrscheinlich ein "striped" RAID gemeint, kein "stripped" RAID.
- Prebindings: Seit Mac OS X 10.3.4 hat sich die Prebinding-Strategie von Apple nochmals geändert: Das Linking-System wurde so optimiert, dass Programme überhaupt nicht mehr prebound werden müssen. Dies wird nur noch für dynamische Bibliotheken gemacht.
Zu der SMART-Frage: SMART hat ursprünglich nichts mit Software zu tun, sondern ist eine reine Hardware-Technik, die seit etwa 1992 von den Festplattenherstellern eingeführt wurde. S.M.A.R.T. funktioniert so, dass auf dem Plattencontroller (seit ca. 1987 die Platine, die direkt auf dem Laufwerk sitzt) sich eine zusätzliche Diagnoseeinheit befindet, die statistische Daten über die Platte sammelt und dauerhaft speichert. Zu diesen beobachteten Daten zählt die Betriebsdauer, die Umgebungstemperatur, die Anzahl der Ein-/Ausschaltvorgänge, aber auch die Anzahl der aufgelaufenen Lese- und Schreibfehler, die verbrauchten Reservesektoren und vieles andere mehr. Welche Daten es genau sind, ist nicht genormt, und hängt vom jeweiligen Plattenhersteller und -modell ab.
Aus diesen statistischen Daten berechnet die Diagnoseeinheit einen kumulierten Schätzwert, der aussagt, ob die Platte die nähere Zukunft noch heil überleben wird, oder ob sie bald ihre Lebensdauer überschritten hat. Es handelt sich nur um einen einzigen ja/nein-Wert, der entweder sagt, "sieht noch gut aus" oder "Platte sollte so schnell wie möglich ausgetauscht werden".
Dieser Wert wird "S.M.A.R.T.-Status" genannt und man kann ihn mit verschiedenen Programmen abrufen. Diese Programme "machen" in Wirklichkeit überhaupt nichts, außer jeder Platte den Befehl zu schicken "gib mir deinen aktuellen S.M.A.R.T.-Wert", und dann wird der Wert angezeigt. Mac OS X enthält ab Jaguar bereits eingebaute Programme, den SMART-Status anzuzeigen, und zwar das Festplatten-Dienstprogramm und das Programm "diskutil" für die Kommandozeile.
Also: der SMART-Status ist tatsächlich als Frühwarnung gedacht. Dafür wurde der ganze Aufwand mit dem Diagnoseprozessor auf der Platte überhaupt entwickelt. Aber: Da der Status aus statistischen Daten berechnet wird, die sich normalerweise nicht abrupt ändern, ist es nicht sinnvoll, sich den Status ständig anzeigen zu lassen. Ob man SMARTreporter braucht, halte ich deshalb für fraglich, muss aber jeder selbst wissen.
Ob man AppleJack braucht, halte ich für ebenso fraglich, denn die meisten Funktionen, die man dort findet, sind die Funktionen, die Florian bereits als überflüssig entlarvt hat und den Rest kann man auch mit der Original-Boot-DVD machen, die jedem Mac beiliegt.
Zum virtuellen Speicher:
Jedes Programm in Mac OS X läuft in einem sogenannten "virtuellen Speicher", tut also so, als würde es den kompletten Speicherraum für sich alleine haben. (Dies hat zunächst
nichts damit zu tun, dass Programme auch Teile der Festplatte als Behelfsspeicher verwenden können, falls der RAM-Speicher zu klein ist. Siehe unten.) Es ist technisch unmöglich, dass ein laufendes Programm in den virtuellen Speicherraum eines laufenden anderen Programms schauen kann, was man als "Speicherschutz" bezeichnet. Diese Funktion wird zum größten Teil
von der Hardware abgehandelt.
Alles, was außerhalb des eigenen virtuellen Raums liegt, kann ein Programm also nicht "sehen". Wenn ein Programm daher Dienste des Betriebssystems braucht, z.B. um Buchstaben auf den Bildschirm zu malen oder Tastendrücke zu empfangen, müssen diese Teile des Systems in den virtuellen Raum des Programms eingeblendet werden. Lässt man sich deshalb den virtuellen Speicherverbrauch jedes Programms in "Aktivitätsanzeige" ausgeben, sind die Werte dort so erschreckend hoch. Wenn ein kleines Programm wie das "Dock" also 340 MByte virtuellen Speicher verbraucht, ist das normal. Der größte Teil davon ist die Einblendung der ganzen Grafikbibliotheken in den Speicherraum des Docks. Wirklich "verbraucht" wird dabei erstmal nichts. Der Speicher ist ja nur virtuell.
Jedes Programm in Mac OS X läuft in einem virtuellen Raum von 4 GByte, von denen maximal 2 GByte vom Programm tatsächlich selbst genutzt werden dürfen. Der Rest ist rein virtuell, nur für die Einblendung von Bibliotheken gedacht. Verwendet man einen G5-Prozessor und eine Systemversion ab Tiger, so ist der virtuelle Speicher noch größer: Jedes Programm läuft hier in einem Raum von 16 Exabyte, das sind mehr als 16 Milliarden Gigabyte.
Ein Teil des virtuellen Speichers muss aber nun "in echt" da sein, sonst könnte das Programm ja gar nichts tun. Hierzu wird der virtuelle Speicher in Blöcke von 4 KByte Größe unterteilt und diese Blöcke werden durch eine Hardware-Einheit im Prozessor auf echten RAM-Speicher abgebildet. Diese Abbildung zwischen echtem und virtuellem Speicher ist völlig wild im RAM verstreut. Die Hardware kümmert sich schon darum.
Man kann nun dieses Verfahren mit einer zweiten Technik verbinden, die man als "Auslagerung" (englisch: "Paging") bezeichnet: Da die Programme ja sowieso nicht wissen, wo sich ihr Speicher in Wirklichkeit befindet, muss man den Speicher zur technischen Realisation des virtuellen Speichers gar nicht im RAM haben, sondern kann ihn auch auf der Festplatte halten. Die Festplatte ist zwar mindestens 100000-mal langsamer, aber wenn man es geschickt macht, funktioniert das auch. Da Festplatten pro Byte sehr viel billiger sind als RAM-Speicher, kann man so Geld sparen.
Das Problem ist nur, dass der Prozessor nicht direkt auf die Daten zugreifen kann, die auf der Platte liegen, dies geht nur mit RAM. Liegt ein 4-KB-Block - der in diesem Zusammenhang als "Speicherseite" bezeichnet wird - auf der Festplatte, so muss ihn das Betriebssystem erst von der Platte zurück ins RAM kopieren, was als "Einlagern" bezeichnet wird. Der umgekehrte Vorgang, vom RAM auf die Platte, heißt "Auslagern".
Dies läuft nun so: Zunächst wird der virtuelle Speicher der laufenden Programme auf RAM-Speicher abgebildet, solange der Vorrat reicht. Sobald die Summe aller laufenden Programme mehr an tatsächlich verbrauchtem Speicher benötigt, als an RAM da ist, sucht sich das Betriebssystem die gerade "überflüssigste" Speicherseite aus und lagert sie vom RAM auf die Festplatte aus. Danach darf das Programm, das mehr Speicher verbraucht, die frei gewordene Seite im RAM nutzen. Um festzustellen, welche Speicherseiten gerade nicht unbedingt notwendig sind, wird für jede einzelne Seite eine Art Benutzungsstatistik geführt. Die Seite, deren Speicherinhalt als längste nicht mehr von irgendeinem Programm benötigt wurde, fliegt raus.
Irgendwann passiert es natürlich, dass ein Programm doch wieder die Daten von einer Seite braucht, die gerade "draußen auf der Festplatte" liegt. Man spricht dann von einem "Seitenfehler", womit aber nur gemeint ist, "eine meiner Speicherseiten fehlt gerade im RAM, bitte wieder einlagern". Das macht das Betriebssystem dann: Es fliegt wieder die am längsten unbenutzte Seite raus und stattdessen kommt die gerade gebrauchte rein.
Die "Zone" auf der Festplatte, wo sich die ausgelagerten Seiten befinden, wird in Mac OS X durch normale Dateien realisiert, die im Ordner /var/vm liegen. Damit es schneller geht, legt das System immer mindestens eine Datei in einer großzügig vorreservierten Größe an. Diese vorreservierte Größe ist je nach Systemversion unterschiedlich, meist zwischen 64 und 80 MByte. Wird mehr ausgelagerter Speicher benötigt, dann werden automatisch weitere Dateien in gleicher Größe angelegt.
Viele Leute bezeichnen diese Dateien auch als "virtuellen Speicher", was oft Verwirrung auslöst. Man sollte stattdessen den Begriff Auslagerungsdateien verwenden.
Am Rande erwähnt: Da das Ein-/Auslagerungssystem sehr gut optimiert und dadurch sehr effizient ist, verwenden gut geschriebene Programme in Mac OS X einen Trick, wenn sie Dateien lesen und schreiben: Wenn z.B. eine Datei gelesen werden soll, tun diese Programme einfach so, als würde die ganze Datei im virtuellen Speicher liegen. Soll nun das erste Byte aus der Datei gelesen werden, löst das System automatisch einen Seitenfehler aus, und der entsprechende 4-KB-Block wird von der Datei in den Speicher eingelagert. Man missbraucht sozusagen die Speicherverwaltung als besonders schnelle Dateizugriffstechnik.
Die Größe der Auslagerungsdateien kann man z.B. mit diversen Hilfsprogrammen oder mit dem Terminal-Befehl
du -k /var/vm/swap*
in Kilobyte anzeigen lassen. Im Feld "Speicher" von "Aktivitätsanzeige" sieht man den Rest der Speicherverwaltung:
- Reserviert: Anteil des RAM-Speichers, der vom Auslagerungsverfahren ausgenommen ist. Zum Beispiel darf der Teil des Systems, der für die Speicherverwaltung zuständig ist, sich nie selbst auslagern. Würde sonst in einer kleinen Katastrophe enden...
- Aktiv: Speicherseiten im RAM, die gerade von den laufenden Programmen benutzt werden.
- Inaktiv: Speicherseiten im RAM, die eigentlich ebenso von laufenden Programmen benutzt werden, auf die aber schon länger nicht mehr zugegriffen wurde. Das sind die Kandidaten, die bei Speichermangel als nächstes rausfliegen könnten.
- Genutzt: Die Summe der letzten drei Werte.
- Frei: Der Rest des RAM-Speichers, der gerade nicht benutzt wird. Ist hier ein Wert deutlich über 0, dann hat man - jedenfalls für das gerade beobachtete Nutzungsverhalten - "zu viel" RAM-Speicher in seinem Rechner.
- Größe des virtuellen Speichers: Das ist die Summe der in den virtuellen Speicherräumen aller laufenden Programme benutzten Speicherseiten. Diese Zahl hat keinen besonderen Nährwert. Wie gesagt muss jedes Programm Teile des Betriebssystems in seinen Speicher einblenden. Es handelt sich also zum größten Teil um immer wieder doppelt gezählten virtuellen Verbrauch, der sich aber weder im RAM noch in den Auslagerungsdateien niederschlägt.
Das Ziel eines guten Betriebssystems ist es, den freien Speicher immer knapp über 0 zu halten, denn das RAM, das man gekauft hat, soll ja schließlich auch voll genutzt werden. Hat man für sein eigenes Nutzungsverhalten zu wenig RAM, wird das System deutlich langsamer. Das liegt daran, dass sich in dem Fall die Zahl der nötigen Aus- und Einlagerungsvorgänge stark erhöht und die Festplatte ist nun mal seeeehr viel langsamer als das RAM. Es gibt eine kritische Grenze, unterhalb der das System unbenutzbar wird, weil dann so viele Seitenfehler auftreten (die sich noch gegenseitig aufschaukeln!) dass das System zu gar nichts anderem mehr als zu Festplattenzugriffen kommt. Das wird auch "Seitenflattern" genannt.
Die umgekehrte Richtung, dass ein System immer schneller wird, je mehr RAM man reinsteckt, ist Quatsch. Das stimmt eben nur, wenn man vorher zu wenig RAM hatte. Ist man bei der "passenden" Größe angekommen, bringt danach weiterer RAM-Speicher überhaupt nichts mehr.
Oops, ganz schön lang geworden...