Frage

Was kleine Projekte werden Sie vorschlagen, um einen Anfänger mit dem Kernel, sondern jemand, der viel von Systemen und C Erfahrung hat? Das Ziel ist es, eine Vertrautheit mit dem Kernel-Quellcode und eine Einrichtung zum Experimentieren mit verrückten Ideen zu entwickeln.

Ich versuche, einige überschaubare kleine Aufgaben zu denken (zum Beispiel ein syscall hinzufügen), aber was würden Sie vorschlagen? Für eine Zielgruppe denken, jemanden, der mindestens ein Bachelor-O natürlich unter ihrem Gürtel hat.

War es hilfreich?

Lösung

Wenn ich den oben genannten Bachelor-OS Kurs nahm, eine unserer Aufgaben war ein paar syscalls hinzuzufügen. Sie waren sehr einfach, nichts anderes als das Lesen und Zurücksetzen Zähler, die die Anzahl der anderen syscalls gezählt wurden aufgerufen. Jedoch erfordert eine syscall Zugabe betrachten und schon einige Dateien zu modifizieren .. viele von ihnen in der gleichen relativ kleinen Teilstruktur der Kernel-Quelle sind, aber es ist genug, um Sie mit den Kodierungskonventionen vertraut, zumindest.

Sie auch interessieren könnten:

  • Hinzufügen eines weiteren (sehr einfach) Modus in den Scheduler eine Richtlinie, die Sie interessant finden zu implementieren. Die „eine Implementierung sie alle zu regieren“ ist ziemlich hart (und noch schwerer zu vereinbaren), aber ein einfache O (N) Scheduler tun, sogar ein rudimentäres O (1) Scheduler kann relativ einfach durchgeführt wird, spricht algorithmisch. Trotzdem bedarf es durch eine Menge von Code Stossen.

  • Schreiben eines Gerätetreiber für ein sehr einfaches Stück externer Hardware, wie ein 8-Bit-Mikrocontroller, der über eine serielle Verbindung steht, oder sogar etwas, das Sie selbst bauen. Wenn Sie Hardware Erfahrung haben, versuchen Sie vielleicht einen Gerätetreiber zu schreiben, die einen NES-Controller (Bit-Knall ein paar Drähte mit der seriellen Schnittstelle und vielleicht ein Seriell-zu-Parallel-Schieberegister) emulieren können. Man könnte auch so etwas tun, um eine wirklich einfache 7-Segment-LED-Anzeige Antrieb (wie Sie in einem Wecker haben) oder eine kleine Sammlung von ihnen.

Andere Tipps

Die Kernel Janitors Projekt einige große hat.

Auf die Gefahr einer Flamme Krieg zu beginnen: Ich würde Ihnen empfehlen, von Linux-Kernel-Code zu bleiben weg. Wenn Sie Ihre Hände schmutzig mit Kernel-Programmierung erhalten möchten, gehen Sie mit FreeBSD, NetBSD oder Opensolaris, zum Beispiel. Der Code ist viel sauberer und besser strukturiert (dies ist natürlich subjektive Meinung), eigentlich entworfen und sogar dokumentiert. Und sie haben ein Kernel-Debugger (beachten Sie, dass Linus gegen beide Kernel-Debugger ist und Stable-Kernel-API, die jeden Kern ein bewegliches Ziel für Ihre Arbeit macht). Diese OS-es gibt sogar eine Liste von Projekten auf ihren jeweiligen Web-Seiten, und ich persönlich habe sehr gute Erfahrungen mit Menschen auf Opensolaris-Foren und NetBSD-Mailinglisten.

Sie sagen, dass Sie Erfahrung mit C haben - siehe Web-Quellcode-Repositories von Linux und Opensolaris oder einige BSDs, vergleichen Sie den Code, und Ihre eigene Meinung. Was ich sagen will ist, denke ich, dass es mehr Open-Source-UNIX als Linux, und dass man sie zumindest aussehen sollte für Linux, bevor er.

Ein schöner Ort zu beginnen, ist ein Projekt auf Unix basiert v6 . "Xv6, ein einfaches Unix-Lehrbetriebssystem"

Es gibt auch Cynix , eine einfache IA-32 monolithische Unix-artige Kernel (Nicht gepflegte)

Ein großes Tutorial ist " Rollen Sie Ihre eigenen Spielzeug UNIX-Klon OS " .

Versuchen Sie, die MINIX Quellcode herunterzuladen  und mit ihm spielen, versuchen, die Logik zu verstehen, und es wird einige Zeit keinen Zweifel nehmen, aber wenn Sie sie halten können Sie ein Experte in einiger Zeit sein

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