Kapitel 10 - Betriebssysteme

Peter Ulbrich

🚀 by Decker

Aktueller Stand

  • Was wir bis jetzt kennengelernt haben:
  • Grundlagen von Programmiersprachen (grundlegende Konzepte, Kontrollfluss, Funktionen, Datentypen) ✅
  • Interner Aufbau von Datentypen und Abbildung auf die Hardware ✅
  • Speziell fĂŒr hardwarenahe Sprachen:
    • Zeiger ✅
    • Speicherverwaltung ✅

Aktueller Stand

  • Aber: Ein Programm lĂ€uft eher selten direkt auf der nackten Hardwareplattform
  • Zoomen wir einmal raus:
    • Betriebssystem als Plattform fĂŒr Programme → heute
    • Compiler-Toolchain fĂŒr das Bauen eines Programms → nĂ€chstes Kapitel

Literatur

  • Der Themenkomplex „Betriebssysteme“ ist sehr groß

  • Nicht mit einer Vorlesung abzudecken

  • Empfehlung: Besuch der Veranstaltung „Betriebssysteme“

    (oder selbststÀndig Themengebiet erarbeiten)

  • Literatur: Andrew S. Tanenbaum - Moderne Betriebssysteme [1]
    • Eines der Standardwerke ĂŒber Betriebssysteme
    • Aktuelle Version: 5. Auflage (2025)
    • In der Bibliothek verfĂŒgbar: 4. Auflage (ebenfalls gut geeignet)
fig/tanenbaum-moderne-betriebssysteme-5-auflage.png

RĂŒckblick: Was ist ein Betriebssystem?

  • Betriebssystem hat zwei Hauptaufgaben [1]:
  1. Bereitstellung von Abstraktionen der Betriebsmittel

  2. Verwaltung der Hardwareressourcen, die der Computer besitzt

RĂŒckblick: Was ist ein Betriebssystem?

  • Daraus folgt:

    Alles eine Anwendung, die auf dem Betriebssystem aufsetzt

  • Dies alles ist nicht Teil eines Betriebssystems:

    • Graphische OberflĂ€che
    • Anwendungen
    • Kommandozeile
  • Beispiel GNU/Linux

    • Linux ist der Betriebssystemkern (Kernel)
    • GNU ist Sammlung von essenziellen Programmen (GNU Core Utils) aufsetzen

Wir schauen jetzt mal unter die Haube!

Der Maschinenraum

Struktur eines Betriebssystems

  • Verschiedene Kategorien fĂŒr den grundlegenden Aufbau eines Betriebssystems
  • Zwei dominante Konzepte:

Monolithisches System

fig/monolithic-kernel-bsb.svg

Mikrokern-System

fig/micro-kernel-2nd-gen-bsb.svg

Monolithisches Betriebssystem

  • Existieren schon lange: seit Anfang der 1970er Jahre
  • Bekanntestes Beispiel: Linux
  • Sind prinzipiell sehr einfach strukuriert
  • Aufteilung in
    • Anwendungsebene (User Mode) und
    • Systemebene (Kernel Mode)
fig/monolithic-kernel-bsb.svg

Anwendungsebene

  • Anwendungsebene ist nicht privilegiert
  • Darf nur, was das Betriebssystemebene erlaubt
  • Anwender:in ist auf diese Ebene beschrĂ€nkt
  • Interagiert mit darunterliegenden Betriebssystem
fig/monolithic-kernel-bsb.svg
  • Definierte Funktionen erlauben Anwendung Eintritt in Betriebssystem
    • Heißen System Calls
    • Wechsel auf Betriebssystemebene zur AusfĂŒhrung notwendig
    • Beispiel: read() – „Lese etwas aus einer Datei“

Systemebene

  • Systemebene ist das eigentliche Betriebssystem

  • Direkter Zugriff auf die Hardware

  • Stellt Treiber und Abstraktionen fĂŒr Interaktion bereit

  • Darf alles privilegiert ausfĂŒhren

    → Große Verantwortung

fig/monolithic-kernel-bsb.svg
  • Fehlerhafte Programmcode kann gesamtes System zum Absturz bringen

Vor- und Nachteile eines Monolithen

Vorteile

  • Unkomplizierte Struktur
  • Relativ gute Performance
    • Ebenenwechsel kostet Zeit
    • Viel Kommunikation innerhalb einer Ebene

Nachteile

  • Erweiterungen betreffen gesamten Kern

    → Neukompilierung notwendig

  • Sicherheit: Eine Komponente „reißt kompletten Kern in den Tod“

Mikrokern-Betriebssystem

  • Existieren ebenfalls schon lange

  • Bekannteste Beispiele: MacOS

  • Ziel: Möglichst kleine Systemebene

    → Nur absolut notwendige Komponenten

  • Treiber auf Anwendungsebene verschieben

fig/micro-kernel-2nd-gen-bsb.svg
  • Viel Kommunikation zwischen den Anwendungen: Inter-Process Communication (IPC)

    → Interaktion mit der jeweiligen System-Komponente auf Nutzerebene

Vor- und Nachteile eines Mikrokerns

Vorteile

  • Flexibel erweiterbar
    • Neuer Treiber als Server auf Anwendungsebene
  • Robuste Architektur
    • Fehler sind auf Komponente beschrĂ€nkt
    • Komponente einfach neustarten →ist Anwendung

Nachteile

  • Alles hĂ€ngt von Kommunikationsmechanimus ab
  • IPC muss performant sein

Abstraktionen

Übersicht

Was fĂŒr Abstraktionen gibt es in einem Betriebssystem?

  • Prozessor
  • (Ein-Ausgabe-)GerĂ€te
    • Speichermedien (Festplatten, SSDs, 
)
    • USB-GerĂ€te (Maus, Tastatur, Webcam, 
)
    • Viele weitere mehr: Grafikkarte, Soundkarte, Netzwerk, 

  • Speicher
    • Arbeitsspeicher
    • Hintergrundspeicher (Festplatten, SSD, 
)

(Dies ist keine abschließende Liste)

Prozessor

  • Prozessor ist zentrale Recheneinheit eines Computers

    (Central Processing Unit, CPU)

  • Besteht unter anderem aus:
    • Kontrolleinheit
      • Dekodiert Instruktionen und steuert Kontrollfluss
    • CPU-Register
      • Beinhalten Werte und (Zwischen-)Ergebnisse der Berechnungen
    • Floating Point Unit (FPU)
      • Spezialisierte Komponente fĂŒr FP-Zahlen
    • Arithmetic Logical Unit (ALU)
      • Spezialisierte Komponente fĂŒr Rechenoperationen und boolesche Algebra

Prozessor

  • Interner Aufbau wird durch Prozessorarchitektur beschrieben
  • Architekturen durchaus sehr verschieden
  • Einige Komponenten grundsĂ€tzlich ĂŒberall vorhanden
  • Relevante Prozesssorarchitekturen: x86, ARM und RISC-V

Relevante Prozessorarchitekturen

  • x86 / amd64
    • HauptsĂ€chlich Desktops und Laptops
    • Hersteller: Intel und AMD (Ursprung: Intel 8086)
    • Philosophie: GrĂ¶ĂŸtmögliche AbwĂ€rtskompatibilĂ€t
    • CISC-Vertreter
  • ARM
    • HauptsĂ€chlich MobilgerĂ€te
    • Designer: Advanced RISC Machines
    • Spezifiziert Designs und verkauft Lizenzen an verschiedene Hersteller
    • Designs beinhalten unter anderem Instruktionssatz/interne Komponenten

Relevante Prozessorarchitekturen

  • RISC-V (Reduced Instruction Set Computer 5)
    • Typischer Einsatz: Mikrocontroller
    • Komplett offener Befehlssatz ohne kostenpflichtige Lizenzen
    • Jeder Hersteller kann frei entwickeln/anpassen und bauen
    • Seit ca. 2015 verfĂŒgbar (VorgĂ€ngerversionen waren Forschungsprojekte)
    • Noch nicht so dominant wie ARM und x86, aber bereits sehr beliebt bei Herstellern
  • Ergeben sich zwei Fragen:
    • Aber wie wird ein Programm auf der CPU ausgefĂŒhrt?
    • Wie Instruktionsströme von Firefox und Thunderbird unterscheiden? đŸ€”

Speichermodell – Caches

  • Wichtiges Element von x86-CPUs sind Caches
  • Schnelle, mehrstufige Zwischenspeicher
  • Enthalten hĂ€ufig benutzte/vor Kurzem benötigte Speicherblöcke
  • Deutlich schneller als Zugriff auf RAM
  • Werden mit Blöcken von je 64 Bytes (Cache Lines) befĂŒllt

Speichermodell – Caches

  • Je nĂ€her am Kern, desto kleiner und schneller
  • Ein anschaulicher Vergleich: Arbeit in einer Firma

Speichermodell – Caches

  • CPU-Kern ist ein Arbeitsplatz
  • L1-Cache ist private AblageflĂ€che
    • EnthĂ€lt gerade hĂ€ufig benutzte GegenstĂ€nde
    • Beispiel: Zange (gerade wird geschraubt)
  • L2-Cache ist Regal mit benötigten GegenstĂ€nden
    • Beispiel: GetrĂ€nkeflasche
  • L3-Cache ist angrenzender Lagerraum
    • Wird von mehreren Arbeitern parallel genutzt
  • RAM ist Zentrallager am anderen Ende der Firma
    • Arbeiter lĂ€uft nur hin, wenn Bauteil benötigt wird → Zugriff dauert „lange“

Speichermodell – Caches

  • Sind ein wichtiger Bestandteil der Performance moderner CPUs

  • Zugriff auf RAM (statt L1)

    → Latenz ca. 100-fach höher

  • Performance eines Programms abhĂ€ngig von Cacheinhalt

    • Cacheanalyse ist schwierig
    • Gut, wenn Daten im Cache → Cache Hit
    • Schlecht, wenn Daten nicht im Cache → Cache Miss

Speichermodell – CPU-Register

  • Daten in CPU werden in Registern abgelegt

  • Beispiel:

    i + 4; wird zu add eax, 4 (C → Assembly)

  • Einige interessante Register sind:

    • eax → per Konvention Ergebnis
    • rsp/rbp → Stackpointer/Basepointer
  • Durch erweiterte BefehlssĂ€tze im Laufe der Zeit weitere Register eingefĂŒhrt

    • Beispiel: MMX (Multimedia Extension)

Prozessabstraktion

  • Speicherstruktur eines Prozesses ist bekannt (Stack, Heap, BSS, 
)
  • Aber was ist eigentlich ein Prozess?
  • Zwei beispielhafte Definitionen [2]:
  1. „An instance of a program running on a computer.“
  2. „A program in execution.“
  • Ein Prozess besitzt Verwaltungsinformationen (Process Control Block)
    • Kennung: PID = Process ID = eine fortlaufende Nummer
    • Zustand: z. B. Running
    • PrioritĂ€t
    • Speicheradresse der nĂ€chsten Instruktion: Program Counter

Vorteile einer Prozess-Abstraktion

  • Betriebssystem verwaltet Rechenzeit und Speicher eines Prozesses!
  • Wichtig: Jeder Prozess „denkt“, er sei alleine in dem System:
    • Einem Prozess gehört der Prozessor
    • Einem Prozess gehört der gesamte Adressraum
  • Vorteile dieser Abstraktion sind u. a.:
    • rĂ€umliche Isolation: Jeder Prozess agiert nur in seinem Speicher(gefĂ€ngnis).
    • zeitliche Isolation: Ein Prozess kann nicht den Prozessor monopolisieren.

ProzesszustÀnde

10-Betriebssysteme-deck-code-b8877d23.dot.svg
  • Prozesse werden Blockiert, wenn sie auf ein Ereignis warten
  • Prozesse wechseln von Laufend in Bereit, wenn die Zeitscheibe abgelaufen ist

(Vereinfachte Darstellung, fĂŒr Details siehe BĂŒcher von Silberschatz, Tanenbaum und anderen [1, 2])

Dateisysteme

  • Dateisysteme strukturieren Inhalt von GerĂ€ten in Verzeichnisse(/Ordner) und Dateien

  • Schaffen Abbildung von Dateien zu Sektoren (und Spuren)

  • Beispiele: EXT4, NTFS, FAT32, 


  • Kennt Dateien (und Verzeichnisse)

  • Zugriff erfolgt Byte-weise:

    „Lese 30 Bytes an Stelle 42“

10-Betriebssysteme-deck-code-4a4a8227.dot.svg

Dateisysteme – Journaling

  • Moderne Dateisysteme notieren Änderungen separat in einer Art Logbuch (Journal)
    • Beispiele: NTFS (Windows), Ext4 (Linux)
  • Anstehende Änderungen werden erst eingetragen und anschließend durchgefĂŒhrt
  • Ermöglicht eine schnelle Wiederherstellung des Dateisystems bei Absturz
  • ÜberprĂŒfung der Änderungshistorie auf Konsistenz mit Inhalt des Speichermediums

Einschub: UNIX – Everything is a file

  • UNIX (und Linux) haben spezielle Philosophie: Everything is a file
  • Alles wird als eine Datei im Dateisystem abgebildet
  • Dazu zĂ€hlt unter anderem:
    • Hardware-Komponenten und GerĂ€te (in /dev)
    • IO-GerĂ€te und Schnittstellen (in /dev)
    • Prozesse (in /proc)
  • Abbildung auf Datei: Aufgabe des Betriebssystems
  • Gilt eben so fĂŒr Interpretation von in Datei geschriebenen Informationen

E/A-GerÀte

Zwei wesentliche GerÀteklassen aus Sicht des Betriebssystems [1, 2]

  • Zeichenorientierte GerĂ€te
    • Zeichenorientierte GerĂ€te (Character Device) sind interaktive GerĂ€te
    • Beispiel: Tastatur, Maus, Drucker, 

    • Meist sequentieller Zugriff: „Lese ein Byte nach dem anderen“
  • Blockorientierte GerĂ€te
    • Zeichenorientierte GerĂ€te (Character Device) sind ĂŒblicherweise Speichermedien
    • Beispiel: Festplatte, Diskette, CD-ROM, DVD, BluRay, 

    • Meist wahlfreier und blockweiser Zugriff: „Lese 512 Byte von Stelle 42“

(Nicht alle GerÀte passen in diese Klassen.)

Speicherhierarchie

  • Von oben nach unten
    • Zugriffszeiten steigen
    • KapazitĂ€t steigt
    • Preis sinkt

Arbeitsspeicher

  • Arbeitsspeicher wird auch als Random Access Memory (RAM) bezeichnet
  • Wahlfreier Zugriff (random access) auf einzelne Speicherzellen
  • Inhalt der Speicherzellen muss zyklisch aufgefrischt werden (sonst droht Ladungsverlust)
    • DDR5: Alle 32 Millisekunden (DDR4: 64 ms)
  • Adressierbare GrĂ¶ĂŸe wird durch die Bitzahl bestimmt*
    • 64 Bits → 16 Exabytes adressierbare Speicherzellen

*Bei einigen Architekturen (insbesondere amd64) sind es in der Praxis „nur“ 48 Bits (256 Terabytes). Die CPU-Hersteller sparen so (noch) nicht benötigte Bits ein

Virtueller Speicher

  • Jeder Prozess bekommt gedacht den vollen Adressraum zugeteilt
  • Beispiel: \(2^{32}\) Bytes bei 32-Bit-Maschine
  • Über Paging blendet das Betriebssystem Speicher ein
  • Abbildung auf „beliebige“ physikalische Adressen
  • Typische GrĂ¶ĂŸe einer Seite (Page): 4 KiByte

(Wenn der Arbeitsspeicher voll ist, wird auf die Festplatte ausgelagert. Siehe swap unter Linux oder page file unter Windows.)

Speicherverwaltung

  • malloc()/free() allozieren / geben Speicher frei

  • Betriebssystem versucht einen Speicherbereich bereitzustellen

  • Bei Erfolg neuen Speicher im virtuellen Adressraum des Prozesses einblenden

    → „Es wird ein neuer Pfeil gezogen.“ (siehe Abbildung)

(In Wirklichkeit geschieht die Anfordung mit mmap()-Syscall an das Betriebssystem. Die Funktionsaufrufe werden durch die libc bzw. libstdcpp verwaltet.)

Beispiel – Paging

#include <stdio.h>

#define OFFSET0 0
#define OFFSET1 512 * 1
#define OFFSET2 512 * 8

int main() {
    int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
    int* ptr = arr;
    printf("Adr0: %p\n", ptr + OFFSET0);
    printf("Adr1: %p\n", ptr + OFFSET1);
    printf("Adr2: %p\n", ptr + OFFSET2);
    printf("Val0: %d\n", ptr[OFFSET0]);
    printf("Val1: %d\n", ptr[OFFSET1]);
    // printf("Val2: %d\n", ptr[OFFSET2]);
}
C
fig/page-segfault-example.svg

Persistente Speicher

  • Kein Auffrischen nötig
  • Beispiele: Festplatten oder Solid State Disks (SSD)
  • Dient als Ablage fĂŒr großen Datenmengen
  • Kennt nur Spuren und Sektoren
    • Typische GrĂ¶ĂŸen: 512 oder 4096 Bytes
  • Bei Zugriff wird ganzer Sektor gelesen: „Lese Sektor 4711 und 4712“

Ablaufplanung – Scheduling

  • Betriebssystem bestimmt Zuteilung von Ressourcen
  • Ressourcen sind: CPU, Arbeitsspeicher, Festplatte, Netzwerk, 

  • Strategie entscheidet ĂŒber Zuteilung
    • Zeitpunkt
    • Menge
  • Zuteilung erfolgt dynamisch oder statisch
  • Statische Zuteilung erfolgt vor der AusfĂŒhrung – offline
  • Dynamische Zuteilung erfolgt wĂ€hrend der AusfĂŒhrung – online
  • BeschrĂ€nkung erst mal auf CPU-Zuteilung

Parameter der CPU-Ablaufplanung

  • PrioritĂ€t: Ist ein Programm wichtiger als andere?
  • PeriodizitĂ€t: Wird periodisch/nur sporadisch Rechenzeit benötigt?
  • PrĂ€emptivitĂ€t: Kann die AusfĂŒhrung unterbrochen werden?
  • Bisherige Rechenzeit: Hatte ein Programm schon viel Rechenzeit?
  • 

  • Umsetzung ĂŒber eine Zeitscheibe
    • Prozess bekommt Rechenzeit fĂŒr feste Zeitspanne
    • LĂ€nge der Zeitscheibe hĂ€ngt von genannten Faktoren ab

Aufbau der Ablaufplanung

  • FĂŒr Prozesse ist das Scheduling in zwei Teile aufgeteilt:
    1. Dispatcher
    2. Scheduler
  • Beide sind eng miteinander verzahnt
  • Dispatcher ĂŒbernimmt die „schmutzige“ Arbeit (korrektes BefĂŒllen der CPU-Register)
    • Beispiel Firma: „RĂ€umt Arbeitsplatz leer, packt Werkzeug in den Spind des Arbeiters”
    • Vorgang wird Context Switch genannt (immer an Vorgabe des Schedulers gebunden)
  • Scheduler dirigiert Dispatcher und bestimmt nĂ€chsten Prozess (oder Arbeiter
    • Zeitscheibe wird durch einen Zeitgeber (Timer) vorgegeben
    • Beim „Klingeln“ des Timers → Wechsel des Prozesses

Application Binary Interface (ABI)

  • Application Binary Interface (ABI) definiert u.a. Verwendung von Registern
    • Beispiel: In eax ist RĂŒckgabewert einer Funktion/Ergebnis einer Berechnung
    • Funktionsaufrufe: In welchen Registern Funktionsparameter stehen
    • Welche GrĂ¶ĂŸen einzelne Datentypen haben (beeinflusst Register/Zeiger)
  • Jedes Betriebssystem kann prinzipiell seine eigene ABI definieren
    • Linux/Unix verwenden System V Release 4 (1983 erschienen)
    • Windows definiert seine eigene ABI
  • Verwechselungsgefahr: Application Programming Interface (API)
    • Programmierschnittstelle
    • Beschreibt die Funktionen einer Bibliothek (RĂŒckgabewert, Parameter) und ihre Verwendung

Zwischenstand

  • Bisher: Expresstour durch einige wichtige Bereiche von Betriebssystemen
  • CPUs und Betriebssysteme beinhalten aber natĂŒrlich noch viel mehr! 😃
  • Abschließend noch zwei adjazente Bereiche
    • POSIX: Standardisierte Programmierschnittstelle fĂŒr unixoide Betriebssysteme
    • Man-Pages: „Das Handbuch“ fĂŒr unixoide Programme und Funktionen

Portable Operating System Interface (POSIX)

  • Standard fĂŒr Betriebssysteme (UNIX bzw. Linux)
  • Definiert FunktionalitĂ€t und Umfang von API und Programmen
    • Beispiele fĂŒr Funktionen: open(), mkdir()
    • Beispiele fĂŒr Programme: ls, touch (Gnu Core Utils)
  • Ziel: VerfĂŒgbarkeit von Programmfunktionen mit
    • gleichen Namen,
    • Parametern und
    • FunktionalitĂ€t
  • Konsequenz: Programme mĂŒssen nur einmal geschrieben werden
  • Motivation: Einheitliche Schnittstelle fĂŒr große Zahl an UNIXen in 1990ern

Man Pages

  • Kurzform fĂŒr Manual Pages → Handbuchseiten
  • Stellen Dokumentation fĂŒr Programme und Programmierschnittstellen bereit
  • EnthĂ€lt ĂŒblicherweise ProgrammfunktionalitĂ€t und Benutzungsbeispiele
  • FĂŒr Funktionen: Parameter, Anforderungen an Parameter
  • Lesen vor Verwendung von Programmen und Funktionen ist sehr empfehlenswert!
  • Unter Linux von der Kommandozeile aufrufbar: man man (Man Page fĂŒr man)
  • Gibt es auch als Webseiten (a) oder (b)

Man Pages – Liste der Sektionen

  • Sind in 8 relevante Abschnitte gegliedert
  • Gliederung gemĂ€ĂŸ ihrer FunktionalitĂ€t
  • Grund: Einige Programme sind namensgleich zu Funktionen
  • Unterscheidung ĂŒber zusĂ€tzliche Angabe der Sektionsnummer
    • Beispiel: man 1 write

Abschnitte

  1. User Commands: Typische Anwendungsprogramme (wichtig)
  2. System Calls: Linux-spezifisch (wichtig)
  3. Library Functions: Programmierfunktionen (wichtig)
  4. Special Files: Spezielle Dateien (Bsp. fbdev)
  5. File Formats: Dateiformate
  6. Games
  7. Conventions and Misc.: Verschiedenes („WĂŒhlkiste“)
  8. Administration: Werkzeuge fĂŒr System-Administratoren

Außerdem: Eigenheiten von Linux

  • Einige selbstdefinierte Sektionen (z.B. 0 fĂŒr Header Files)
  • Bei einigen Sektionen Zusatzbuchstaben (1p fĂŒr POSIX-Programme)

Beispiel – Handbuchseite eines Programms

Auszug aus man ls

LS(1)                                                   User Commands                                                  LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftu‐
       vSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file

Beispiel – Handbuchseite einer Funktion

Auszug aus man 3 printf

printf(3)                                         Library Functions Manual                                         printf(3)

NAME
       printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf - formatted output con‐
       version

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <stdio.h>

       int printf(const char *restrict format, ...);
        [...]

DESCRIPTION
       The functions in the printf() family produce output according to a format as described below.  The functions printf()
       and  vprintf() write output to stdout, the standard output stream; fprintf() and vfprintf() write output to the given
       output stream; sprintf(), snprintf(), vsprintf(), and vsnprintf() write to the character string str.

        [...]
Conversion specifiers
       A character that specifies the type of conversion to be applied.  The conversion specifiers and their meanings are:

       d, i   The  int argument is converted to signed decimal notation.  The precision, if any, gives the minimum number of
              digits that must appear; if the converted value requires fewer digits, it is padded on the  left  with  zeros.
              The default precision is 1.  When 0 is printed with an explicit precision 0, the output is empty.
        [...]

Zusammenfassung

  • Grundlegene Betriebssystemarchitekturen: Mikroker vs. Monolith
  • Abstraktionen in einem Betriebssystem
    • Speichermodell
    • Prozesse
    • Dateisysteme
    • Speicherhierarchie inkl. virtuellem Speicher
  • Prozessverwaltung
  • Nachschlagewerk in unixoiden Betriebssystemen wie Linux: man pages

Referenzen

[1] A. S. Tanenbaum und H. Bos, Modern Operating Systems, 4. Aufl. USA: Prentice Hall Press, 2014.
[2] A. Silberschatz, P. B. Galvin, und G. Gagne, Operating System Concepts, 10th Aufl. Wiley, 2018.
Logo Sys
Kapitel 10 - Betriebssysteme