Frage

Ich würde gerne bessere Kenntnisse über Betriebssysteminterna erlangen.Prozessmanagement, Speicherverwaltung und ähnliches.
Ich dachte darüber nach, zu lernen, indem ich entweder den Linux- oder den BSD-Kernel kennenlerne.
Welcher Kernel eignet sich besser für Lernzwecke?
Wo fängt man am besten an?
Könnt ihr gute Bücher empfehlen?

War es hilfreich?

Lösung

Im College hatte ich einen Betriebssystemkurs, in dem wir a verwendeten Buch von Tanenbaum.In der Klasse haben wir einen Gerätetreiber implementiert Minix-Betriebssystem.Es hat viel Spaß gemacht und wir haben viel gelernt.

Beachten Sie jedoch Folgendes: Wenn Sie sich für Minix entscheiden, ist es zum Lernen konzipiert.Es handelt sich um einen Mikrokernel, während Linux und BSD ein monolithischer Kernel sind. Daher ist das, was Sie lernen, möglicherweise nicht zu 100 % übersetzbar, um mit Linux oder BSD arbeiten zu können, aber Sie können dennoch viel daraus gewinnen, ohne es vollständig verarbeiten zu müssen so viele Informationen.

Als Randbemerkung, falls Sie es gelesen haben Nur zum Spaß, Linus spielte tatsächlich mit Minix, bevor er Linux schrieb, aber es reichte für seine Zwecke einfach nicht aus.

Andere Tipps

Als Linux-Benutzer würde ich sagen, dass Linux eine großartige Community hat, in der die Leute etwas über den Kernel lernen können. http://kernelnewbies.org ist ein großartiger Ort, um Fragen zu stellen und mehr über die Funktionsweise des Kernels zu erfahren.Eine Buchempfehlung kann ich nicht aussprechen, aber sobald man das Ausgangsmaterial auf kernelnewbies gelesen hat, ist die Quelle sehr gut dokumentiert.

Besorgen Sie sich neben den bereits erwähnten guten Büchern (Opeating System Design & Implementation ist besonders gut) einen Linux-Kernel der Version 1.x, laden Sie ihn in VMWare oder VirtualBox und beginnen Sie von dort aus herumzuspielen.

Sie müssen viel Zeit damit verbringen, den Quellcode zu durchsuchen.Schauen Sie sich dazu um http://lxr.linux.no/ Dabei handelt es sich um eine durchsuchbare, verlinkte Version der Quelle, die das Leben erheblich erleichtert.Schauen Sie sich die allererste Version von Linux (0.01) an http://lxr.linux.no/linux-old+v0.01/.Der Spaß beginnt bei http://lxr.linux.no/linux-old+v0.01/boot/boot.s.Wenn Sie von Version zu Version fortschreiten, schauen Sie sich das ChangeLog an und schauen Sie sich die Teile an, die sich geändert haben, damit Sie nicht das Ganze noch einmal lesen müssen.

Wenn Sie sich mit den Konzepten vertraut gemacht haben, schauen Sie sich 2.0, dann 2.2 usw. an.Seien Sie bereit, VIEL Zeit in den Prozess zu investieren.

Ich hatte diese Bücher zuvor auf Empfehlung für den gleichen Zweck gekauft, kam aber nie dazu, sie selbst zu studieren, also nehme ich sie nur als Ratschläge aus zweiter Hand.

Da ich hier den Mangel an BSDs bemerkte, dachte ich, ich würde mich einmischen:

Ich habe selbst keinen der Kurse besucht, aber ich habe Marshall Kirk McKusick bei anderen Gelegenheiten sprechen hören, und er ist wirklich gut in dem, was er tut.

Und natürlich die BSD-Manpages, die eine hervorragende Ressource darstellen, da sie in weitaus größerem Umfang gepflegt werden als eine durchschnittliche Linux-Manpage.Nehmen Sie zum Beispiel die uvm(9) Manpage, die die virtuelle Speicherschnittstelle in OpenBSD beschreibt.

Nicht ganz verwandt, aber ich werde das Video auch empfehlen Geschichte der Berkeley Software Distributionen denn es gibt eine schöne Einführung in die BSD-Teile der UNIX-Geschichte und -Kultur sowie jede Menge urkomische Anektoden von damals.

Ich empfehle Ihnen die BSD-Kernel!BSD-Kernel haben viel weniger Hacker, daher ist es einfacher, ihre Entwicklung zu verfolgen.Sowohl BSD- als auch Linux-Kernel haben großartige Hacker, aber einige Leute argumentieren, dass BSD mit geringerem Bekanntheitsgrad Anfänger herausfiltert.Außerdem ist es einfacher, Designentscheidungen zu treffen, wenn die Quellen nicht 100 Mal am Tag aktualisiert werden.

Unter den BSD-Optionen ist NetBSD mein Favorit.Es ist vielleicht nicht die unkomplizierte Wahl, die Sie sich für Ihren Desktop wünschen, aber da der Fokus stark auf Portabilität liegt, ist die Qualität recht gut.Ich denke, dieser Teil sagt alles:

Manche Systeme scheinen die Philosophie zu verfolgen: „Wenn es funktioniert, ist es richtig.“In diesem Sinne könnte man die Philosophie von NetBSD als „Es funktioniert nicht, wenn es nicht richtig ist“ beschreiben.

Wenn Sie lange genug gearbeitet haben, wissen Sie, dass NetBSD eine wahre Freude ist, wenn es darum geht, gutes Programmieren zu lernen.Obwohl beruflich gesehen, bietet Linux mehr Chancen

Für welche Wahl Sie sich auch entscheiden: Tragen Sie sich in ihre Mailinglisten ein und verfolgen Sie die Diskussionen.Studieren Sie einige Patches und versuchen Sie schließlich, selbst Fehler zu beheben.Suchen Sie bei Büchern nach Artikeln von Diomidis Spinellis und sein Buch.Es ist nicht gerade ein Kernel-Buch, enthält aber NetBSD-Beispiele und hilft sehr bei der Bewältigung großer Software.

Es gibt keinen Ersatz für das Eintauchen in den Code.Versuchen Sie, einen Treiber oder ein Subsystem zu finden, das Sie interessiert, und stöbern Sie darin herum.Mit Werkzeugen wie VMware Workstation Es ist ganz einfach, die gewünschten Änderungen vorzunehmen, einen Snapshot der VM zu erstellen und den geänderten Kernel auszuführen.Wen kümmert es, wenn der Kernel beim Booten in Panik gerät?Springen Sie einfach zurück zum Snapshot und beheben Sie das Problem.

Für Bücher empfehle ich dringend Linux-Kernel-Entwicklung von Robert Love.Es ist ein wunderbar geschriebenes Buch – viele Informationen, vernünftig organisiert und humorvoll …Überhaupt keine trockene Lektüre.

Befolgen Sie den Rat von Mike Stone und beginnen Sie mit Minix.Das hat Linus getan!Das Lehrbuch ist wirklich gut geschrieben und Tannenbaum zeigt hervorragend, wie die verschiedenen Funktionen in einem realen System implementiert werden.

Niemand scheint erwähnt zu haben, dass BSD in Bezug auf den Code viel sauberer und konsistenter ist.Auch die Dokumentation ist viel besser (wie bereits erwähnt).Da es aber eine ganze Menge Fummelei gibt, welches System Sie wählen, würde ich das System wählen, das Sie häufiger verwenden.

Es macht Spaß, Linux und Minix zu lernen.Wer außerdem erfahren möchte, wie ein modernes Micro-Kernel-Betriebssystem aussieht, kann sich bei QNX umschauen.Die vollständige Dokumentation ist online verfügbar und leicht zugänglich.Zum Beispiel, Das Online-Buch.

Als ich an der Uni war, habe ich ein Semester damit verbracht, Betriebssysteme zu studieren, und im Rahmen dessen hatte ich eine Aufgabe, bei der wir ein RAM-basiertes Dateisystem in Linux implementieren mussten.

Es war eine fantastische Möglichkeit, die Interna des Linux-Keurnels zu verstehen und zu verstehen, wie alles zusammenpasst – und es hat auch eine Menge Spaß gemacht, damit herumzuspielen, wie es mit Standardtools interagiert.

Ich habe es selbst noch nicht ausprobiert, aber Sie können zu Linux From Scratch gehen und mit der Erstellung Ihrer eigenen Linux-Distribution beginnen.Klingt nach etwas, das eine Menge Zeit in Anspruch nimmt, aber dazu führt, dass man sich mit den Grundlagen des Linux-Kernels und der Funktionsweise der einzelnen Teile vertraut macht.Natürlich können Sie diesen Lernstoff ergänzen, indem Sie einen der anderen Tipps hier befolgen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top