Frage

Die Programmierung ist nicht meine Hauptaufgabe, obwohl ich es genießen und manchmal dafür bezahlt bekommen. Seit vielen Jahren habe ich bereits über Linux und meine Freunde zu hören haben mir gezeigt, viele * nixes (oder * nici?), Obwohl ich Stick mit Mac OS.

Denken Sie, es irgendwelche Teile des Linux-Kernels, die ich auf der Suche genießen konnte, das würde mir helfen, zu verstehen, was das ganze Zeug über? Zum Beispiel, wie Linux unterscheidet sich von Darwin?

Ich habe mit Assembler und DOS groß geworden, so Dinge wie Interrupts oder Low-Level C nicht Barrieren Verständnis sein sollte. Aber am Ende bin ich mehr daran interessiert, in High-Level-Konzepten, wie Einfädeln oder Netzwerk-Stack - ich weiß, verschiedene Betriebssysteme sie anders machen. Und ich bin auf der Suche nach etwas Spaß, einfach und angenehm, wie Late-Night-Lesung.

(Hinweis: aus einem CW, nur für den Fall)

Update: Ich für einige docs sah und begann zu lesen:

War es hilfreich?

Lösung

würde ich empfehlen, bei der Suche LXR . Es macht es einfacher, den Fluss des Codes zu folgen (Sie müssen nicht für jede Funktion zu suchen haben, die aufgerufen wird - na ja, Sie haben, aber die Website macht es für Sie).

Einige Ansatzpunkte für die aktuelle Version (2.6.30):

  • start_kernel() - man denke an ihn als den Kernel Äquivalent main(). Diese Funktion initialisiert fast alle Kernel-Subsysteme; folgen sie in den Code zu sehen, was Sie auf dem Bildschirm während des Boot siehe Scrollen.
  • entry_32.S - Systemaufrufe und Interrupts (x86-32-Version, die näher sein sollte, was Sie wissen, beachten Sie die Verwendung des AT & T Montage Dialekt anstelle der Intel Dialekt Sie vielleicht mehr verwendet).
  • head_32.S - der Kernel Einstiegspunkt. Dies ist, wo der Kern beginnt, nachdem in dem geschützten Modus zu schalten; Am Ende wird es start_kernel() nennen.
  • arch / x86 / boot - die Echt Modus Bootstrap-Code. Es beginnt in der Montage ( boot / header.S ), aber C-Code schnell springt in (ab Boot /main.c ). Ist die Real-Modus-Initialisierung (meist BIOS-Aufrufe, die vor dem Umschalten in dem geschützten Modus zu tun haben); es wird kompiliert einen seltsame GCC Trick (.code16gcc) verwenden, die die Erzeugung von 32-Bit-Real-Modus-Code ermöglicht.
  • arch / x86 / boot / komprimiert -., wenn Sie sich jemals gefragt, woher kommt die „Decompressing Linux ...“ Nachricht herkommt, es von hier ist

Andere Tipps

Mich selbst habe ich immer gefunden, den Task-Scheduling-Code ein bisschen einen Schrei: - /

Methinks müssen Sie sich ein Hobby außerhalb der Branche zu bekommen. Oder ein Leben: -)

Die Kommentare im Kernel kann ziemlich witzig sein. Es gibt einige Tipps, wo die besten, die auf KernelTrap zu finden.

  

arch / sparc / lib / checksum.S- / * Sun, kann man einfach schlagen Sie mich nicht, Sie kann einfach nicht. Aufhören zu versuchen,   arch / sparc / lib / checksum.S: * aufgeben. Ich meine es ernst, ich werde die lebendige Scheiße treten   arch / sparc / lib / checksum.S- * aus dir, spiel vorbei, Licht aus. * /

linux-0.01.tar.gz ist Historic Kernel und gut für den Start
es ist einfach und klein und besser für den Start Lesen
(Es auch void main (void) statt start_kernel () lol: D)

Sie möchten vielleicht ein Buch lesen oder abschöpfen, die vor der Suche tief in den Linux-Kernel des Linux-Kernel beschreibt.

Die Bücher, die in den Sinn kommen, sind:

Sie würden wahrscheinlich mehr aus, ein Buch über OS Theorie zu lesen. Soweit Quellcode geht: Ich habe keine Ahnung, aber Sie bequem die Linux Kernel-Quellen herunterladen könnte sehen und wenn Sie etwas finden können, die anspricht.

Dies sollte einigen interessanten Code auftauchen, wenn sie im src Verzeichnis ausführen:

grep -ir "fixme" *

auch versuchen, mit anderen komischen Begriffen, mist, scheiße, f ***, Pinguin, etc.

Sie müssen das Wort ‚fun‘ in Ihrem Kontext neu zu definieren. :)

Das heißt, die Linux-Kernel zu viel von einem Monster zu nehmen sein. Vielleicht mögen Sie mit einigen akademischen oder mehr primitiven Kernel starten Sie den Dreh raus zu bekommen, was los ist, zuerst. Sie können auch die Jolix Buch.

Es ist von ganz wenigen Menschen empfohlen, dass v0.0.1 von Linux ist am einfachsten zu verstehen.

Obwohl, wenn Ihr für eine gute Kernelquellen suchen zu lesen, würde ich nicht mit Linux gehen, es ist ein Tier von einem Hack (etwa wie wenn man sagt die GCC-Quellen sind „Spaß“) Stattdessen können Sie möchten Minix versuchen oder einer der BSDs (Darwin ist im Grunde ein Zweig von NetBSD iirc) oder auch nur eine der vielen freien DOS-Klone, wenn alles andere ein wenig zu gruselig ist ..

Versuchen Sie, den Code zu lesen, die diese Zeichengeräte implementiert: / Dev / null / Dev / null / Dev / full

Und vielleicht die Zufallszahlengeneratoren, wenn Sie geneigt sind. Der Code ist einfach und einfacher als alle anderen Gerätetreiber, da es keine Hardware berührt.

Starten

bei drivers / char / mem. *

kernel.h

Einige einfache Tricks, die wir können, wie zum Beispiel

lernen
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
...
#define min(x, y) ...
...
#define container_of

Für Spaß ich denke, man könnte auch Minix sehen, es ist nicht genau das Linux aber moderne Betriebssysteme von Tenenbaum ist ein gutes Buch.

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