Kleinrechnerbetriebssysteme (Linux)













Mitschrieb der Vorlesung aus dem Sommersemester 99

Dozent: Thomas Schöbel-Theuer

Herausgegeben und ergänzt vom Dozenten

Uni Stuttgart









Ziele: - Betriebssystemkonzepte am Beispiel Linux

- Mitarbeit an Kernel-Projekten








Version 4.0

5. Mai 2000

Claus Möhrle und Thomas Schöbel-Theuer

Achtung! Diese Version enthält noch viele Fehler! Sie wird laufend aktualisiert!


Inhalt



1Einführung / Historie 4

1.1Phase 1: Ur-Unix „Experimentierphase“ 4

1.2Phase 2: Expansion 4

1.3Phase 3: Kommerzialisierung 4

1.4Phase 4: Standardisierung (ab ca. 1986) 4

1.5Phase 5: Freie Reimplementierung der Standards 5

2Die Posix-Programmierschnittstelle (Übersicht) 6

2.1File I/O (a) 6

2.2Files and Directories (b) 8

2.3Environment of a Unix Process (e) 12

2.4Process Control (f) 12

2.5Advanced I/O (j) 15

3Architektur von Linux (Übersicht) 19

3.1Grundprinzipien 19

3.2Subsysteme 19

4Grundlegende Kernelstrukturen und Funktionen 20

4.1Prozessmodelle 20

4.1.1Ursprüngliches Modell i386 (2 Segmente Kernel) 20

4.1.2Heutiges Modell (wegen anderen Architekturen) 20

4.2Synchronisationsmittel auf Task-Ebene 21

4.2.1Unterste Ebene: void schedule (void) 21

4.2.2Mittlerer Ebene: ADT wait_queue 22

4.2.3High-Level-Ebene: Semaphore 23

4.2.4Weiteres 23

4.3Interrupts 23

4.4Synchronisationsmittel auf CPU-Ebene (SMP) 24

4.5Allgemeine Hilfsroutinen 24

4.6Speicherallokation im Kernel 25

4.6.1Low-Level 25

4.6.2Objekt-Caches 25

4.6.3Heterogener Heap im Kernel Speicher 26

4.6.4Virtueller Adreßraum 26

4.7Wichtige grundlegende ADT’S im Kernel 26

4.7.1struct task_struct 26

4.7.2struct mm_struct 26

4.7.3struct vm_area_struct 26

4.7.3.1struct vm_operations_struct 27

4.7.4struct page 27

4.7.5struct inode 27

4.7.6struct dentry 27

4.7.7struct file 27

4.7.8struct super_block 27

4.7.9struct {inode, super, dentry, file}_operations 27

4.7.10struct buffer_head 27

5Programmierstil und Tricks 28

5.1C-Hacker-Tricks 28

6Das VFS 29

6.1Der DCache und der Inode-Cache Ausgangssituation 29

6.1.1Generische Inodeoperationen 29

6.1.2Funktionsweise eines Caches: 30

6.1.3Problem bei bisherigen Implementierungen der Namesauflösung: 31

6.1.4Neuer DCache 31

6.1.5Generische Dentry-Operationen 32

6.2Der Buffer-Cache 32

6.3Der virtuelle Switch 33

6.3.1VFS-helper (Auszug) 34

7Virtual Memory 35

8Literatur 37

9Glossar 38

Einführung / Historie

Die Posix-Programmierschnittstelle (Übersicht)

Architektur von Linux (Übersicht)

Grundlegende Kernelstrukturen und Funktionen

Programmierstil und Tricks

Das VFS

Virtual Memory

Literatur

Glossar

1