LINUX Kernelarchitektur (eBook)
784 Seiten
Carl Hanser Fachbuchverlag
978-3-446-22779-8 (ISBN)
Dieses Buch vermittelt einen detaillierten Einblick in den aktuellen Linux-Kernel 2.6 und zeigt, wie das System arbeitet, welche Konzepte und Strukturen verwendet werden und wie die Teile ineinander greifen. Alle relevanten Subsysteme des Kerns werden behandelt:
- Prozessverwaltung und Schedulingú Speicherverwaltung, Caching und Swappingú Dateisysteme
- Netzwerke und Kommunikationsmechanismen
- Gerätetreiberú ModuleDer Autor zeigt, wie die Leistungsfähigkeit des Kernels optimal genutzt werden kann.
Er erklärt auch die Abstraktionsmechanismen, die Linux vom Handheld bis zum Großrechner auf allen Plattformen einsetzbar machen. Zahlreiche Praxistipps zeigen, wie mit den Quellen gearbeitet werden kann.
Inhaltsverzeichnis 6
Vorwort 14
1 Einführung und Uberblick 16
1.1 Aufgaben des Kerns 17
1.2 Implementierungsstrategien 17
1.3 Bestandteile des Kernels 18
2 Prozessverwaltung 34
2.1 Prozessprioritäten 35
2.2 Lebenszyklus eines Prozesses 37
2.3 Repräsentation von Prozessen 40
2.4 Systemaufrufe zur Prozessverwaltung 51
2.5 Implementierung des Schedulers 67
2.6 Erweiterungen des Schedulers 80
3 Speicherverwaltung 86
3.1 Überblick 86
3.2 Organisation nach dem (N)UMA-Modell 88
3.3 Seitentabellen 98
3.4 Initialisierung der Speicherverwaltung 105
3.5 Verwaltung des physikalischen Speichers 132
3.6 Der Slab-Allokator 162
3.7 Verwaltung des virtuellen Prozessspeichers 185
3.8 Prozessorcache- und TLB-Steuerung 225
4 Interprozesskommunikation und Locking 230
4.1 Steuerungsmechanismen 230
4.2 Locking-Mechanismen des Kerns 234
4.3 System V-Interprozesskommunikation 240
4.4 Andere IPC-Mechanismen 253
5 Gerätetreiber 262
5.1 IO-Architektur 262
5.2 Zugriff auf Erweiterungsgeräte 268
5.3 Treiberregistrierung 272
5.4 Verbindung mit dem Dateisystem 274
5.5 Treiberoperationen 278
5.6 Ressourcen-Reservierung 298
5.7 Bussysteme 304
6 Module 328
6.1 Module verwenden 329
6.2 Module einfügen und löschen 336
6.3 Automatisierung und Hotplugging 356
6.4 Versionskontrolle 359
7 Das virtuelle Dateisystem 366
7.1 Dateisystemtypen 367
7.2 Das Common File Model 368
7.3 Aufbau des VFS 373
7.4 Arbeiten mit VFS-Objekten 392
7.5 Standardfunktionen 410
8 Dateisystemimplementierungen 416
8.1 Second Extended Filesystem 418
8.2 Third Extended Filesystem 461
8.3 Das Dateisystem 466
9 Netzwerke 506
9.1 Verkettete Computer 507
9.2 ISO/OSI- und TCP/IP-Referenzmodell 507
9.3 Kommunikation über Sockets 511
9.4 Das Schichtmodell der Netzwerkimplementierung 519
9.5 Socketpuffer 521
9.6 Datenübertragungsschicht 524
9.7 Vermittlungsschicht 532
9.8 Transportschicht 549
9.9 Anwendungsschicht 564
10 Systemaufrufe 572
10.1 Grundlagen der Systemprogrammierung 572
10.2 Vorhandene Systemaufrufe 579
10.3 Realisierung von Systemaufrufen 584
11 Kernel-Aktivitäten und Zeitfluss 602
11.1 Interrupts 602
11.2 Software-Interrupts 621
11.3 Tasklets und Work Queues 624
11.4 Wait Queues und Completions 627
11.5 Kerneltimer 632
12 Page- und Buffer-Cache 644
12.1 Struktur des Page-Caches 645
12.2 Der Buffer-Cache 648
12.3 Adressräume 650
12.4 Implementierung des Puffer-Caches 658
13 Datensynchronisation 674
13.1 pdflush 675
13.2 Starten eines neuen Threads 676
13.3 Thread-Initialisierung 676
13.4 Durchführen der Arbeit 678
13.5 Periodisches Zurückschreiben 679
13.6 Assoziierte Datenstrukturen 679
13.7 Zentrale Steuerung 682
13.8 Superblock-Synchronisation 684
13.9 Inoden-Synchronisation 685
13.10 Verstopfungen 689
13.11 Zurückschreiben unter Druck 692
13.12 Systemaufrufe zur Synchronisationskontrolle 694
13.13 Vollständige Synchronisierung 694
13.14 Synchronisieren einzelner Dateien 696
13.15 Synchronisieren von Memory Mappings 698
14 Swapping 700
14.1 Überblick 700
14.2 Swapping im Linux-Kernel 704
14.3 Verwaltung von Swap-Bereichen 708
14.4 Der Swap-Cache 718
14.5 Zurückschreiben der Daten 730
14.6 Seitenauswahl – Swap Policy 731
14.7 Behandlung von Page Faults 747
14.8 Auslösen des Swappings 751
14.9 Verkleinern anderer Caches 756
Literaturverzeichnis 760
Index 762
Symbole 770
9 Netzwerke (S. 905-906)
Linux ist ein Kind des Internets, darüber besteht kein Zweifel: Seine Entwicklung hat viele verbreitete Ansichten über Projektmanagement bei weltweiten Programmierergruppen ad absurdum geführt, was vor allem der Kommunikation über das Internet zu verdanken war. Seit die ersten Kernelquellen vor mehr als einem Jahrzehnt auf einem ftp-Server im Internet verfügbar gemacht wurden, waren Netzwerke immer das zentrale Rückgrat, wenn es um Datenaustausch, Entwicklung von Konzepten und Code oder die Beseitigung von Fehlern im Kern ging. Die Kernelmailingliste ist ein lebendiges Beispiel dafür, dass sich an dieser Technik bis heute nichts geändert hat: Jeder kann die Beiträge lesen, sich selbst mit seiner Meinung beteiligen und dadurch zur Entwicklung von Linux beitragen – vorausgesetzt, man hat etwas Vernünftiges zu sagen.
Die Beziehung von Linux zu Netzwerken aller Art ist sehr innig, schließlich ist das Internet der Brutkasten, in dem es groß geworden ist. Linux-Rechner machen einen bedeutenden Anteil aller Server aus, die das Internet bilden, weshalb die Netzwerkimplementierung einer der wichtigsten Bestandteile des Kerns ist, dem bei der Entwicklung immer große Beachtung geschenkt wird. Es gibt kaum eine Netzwerkmöglichkeit, die von Linux nicht unterstützt wird. Die Implementierung der Netzwerkfunktionalitäten ist einer der komplexesten und umfangreichsten Teile des Kerns: Neben den klassischen Internet-Protokollen wie TCP, UDP und dem assoziierten Transportmechanismus IP unterstützt Linux viele weitere Möglichkeiten, die die Verbindung von Computern ermöglichen, um die größtmögliche Fähigkeit zur Zusammenarbeit mit allen denkbaren Rechner- und Betriebssystemtypen zu ermöglichen. Auch die Unterstützung einer riesigen Zahl von Hardwaremöglichkeiten zur Datenübertragung – angefangen bei Ethernet- Karten über Token-Ring-Adapter bis hin zu ISDN-Karten und Modems – macht die Aufgabe des Kerns nicht gerade einfacher.
Dennoch konnten die Linux-Entwickler ein erstaunlich gut strukturiertes Modell schaffen, mit dem sich die teilweise recht unterschiedlichen Ansätze vereinigen lassen. Auch wenn dieses Kapitel zu den umfangreichsten im Buch gehört, ist es nicht möglich, jedes Detail der Netzwerkimplementierung zu berücksichtigen. Es ist bereits unmöglich, auf alle Treiber und Protokolle grob einzugehen, da so viele Informationen vorhanden sind, die nicht nur eines, sondern gleich mehrere Bücher füllen würden. Die C-Implementierung des Netzwerklayers belegt – ohne Gerätetreiber für Netzwerkkarten! – bereits 7 MiB in den Kernelquellen, was gedruckt wesentlich mehr als 2500 Seiten ausmacht und ein beeindruckendes Codemassiv ist. Dennoch finden sich viele Konzepte, die hinter diesem Code stehen und das logische R¨uckgrat des Netzwerksubsystems bilden:
Genau diese Punkte werden uns in diesem Kapitel interessieren. Außerdem werden wir uns an der TCP/IP-Implementierung orientieren, da dies die mit Abstand am weitesten verbreiteten Netzwerkprotokolle sind. Natürlich musste die Entwicklung des Netzwerklayers nicht ganz bei Null beginnen: Standards und Konventionen, die den Datenaustausch zwischen Computern ermöglichen, sind bereits seit Jahrzehnten vorhanden und entsprechend gut bekannt und eingeführt. Linux implementiert diese Standards, um die Verbindung mit anderen Computern aufnehmen zu können.
9.1 Verkettete Computer
Die Kommunikation von Computern untereinander ist ein komplexes Thema, das viele Bereiche umfasst, in denen verschiedenste Fragen gelöst werden müssen. Um nur einige zu nennen:
- Wie wird die Verbindung physikalisch hergestellt? Welche Kabel werden verwendet, welche Beschränkungen und speziellen Anforderungen besitzen die Medien?
- Wie werden Übertragungsfehler behandelt?
- Wie werden individuelle Computer in einem Netzwerk identifiziert?
- Wie können Daten zwischen Computern ausgetauscht werden, die nur indirekt verbunden sind, d.h. über einen oder mehrere andere Computer als Zwischenstationen? Wie kann der günstigsteWeg herausgefunden werden?
- Wie werden die Nutzdaten verpackt, um nicht von speziellen Merkmalen einzelner Rechner abhängig zu sein?
- Wie lassen sich mehrere Netzwerkdienste auf einem Rechner identifizieren?
Dieser Katalog lässt sich fast beliebig fortsetzen. Leider ist nicht nur die Anzahl der Fragen, sondern auch die Anzahl der Lösungsmöglichkeiten unbeschränkt, weshalb im Laufe der Zeit sehr viele Vorschläge gemacht wurden, umdie Probleme in den Griff zu bekommen. Als " vernünftig" haben sich dabei vor allem jene Systeme herauskristallisiert, die die Probleme in mehrere Kategorien einteilen und auf diese Weise verschiedene Schichten schaffen, die sich mit der Lösung einer klar definierten Fragestellung beschäftigen und mit den über/untergeordneten Schichten nur über genau festgelegte Mechanismen kommunizieren. Dieser Ansatz erleichtert Implementierung, Wartung und vor allem Fehlersuche drastisch.
Erscheint lt. Verlag | 1.1.2003 |
---|---|
Sprache | deutsch |
Themenwelt | Informatik ► Betriebssysteme / Server ► Unix / Linux |
ISBN-10 | 3-446-22779-2 / 3446227792 |
ISBN-13 | 978-3-446-22779-8 / 9783446227798 |
Haben Sie eine Frage zum Produkt? |
Größe: 6,2 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich