Sie sind auf Seite 1von 576

BTS 01 - Geschichte+Grundlagen

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Geschichte und Grundlagen

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lehrveranstaltung

Zitat von Mr. Miyagi: „Nicht nur der


Schüler lernt von seinem Meister; auch
der Meister lernt von seinem Schüler.“

▶ Nehmen Sie aktiv an der Lehrveranstaltung teil!

BTS - Sasshofer 3
Lernziele dieses Foliensatzes

Am Ende dieses Foliensatzes kennen/verstehen Sie. . .

▶ wie die Betriebssysteme in die Informatik eingeordnet sind


▶ wie die Entwicklungen der Hardware die Entwicklung der
Betriebssysteme beeinflusst hat
▶ Stapelverarbeitung
▶ Einzelprogrammbetrieb (Singletasking)
▶ Mehrprogrammbetrieb (Multitasking)
▶ Dialogbetrieb (Time Sharing)
▶ die Kernfunktionalitäten der Betriebssysteme:
▶ Speicherverwaltung
▶ Dateisysteme
▶ Systemaufrufe um Zugriffe auf die Hardware zu verwalten
▶ Prozessverwaltung
▶ Interprozesskommunikation
▶ Prozesssynchronisation

BTS - Sasshofer 4
Kernfunktionalitäten von Betriebssystemen

Am Ende des Semesters. . .

▶ kennen und verstehen Sie die Arbeitsweise der


Kernfunktionalitäten von Betriebssystemen
▶ verstehen Sie die Arbeitsweise der wichtigsten
Hardwarekomponenten
▶ haben Sie grundlegende Kenntnisse im Umgang mit Linux
▶ haben Sie grundlegende Kenntnisse in Shell-Programmierung
BTS - Sasshofer 5
Situation heute und Ziel für dieses Semester

BTS - Sasshofer 6
Also

BTS - Sasshofer 7
Prinzipieller Aufbau eines Betriebssystems

▶ Benutzerprozesse arbeiten die Aufträge der Benutzer ab


▶ Systemprozesse erbringen Dienstleistungen des Betriebssystems
▶ Alle nicht als Systemprozesse realisierten Komponenten enthält der
Betriebssystemkern (⇒ Kernel)

Betriebssysteme sind ein Teil der Systemsoftware


Systemsoftware steuert den Betrieb eines Rechners, stellt eine
Verbindung zur Hardware her und steuert die Verwendung und Zuteilung
der Hardwareressourcen

BTS - Sasshofer 8
Generationen von Computern und Betriebssystemen

Fragen, die die folgenden Folien klären sollen. . .


▶ Welche Betriebssysteme gibt es?
▶ Seit wann gibt es Betriebssysteme?
▶ Wie hat die Entwicklung der Hardware die Entwicklung der
Betriebssysteme beeinflusst?

BTS - Sasshofer 9
Generationen von Computern und Betriebssystemen

Generation Zeitraum Technologischer Fortschritt

0 bis 1940 (Elektro-)mechanische Rechenmaschinen


⇒ keine Software!
1 1940 – 1955 Elektronenröhren, Relais, Klinkenfelder
2 1955 – 1965 Transistoren, Stapelverarbeitung
3 1965 – 1980 Integrierte Schaltungen, Dialogbetrieb
4 1980 – 2000 Hoch-integrierte Schaltungen,
Mikroprozessoren, PCs/Workstations
5 2000 bis ? Verteilte Systeme, Das Netz ist der
Computer. Virtualisierung

Aus der Zeitschrift Populäre Mechanik (1949)


▶ „Computer der Zukunft werden nicht mehr als 1,5 Tonnen wiegen.“

BTS - Sasshofer 10
0. Generation (bis 1940)

▶ Mechanische/elektromechanische Rechenmaschinen
▶ Beispiele:
▶ Rechenmaschine von Wilhelm Schickard (1623)
▶ Bietet Addition, Subtraktion und Zehnerübertragung
▶ Rechenmaschine Pascaline von Blaise Pascal (1643)
▶ Bietet Addition, Subtraktion, ≤ 8 Stellen und Zehnerübertragung
▶ Leibniz’sche Rechenmaschine von Gottfried Wilhelm Leibniz (1673)
▶ Bietet alle 4 Grundrechenarten, ≤ 6 Stellen und Zehnerübertragung

Keine Software in dieser Generation ⇒ Keine Betriebssysteme

BTS - Sasshofer 11
0. Generation (bis 1940)

▶ Weiteres Beispiel:
▶ Differenzmaschine Nr.1 zum Lösen polynomialer Funktionen von
Charles Babbage (1832)

BTS - Sasshofer 12
0. Generation (bis 1940)

▶ Weiteres Beispiel:
▶ Hollerithmaschine von Herman Hollerith (1888)
▶ Besteht aus: Tabelliermaschine, Lochkartensortierer,
Lochkartenlocher und Lochkartenleser
▶ 1890: Einsatz bei der amerikanischen Volkszählung
▶ 1924: Die Firma von Hollerith wird in International Business
Machines Corporation (IBM) umbenannt

BTS - Sasshofer 13
1. Generation (1940 bis 1955)

▶ Die 1.Generation Computersysteme entstand während des


2.Weltkriegs ⇒ Konrad Zuse, John von Neumann
▶ Anforderungen an einen universellen Computer:
▶ Gespeichertes Programm
▶ Bedingte Sprünge
▶ Trennung von Speicher und Prozessor
▶ Rechner waren Maschinen mit teilweise > 10.000 Röhren oder
Relais, die langsam und fehleranfällig arbeiteten
▶ Programme wurden über Steckfelder gesteckt
▶ Der Benutzer/Programmierer startet ein Programm, dass direkt auf
die Hardware zugreift
Keine Betriebssysteme und Programmiersprachen in dieser
Generation

BTS - Sasshofer 14
Bekannte Vertreter der 1. Generation

Computer, die intern nach dem Dezimalsystem arbeiten?


▶ Detaillierte Beschreibung des Aufbaus:
http://computer-modell-katalog.de/eniac.htm

▶ Bild: Zuse Z3 (1941)


▶ Erster programmierbarer Digitalrechner
der Welt (basiert auf Relaistechnik)
▶ Erstmals Verwendung des Dualsystems

BTS - Sasshofer 15
1. Generation: ENIAC (1944)

▶ Electronic Numerical Integrator


and Computer (ENIAC)
▶ Erster elektronischer
Universalrechner (mit
Elektronenröhren)

BTS - Sasshofer 16
2. Generation (1955 bis 1965)

▶ Anfang der 1950er Jahre: Lochkarten lösen die Steckfelder ab


▶ Mitte der 1950er Jahre: Einführung der Transistoren ⇒
Rechnersysteme werden zuverlässiger

▶ FORTRAN- oder COBOL-Programme wurden. . .


▶ vom Programmierer auf Formblätter aufgeschrieben,
▶ vom Eingeber bzw. Codierer in Lochkarten gestanzt
▶ und dem Operator übergeben
▶ Der Operator. . .
▶ koordiniert die Reihenfolge der Programme (Jobs)
▶ bestückt den Rechner mit den Lochkarten
▶ lädt den Compiler vom Magnetband
▶ übergibt das Rechenergebnis als Ausdruck ⇒
Ineffiziente Arbeitsweise
▶ Später wurden aus Effizienzgründen die Programme gesammelt, auf
Magnetbänder eingelesen und dann im Maschinenraum verarbeitet

BTS - Sasshofer 17
2. Generation: Stapelbetrieb bzw. Batchbetrieb (1/4)

▶ Frühe Betriebssysteme waren


Stapelverarbeitungs-Betriebssysteme
▶ Ziel: Maximierung der Prozessorausnutzung

▶ Jedes Programm muss (mit allen


Eingabedaten!) vollständig vorliegen,
bevor die Abarbeitung beginnen kann
▶ Stapelbetrieb eignet sich gut zur
Ausführung von Routineaufgaben

▶ Auch heutige Systeme ermöglichen die automatische Bearbeitung


von Programmabfolgen (z.B. Batch-Dateien, Shell-Skripte, usw.)

Bildquelle: IBM (Das Bild zeigt eine IBM 7090 von 1959)
http://www.computer-history.info/Page4.dir/pages/IBM.7090.dir/images/ibm.7090.jpg

BTS - Sasshofer 18
2. Generation: Stapelbetrieb bzw. Batchbetrieb (2/4)

▶ Stapelbetrieb ⇒ Beschleunigung durch Automatisierung


▶ Nachteil: Der Hauptprozessor wird noch nicht optimal ausgenutzt
▶ Während der Ein-/Ausgabe liegt der Prozessor brach

BTS - Sasshofer 19
2. Generation: Stapelbetrieb bzw. Batchbetrieb (3/4)

▶ Vor-/Nachrechner befreien den Großrechner von langsamer


I/O-Arbeit
▶ Von Band kann schneller eingelesen werden, als von Lochkarten und
auf Band kann schneller Ausgegeben werden als auf Papier
▶ Spooling ist die Entlastung des Hauptprozessors durch zusätzliche
Hardware für Ein-/Ausgabeoperationen
▶ Ein-/Ausgabe geschieht nebenläufig zur Bearbeitung anderer
Aufträge

Moderne Computer haben neben der CPU spezielle, DMA-fähige (Direct


Memory Access) Ein-/Ausgabeprozessoren

▶ Diese schreiben Daten direkt in den Hauptspeicher und holen von dort
BTS - Sasshofer Ergebnisse 20
2. Generation: Stapelbetrieb bzw. Batchbetrieb (4/4)

▶ Spooling ist heute noch aktuell


▶ z.B. Spoolingprozesse zum Drucken
▶ Üblicherweise ist Stapelverarbeitung (Batchbetrieb)
interaktionslos
▶ Nach dem Start eines Programms wird dieses bis zum
Ende oder Auftreten eines Fehlers ohne Interaktion mit
dem Benutzer abgearbeitet

▶ Stapelverarbeitungs-Betriebssysteme der zweiten Generation


bieten nur Einzelprogrammbetrieb = Singletasking (⇒ Foliensatz
2)
▶ Das BS erlaubt nur die Ausführung eines Programms auf einmal
▶ Der Start eines zweiten Programms erfordert Beendigung des Ersten

Stapelbetrieb ist heute nicht obsolet!


▶ Rechenintensive Programme in verteilten Systemen sind meist
interaktionslose Batchprogramme

BTS - Sasshofer 21
2. Generation: Lochkarten

▶ Jede Lochkarte stellt üblicherweise eine Zeile Programmtext mit 80


Zeichen oder entsprechend viele binäre Daten dar
▶ Das die Zeilenlänge von E-Mails und Textdateien heute noch
typischerweise 80 Zeichen beträgt, geht auf die Lochkarte zurück
▶ 12 Lochpositionen für die Kodierung jedes Zeichens
▶ Ziffern kodiert man mit einem einzelnen Loch in der entsprechenden
Zeile
▶ Buchstaben und Sonderzeichen kodiert man, indem mehrere Löcher
in die Spalte gestanzt werden

BTS - Sasshofer 22
3. Generation (1960 bis 1980)
▶ Frühe 1960er Jahre: Integrierte Schaltungen sind verfügbar ⇒
Leistungsfähigere, kleinere und billigere Computer
▶ 1960er Jahre:
▶ Weiterentwicklung der Stapelverarbeitungssysteme um mehrere
Jobs gleichzeitig abzuarbeitende ⇒ Multitasking
▶ Erste einfache Speicherverwaltung (Fixed Partitions)
▶ 1970er Jahre: Dialogbetrieb (Time Sharing) bzw. Zeitteilbetrieb
▶ Eine Zentraleinheit, mehrere Terminals (Dialogstationen)
▶ Jeder Benutzer erhält beim Anmelden einen Benutzerprozess
▶ Ende der 1970er Jahre: Entwicklung des Mikroprozessors ⇒
Entwicklung des Heimcomputers / Personal Computers (PC)
▶ 1977: Apple II. Erster Heimcomputer
▶ 1981: IBM PC. Meist verkaufte Rechnerarchitektur (Intel 80x86)
Einige Betriebssysteme der 3. Generation
BESYS, CTSS, OS/360, CP/CMS, Multics, Unics (später Unix), DEC
DOS-11, DEC RT-11, Version 6/7 Unix, DEC CP/M, Cray Operating System,
DEC VMS
BTS - Sasshofer 23
Bekannte Vertreter der 3. Generation

▶ In dieser Generation gibt es auch. . .


▶ erstes dezentrales Computernetz
(Arpanet)
▶ Computernetze, um Terminals mit
Großrechnern über serielle Leitungen zu
verbinden (z.B. IBM Systems Network
Architecture)
▶ proprietäre
Direktverbindungsnetzwerke (z.B.
DECnet)

BTS - Sasshofer 24
3. Generation: Dialogbetrieb – Time Sharing (1/2)

▶ Mehrere Benutzer arbeiten an einem


Computer gleichzeitig und konkurrierend,
indem sie sich die verfügbare Rechenzeit
des Hauptprozessors teilen
▶ Ziel: Faire Verteilung der Rechenzeit

▶ Verteilung der Rechenzeit durch Zeitscheiben (Time Slices)


▶ Die Verteilung kann nach unterschiedlichen Strategien erfolgen
▶ Mehrere Benutzer können gleichzeitig über Terminals am
Computer interaktiv arbeiten ⇒ Mehrbenutzerbetrieb (⇒
Foliensatz 2)
▶ Die Programme der einzelnen Benutzer sind unabhängig
voneinander
▶ Die quasi-parallele Programm- bzw. Prozessausführung heißt
Mehrprogrammbetrieb oder Multitasking (⇒ Foliensatz 2)
▶ Ziel: Minimierung der Antwortzeit
BTS - Sasshofer 25
3. Generation: Dialogbetrieb – Time Sharing (2/2)

▶ Durch Dialogbetrieb wurden neue Konzepte nötig:


▶ Speicherschutz: Der Arbeitsspeicher wird aufgeteilt und laufende
Programme voneinander getrennt
▶ So können Programmierfehler oder der Absturz eines Programms
nicht die Stabilität anderer Programme und des Gesamtsystems
beeinträchtigen ⇒ Foliensatz 5
▶ Dateisysteme, die quasi-gleichzeitige Dateizugriffe erlauben ⇒
Foliensatz 6
▶ Swapping (Auslagerung): Prozess des Ein- und Auslagerns von
Daten in den/vom Arbeitsspeicher vom/in Auslagerungsspeicher
(Festplatten/SSDs) ⇒ Foliensatz 7
▶ Scheduling: Automatische Erstellung eines Ablaufplanes (schedule),
der Benutzern bzw. Prozessen zeitlich begrenzte Ressourcen zuteilt
⇒ Foliensatz 8

BTS - Sasshofer 26
4. Generation (1980 bis 2000)
▶ Hochintegrierte Schaltkreise und exponentiell wachsende
Integrationsdichte der elektronischen Komponenten
▶ Prozessoren werden immer leistungsfähiger und preiswerter
▶ Speicherbausteine haben eine immer höhere Kapazität
▶ Hohe Rechenleistung kann an jedem Arbeitsplatz installiert werden
▶ Workstations setzten sich im professionellen Umfeld durch
▶ Immer größerer Erfolg von Heimcomputern und Personal
Computern
▶ Hauptaufgabe der Betriebssysteme: Bereitstellung intuitiver
Benutzeroberflächen für Benutzer, die von der zu Grunde liegenden
Hardware nichts wissen wollen
▶ Etablierung von Computernetzen mit offenen Standards
▶ Ethernet, Token Ring, WLAN

Einige Betriebssysteme der 4. Generation


QDOS, Xenix, MS-DOS, PC-DOS, QNX, GNU-Projekt, SunOS, MacOS,
AmigaOS, Atari TOS, Windows, IBM AIX, GEOS, SGI IRIX, MINIX, OS/2,
NeXTSTEP, SCO UNIX, Linux, BeOS, Haiku, Google Fuchsia
BTS - Sasshofer 27
5. Generation (2000 bis ????)

▶ Einige Schlagworte aus der 5. Generation:


▶ Das Netz ist der Computer
▶ Verteilte Systeme ⇒ Cluster-, Cloud-, Grid-, P2P-Computing
▶ Multicore-Prozessoren und parallelisierte Anwendungen
▶ Virtualisierung ⇒ VMware, XEN, KVM,. . .
▶ Freie Software (OpenSource) ⇒ Linux (Android), BSD,. . .
▶ Kommunikation überall ⇒ mobile Systeme
▶ Neue Arbeitsformen ⇒ e-Science, e-Learning, e-Business,. . .
▶ Dienste und Services ⇒ Web Services (REST, SOAP)
▶ Ressourcen nach Bedarf mieten bzw. anfordern ⇒ On Demand
▶ Personal Computing vs. Parental Computing (z.B. iOS)
▶ Künstliche Intelligenz = Artificial Intelligence (AI)
▶ Schlagworte für später:
▶ Quantencomputer (wohl eher 6., 7. oder 8. Generation)

BTS - Sasshofer 28
BTS 02 - Klassifikation

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Klassifikation

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

Betriebssysteme werden nach unterschiedlichen Kriterien


klassifiziert
Die wichtigen Unterscheidungskriterien sind Inhalt dieses Foliensatzes
▶ Am Ende dieses Foliensatzes kennen/verstehen Sie. . .
▶ den Unterschied zwischen Einzelprogrammbetrieb (Singletasking)
und
▶ Mehrprogrammbetrieb (Multitasking)
▶ den Unterschied zwischen Einzelbenutzerbetrieb (Single-User) und
Mehrbenutzerbetrieb (Multi-User)
▶ den Grund für die Länge der Speicheradressen
▶ was Echtzeitbetriebssysteme sind
▶ was Verteilte Betriebssysteme sind
▶ den Betriebssystemaufbau (unterschiedliche Kernelarchitekturen)
▶ Monolithische Kerne
▶ Minimale Kerne
▶ Hybride Kerne
▶ das Schalenmodell bzw. Schichtenmodell

BTS - Sasshofer 3
Einzelprogrammbetrieb und Mehrprogrammbetrieb

▶ Einzelprogrammbetrieb (Singletasking)
▶ Zu jedem Zeitpunkt läuft nur ein einziges Programm
▶ Mehrere gestartete Programme werden nacheinander ausgeführt

▶ Mehrprogrammbetrieb
(Multitasking)
▶ Mehrere Programme können
gleichzeitig (bei mehreren
CPUs/Kernen) oder zeitlich
verschachtelt (quasi-parallel)
ausgeführt werden

Task, Prozess, Aufgabe, Auftrag,. . .


Der Begriff Task ist gleichzusetzen mit Prozess oder aus Anwendersicht
Aufgabe bzw. Auftrag

BTS - Sasshofer 4
Warum Mehrprogrammbetrieb (Multitasking)?
Wir wissen. . .
▶ Bei Mehrprogrammbetrieb laufen mehrere Prozesse nebenläufig
▶ Die Prozesse werden in kurzen Abständen, abwechselnd aktiviert ⇒ Dadurch
entsteht der Eindruck der Gleichzeitigkeit
▶ Nachteil: Das Umschalten von einem Prozess zu anderen, erzeugt
Verwaltungsaufwand (Overhead)

▶ Prozesse müssen häufig auf äußere Ereignisse warten


▶ Gründe sind z.B. Benutzereingaben, Eingabe/Ausgabe-Operationen
von Peripheriegeräten, Warten auf eine Nachricht eines anderen
Programms
▶ Durch Mehrprogrammbetrieb können Prozesse, die auf
ankommende E-Mails, erfolgreiche Datenbankoperationen,
geschriebene Daten auf der Festplatte oder ähnliches warten, in den
Hintergrund geschickt werden
▶ Andere Prozesse kommen so früher zum Einsatz
▶ Der Overhead, der bei der quasiparallelen Abarbeitung durch Programmwechsel
entsteht, ist im Vergleich zum Geschwindigkeitszuwachs zu vernachlässigen
BTS - Sasshofer 5
Einzelbenutzerbetrieb und Mehrbenutzerbetrieb

▶ Einzelbenutzerbetrieb (Single-User)
▶ Der Computer steht immer nur einem einzigen Benutzer zur
Verfügung
▶ Mehrbenutzerbetrieb (Multi-User)
▶ Mehrere Benutzer können gleichzeitig mit dem Computer arbeiten
▶ Die Benutzer teilen sich die Systemressourcen (möglichst gerecht)
▶ Benutzer müssen (u.a. durch Passwörter) identifiziert werden
▶ Zugriffe auf Daten/Prozesse anderer Benutzer werden verhindert

▶ Die Desktop/Workstation-Versionen von Windows


NT/XP/Vista/7/8/10 sind halbe Multi-User-Betriebssysteme
▶ Verschiedene Benutzer können nur nacheinander am System
arbeiten, aber die Daten und Prozesse der Benutzer sind
voreinander geschützt

BTS - Sasshofer 6
8/16/32/64 Bit-Betriebssysteme

▶ Die Bit-Zahl gibt die Länge der Speicheradressen an, mit denen das
Betriebssystem intern arbeitet
▶ Ein Betriebssystem kann nur so viele Speichereinheiten ansprechen,
wie der Adressraum zulässt
▶ Die Größe des Adressraums hängt vom Adressbus ab ⇒ Foliensatz 3
▶ 8 Bit-Betriebssysteme können 28 Speichereinheiten adressieren
▶ z.B. GEOS, Atari DOS, Contiki
▶ 16 Bit-Betriebssysteme können 216 Speichereinheiten adressieren
▶ z.B. MS-DOS, Windows 3.x, OS/2 1.x
▶ 32 Bit-Betriebssysteme können 232 Speichereinheiten adressieren
z.B. Windows 95/98/NT/Vista/7/8/10, OS/2 2/3/4, eComStation,
Linux, BeOS, MacOS X (bis einschließlich 10.7)
▶ 64 Bit-Betriebssysteme können 264 Speichereinheiten adressieren
z.B. Linux (64 Bit), Windows 7/8/10 (64 Bit), MacOS X (64 Bit)

Bill Gates (1989)


„We will never make a 32-bit operating system.“

BTS - Sasshofer 7
Echtzeitbetriebssysteme (Real-Time Operating Systems)

▶ Sind Multitasking-Betriebssysteme mit zusätzlichen


Echtzeit-Funktionen für die Einhaltung von Zeitschranken
▶ Wesentliche Kriterien von Echtzeitbetriebssystemen:
▶ Reaktionszeit
▶ Einhalten von Deadlines
▶ Unterschiedliche Prioritäten werden berücksichtigt, damit wichtige
Prozesse innerhalb gewisser Zeitschranken ausgeführt werden
▶ 2 Arten von Echtzeitbetriebssystemen existieren:
▶ Harte Echtzeitbetriebssysteme
▶ Weiche Echtzeitbetriebssysteme
▶ Aktuelle Desktop-Betriebssysteme können weiches
Echtzeitverhalten für Prozesse mit hoher Priorität garantieren
▶ Wegen des unberechenbaren Zeitverhaltens durch Swapping,
Hardwareinterrupts etc. kann aber kein hartes Echtzeitverhalten
garantiert werden

BTS - Sasshofer 8
Harte und Weiche Echtzeitbetriebssysteme

▶ Harte Echtzeitbetriebssysteme
▶ Zeitschranken müssen unbedingt eingehalten werden
▶ Verzögerungen können unter keinen Umständen akzeptiert werden
▶ Verzögerungen führen zu katastrophalen Folgen und hohen Kosten
▶ Ergebnisse sind nutzlos wenn sie zu spät erfolgten
▶ Einsatzbeispiele: Schweißroboter, Reaktorsteuerung, ABS,
▶ Flugzeugsteuerung, Überwachungssysteme auf der Intensivstation
▶ Weiche Echtzeitbetriebssysteme
▶ Gewisse Toleranzen sind erlaubt
▶ Verzögerungen führen zu akzeptablen Kosten
▶ Einsatzbeispiele: Telefonanlage, Parkschein- oder
Fahrkartenautomat, Multimedia-Anwendungen wie Audio/Video on
Demand

BTS - Sasshofer 9
Architekturen von Echtzeitbetriebssystemen

▶ Thin-Kernel
▶ Der Betriebssystemkern selbst läuft als Prozess
mit niedrigster Priorität
▶ Der Echtzeit-Kernel übernimmt das Scheduling
▶ Echtzeit-Prozesse haben die höchste Priorität
⇒ minimale Reaktionszeiten (Latenzzeiten)
▶ Nano-Kernel
▶ Neben dem Echtzeit-Kernel kann eine beliebige
Anzahl anderer Betriebssystem-Kernel laufen
▶ Pico-Kernel, Femto-Kernel, Atto-Kernel
▶ Marketingbegriffe der Hersteller von
Echtzeitsystemen, um die Winzigkeit ihrer
Echtzeit-Kernel hervorzuheben

BTS - Sasshofer 10
Einsatzgebiete von Echtzeitbetriebssystemen

▶ Typische Einsatzgebiete von


Echtzeitbetriebssystemen:
▶ Mobiltelefone
▶ Industrielle Kontrollsysteme
▶ Roboter
▶ Beispiele für
Echtzeitbetriebssysteme:
▶ QNX
▶ VxWorks
▶ LynxOS
▶ Nucleus
▶ Symbian
▶ Windows CE

BTS - Sasshofer 11
Die QNX Demo Disc von 1999. . .

Beeindruckendes Video über die Demo Disc:


https://www.youtube.com/watch?v=K_VlI6IBEJ0

BTS - Sasshofer 12
Verteilte Betriebssysteme

▶ Verteiltes System
▶ Steuert die Prozesse auf mehreren Rechner eines Clusters
▶ Die einzelnen Rechner bleiben den Benutzern und deren Prozessen
transparent verborgen
▶ Das System erscheint als ein einzelner großer Rechner
▶ Prinzip des Single System Image

▶ Das Prinzip der verteilten Betriebssysteme


ist tot!
▶ Aber: Bei der Entwicklung einiger verteilter
Betriebssysteme wurden einige
interessante Technologien entwickelt oder
erstmals angewendet
▶ Einige dieser Technologien sind heute
noch aktuell

BTS - Sasshofer 13
Verteilte Betriebssysteme heute

▶ Das Konzept konnte sich nicht durchsetzen


▶ Verteilte Betriebssysteme kamen nicht aus dem Stadium von
Forschungsprojekten heraus
▶ Etablierte Betriebssysteme konnten nicht verdrängt werden

▶ Um Anwendungen für Cluster zu


entwickeln, existieren Bibliotheken, die
von der Hardware unabhängiges Message
Passing bereitstellen
▶ Kommunikation via Message Passing
basiert auf dem Versand von
Nachrichten
▶ Verbreitete Message Passing Systeme:
▶ Message Passing Interface (MPI) ⇒
Standard-Lösung
▶ Parallel Virtual Machine (PVM) ⇒ d
▶ MPI tutorials: http://mpitutorial.com/tutorials/
BTS - Sasshofer 14
Betriebssystemaufbau (Kernelarchitekturen)

▶ Der Kernel enthält die grundlegenden Funktionen des


Betriebssystems und ist die Schnittstelle zur Hardware
▶ Unterschiedliche Kernelarchitekturen existieren
▶ Sie unterscheiden sich darin, welche Funktionen im Kern enthalten
sind und welche sich außerhalb des Kerns als Dienste (Server)
befinden

▶ Funktionen im Kern, haben vollen


Hardwarezugriff (Kernelmodus)
▶ Funktionen außerhalb des Kerns
können nur auf ihren virtuellen
Speicher zugreifen
(Benutzermodus) ⇒ Foliensatz 5

BTS - Sasshofer 15
Monolithische Kerne (1/2)

▶ Enthalten Funktionen zur. . .


▶ Speicherverwaltung
▶ Prozessverwaltung
▶ Prozesskommunikation
▶ Hardwareverwaltung
▶ Dateisysteme

▶ Vorteile:
▶ Weniger Kontextwechsel als Mikrokernel ⇒ höhere Geschwindigkeit
▶ Gewachsene Stabilität
▶ Mikrokernel sind in der Regel nicht stabiler als monolithische Kerne
▶ Nachteile:
▶ Abgestürzte Komponenten des Kerns können nicht separat neu
gestartet werden und das gesamte System nach sich ziehen
▶ Hoher Entwicklungsaufwand für Erweiterungen am Kern, da dieser
bei jedem Kompilieren komplett neu übersetzt werden muss

BTS - Sasshofer 16
Monolithische Kerne (2/2)

▶ Hardware- und
Dateisystem-Treiber im
Linux-Kernel können in Module
auslagert werden
▶ Die Module laufen jedoch im
Kernelmodus und nicht im
Benutzermodus
▶ Darum ist der Linux-Kernel ein
monolithischer Kernel

Beispiele für Betriebssysteme mit monolithischem Kern


Linux, BSD, MS-DOS, FreeDOS, Windows 95/98/ME, MacOS (bis 8.6),
OS/2

BTS - Sasshofer 17
Minimale Kerne (1/2)

▶ Im Kern sind primär. . .


▶ Funktionen zur Speicher- und
Prozessverwaltung
▶ Funktionen zur Synchronisation
und Interprozesskommunikation
▶ Notwendigste Treiber (z.B. zum
Systemstart)

▶ Gerätetreiber, Dateisysteme und Dienste (Server) sind außerhalb


des Kerns und laufen wie die Anwendungsprogramme im
Benutzermodus

Beispiele für Betriebssysteme mit Mikrokernel


AmigaOS, MorphOS, Tru64, QNX Neutrino, Symbian, GNU HURD

BTS - Sasshofer 18
Minimale Kerne (2/2)

▶ Vorteile:
▶ Einfache Austauschbarkeit der Komponenten
▶ Theoretisch beste Stabilität und Sicherheit
▶ Grund: Es laufen weniger Funktionen im Kernelmodus

▶ Nachteile:
▶ Langsamer wegen der größeren
Zahl von Kontextwechseln
▶ Entwicklung eines neuen
(Mikro-)kernels ist eine
komplexe Aufgabe

▶ Der Anfang der 1990er Jahre prognostizierte Erfolg der


Mikrokernelsysteme blieb aus ⇒ Diskussion von Linus Torvalds
vs. Andrew S. Tanenbaum (1992)

BTS - Sasshofer 19
Hybride Kerne / Hybridkernel / Makrokernel
▶ Kompromiss zwischen monolithischen Kernen und minimalen
Kernen
▶ Enthalten aus Geschwindigkeitsgründen Komponenten, die bei
minimalen Kernen außerhalb des Kerns liegen
▶ Es ist nicht festgelegt, welche Komponenten bei Systemen mit
hybriden Kernen zusätzlich in den Kernel einkompiliert sind
▶ Die Vor- und Nachteile von hybriden Kernen zeigt Windows NT 4
▶ Das Grafiksystem ist bei Windows NT 4 im Kernel enthalten
▶ Vorteil: Steigerung der Performance
▶ Nachteil: Fehlerhafte Grafiktreiber führen zu häufigen Abstürzen
▶ Vorteile:
▶ Bessere Geschwindigkeit als minimale Kerne da weniger
Kontextwechsel
▶ Höhere Stabilität (theoretisch!) als monolithische Kerne
Beispiele für Betriebssysteme mit hybriden Kernen
Windows seit NT 3.1, ReactOS, MacOS X, BeOS, ZETA, Haiku, Plan 9,
DragonFly BSD
BTS - Sasshofer 20
Linus Torvalds vs. Andrew Tanenbaum (1992)

▶ 26. August 1991: Linus Torvalds kündigt das Projekt Linux


in der Newsgroup comp.os.minix an
▶ 17. September 1991: Erste interne Version (0.01)
▶ 5. Oktober 1991: Erste offizielle Version (0.02)
▶ 29. Januar 1992: Andrew S. Tanenbaum schreibt in der
Newsgroup comp.os.minix: „LINUX is obsolete“
▶ Linux hat einen monolithischen Kernel ⇒ Rückschritt
▶ Linux ist nicht portabel, weil auf 80386er optimiert und
diese Architektur wird demnächst von
RISC-Prozessoren abgelöst (Irrtum!)
Es folgte eine mehrere Tage dauernde, zum Teil emotional geführte Diskussion über die
Vor- und Nachteile von monolithischen Kernen, minimalen Kernen, Portabilität und freie
Software

A. Tanenbaum (30. Januar 1992): „I still maintain the point that designing a monolithic
kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not
get a high grade for such a design :-)“.
Die Zukunft kann nicht vorhergesagt werden

BTS - Sasshofer 21
Ein trauriges Kernel-Beispiel – HURD

▶ 1984: Richard Stallman gründet das GNU-Projekt


▶ Ziel: Entwicklung eines freien UNIX-Betriebssystems
⇒ GNU HURD
▶ GNU HURD besteht aus:
▶ GNU Mach, der Mikrokernel
▶ Dateisysteme, Protokolle, Server (Dienste), die im
Benutzermodus laufen
▶ GNU Software, z.B. Editoren (GNU Emacs), Debugger
(GNU Compiler Collection), Shell (Bash),. . .
▶ GNU HURD ist so weit fertig
▶ Die GNU Software ist seit Anfang der 1990er Jahre
weitgehend fertig
▶ Nicht alle Server sind fertig implementiert
▶ Eine Komponente fehlt noch: Der Mikrokernel

BTS - Sasshofer 22
Ein extremes Kernel-Beispiel – kHTTPd

▶ 2000: Ingo Molnár entwickelt für Linux Kernel 2.4.x


den kernel-basierten Web-Server kHTTPd
▶ Vorteil: Beschleunigte Auslieferung statischer(!)
Web-Seiten
▶ Keine Moduswechsel zwischen Benutzermodus und
Kernelmodus nötig
▶ Daten werden zwischen Arbeitsspeicher und
Netzwerkgerät übertragen
▶ Nachteil: Sicherheitsrisiko
▶ Komplexe Software wie ein Web-Server sollten nicht
im Kernelmodus laufen
▶ Bugs im Web-Server könnten zu Systemabstürzen oder
zur vollständigen Kontrollübernahme durch Angreifer
führen
▶ Im Linux Kernel ≥ 2.6.x ist kHTTPd nicht enthalten

BTS - Sasshofer 23
Schichtenmodell (1/2)

▶ Betriebssysteme werden mit ineinander liegenden Schichten


logisch strukturiert
▶ Die Schichten umschließen sich gegenseitig
▶ die Schichten enthalten von innen nach außen immer abstraktere
Funktionen
▶ Das Minimum sind 3 Schichten:
▶ Die innerste Schicht enthält die hardwareabhängigen Teile des
Betriebssystems
▶ So können Betriebssysteme (theoretisch!) leicht an unterschiedliche
Rechnerarchitekturen angepasst werden
▶ Die mittlere Schicht enthält grundlegende Ein-/Ausgabe-Dienste
(Bibliotheken und Schnittstellen) für Geräte und Daten
▶ Die äußerste Schicht enthält die Anwendungsprogramme und die
Benutzerschnittstelle
▶ In der Regel stellt man Betriebssysteme mit mehr als 3 logischen
Schichten dar

BTS - Sasshofer 24
Schichtenmodell (2/2)

▶ Jede Schicht ist mit einer abstrakten Maschine vergleichbar


▶ Die Schichten kommunizieren mit benachbarten Schichten über
wohldefinierte Schnittstellen
▶ Schichten können Funktionen der nächst inneren Schicht aufrufen
▶ Schichten stellen Funktionen der nächst äußeren Schicht zur
Verfügung
▶ Alle Funktionen (Dienste), die eine Schicht anbietet, und die Regeln,
die dabei einzuhalten sind, heißen Protokoll
BTS - Sasshofer 25
Schichtenmodell von Linux/UNIX

In der Realität ist das Konzept aufgeweicht. Anwendungen der Benutzer


können z.B. Bibliotheksfunktionen der Standardbibliothek glibc oder
direkt die Systemaufrufe aufrufen (⇒ siehe Foliensatz 7)

BTS - Sasshofer 26
BTS 03 - Rechnerarchitektur+Speicher

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Rechnerarchitektur und Speicher

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

▶ Am Ende dieses Foliensatzes kennen/verstehen Sie. . .


▶ die Rechnerarchitektur – Von-Neumann-Architektur
▶ die Hardware-Komponenten eines Computers
▶ Hauptprozessor (CPU)
▶ Busleitungen
▶ den Unterschied zwischen zeichen- und blockorientierten Geräten
▶ wie Daten von Ein- und Ausgabegeräten gelesen werden
▶ was für Speicher in Computern existiert
▶ die Architektur der Speicherhierarchie (Speicherpyramide)
▶ was Primär-/Sekundär-/Tertiärspeicher ist
▶ die Arbeitsweise der Speicherhierarchie
▶ die Arbeitsweise der Cache-Schreibstrategien (Write-Back und
Write-Through)

BTS - Sasshofer 3
Warum das Ganze?

▶ Warum besprechen wir auch die Arbeitsweise der CPU, des


Speichers und der Bussysteme in der Lehrveranstaltung
Betriebssysteme?

Edsger W. Dijkstra
„In der Informatik geht es genau so wenig um Computer, wie in der
Astronomie um Teleskope.“
▶ Betriebssysteme erleichtern den Benutzern und deren Prozessen
die Nutzung der Hardware
▶ Wer die Arbeitsweise der CPU, des Speichers und der Bussysteme
nicht kennt und versteht, versteht auch nicht die Arbeitsweise der
Betriebssysteme

BTS - Sasshofer 4
Von-Neumann-Architektur

▶ Idee und Aufbau des Universalrechners, der nicht an ein festes


Programm gebunden ist und über Ein-/Ausgabegeräte verfügt
▶ Entwickelt 1946 von John von Neumann (Neumann János
Lajos)
▶ Nach ihm benannt ist die Von-Neumann-Architektur, bzw. der
Von-Neumann-Rechner
▶ Im Von-Neumann-Rechner werden Daten und Programme binär
kodiert und liegen im gleichen Speicher
▶ Wesentliche Ideen der Von-Neumann-Architektur wurden bereits
1936 von Konrad Zuse ausgearbeitet und 1937 in der Zuse Z1
realisiert
▶ Von Neumanns Verdienste:
▶ Er hat sich als erster wissenschaftlich, mathematisch mit der
Konstruktion von Rechenmaschinen beschäftigt

BTS - Sasshofer 5
Der Hauptprozessor – Central Processing Unit (CPU)

▶ Die meisten Komponenten eines Computers sind passiv und


werden durch die CPU gesteuert
▶ Programme sind Folgen von Maschineninstruktionen, die in
aufeinander folgenden Speicheradressen abgelegt sind
▶ Bei der Programmausführung setzt die CPU die
Maschineninstruktionen Schritt für Schritt um

▶ Eine CPU besteht aus 2


Komponenten:
▶ Rechenwerk
▶ Steuerwerk
▶ Zudem sind Speicher und
Ein-/Ausgabegeräte nötig

BTS - Sasshofer 6
Komponenten der CPU

▶ Steuerwerk bzw. Leitwerk bzw. Befehlswerk (Control Unit)


▶ Interpretiert Befehle, koordiniert die anderen CPU-Komponenten,
steuert die Ein-/Ausgabe-Einheiten und den Steuerbus
▶ Rechenwerk bzw. Arithmetic Logic Unit (ALU)
▶ Manipulation von Daten und Adressen
▶ Führt die logischen (NOT, AND, OR, XOR,. . . ) und mathematischen
(ADD, SUB,. . . ) Operationen aus

▶ Speicher
▶ Register zur kurzfristigen
Speicherung von Operanden und
Adressen
▶ Arbeiten mit der selben
Geschwindigkeit, wie der Rest
der CPU
▶ Cache und Hauptspeicher
▶ Speicher für Programme und
Daten

BTS - Sasshofer 7
Von-Neumann-Zyklus (Fetch-Decode-Execute Cycle)

▶ Wiederholt von CPU vom


Systemstart bis der Computer
gestoppt wird
▶ Jede Phase kann mehrere Takte
in Anspruch nehmen

1. FETCH: Abzuarbeitenden Befehl aus dem Speicher in das Befehlsregister


(Instruction Register ) kopieren
2. DECODE: Steuerwerk löst den Befehl in Schaltinstruktionen für das Rechenwerk
auf
3. FETCH OPERANDS: Eventuell verfügbare Parameter (Operanden) für den Befehl
aus dem Speicher holen
4. EXECUTE: Rechenwerk führt den Befehl aus
5. UPDATE PROGRAM COUNTER: Befehlszähler (Program Counter ) wird auf den
nächsten Befehl gesetzt
6. WRITE BACK: Das Ergebnis des Befehls wird in einem Register oder im
Hauptspeicher gespeichert oder zu einem Ausgabegerät gesendet

Auch moderne CPUs und Rechnersysteme arbeiten nach dem Von-Neumann-Zyklus


BTS - Sasshofer 8
Datenbus

▶ Überträgt Daten zwischen CPU,


Arbeitsspeicher und Peripherie
▶ Anzahl der Datenbusleitungen legt
fest, wie viele Bytes pro Takt
übertragen werden können

▶ Üblicherweise ist die Anzahl der Datenbusleitungen gleich der


Größe der Arbeitsregister im Rechenwerk
▶ Datenbusbreite moderner CPUs: 64 Leitungen * Die CPU kann somit
64 Datenbits innerhalb eines Taktes zum und vom Arbeitsspeicher
weg übertragen
Datenbusbreite einiger CPUs

BTS - Sasshofer 9
Adressbus

▶ Überträgt Speicheradressen
▶ Speicheradressen und E/A-Geräte
werden über den Adressbus
angesprochen (adressiert)
▶ Anzahl der Busleitungen legt die
maximale Anzahl adressierbarer
Speicheradressen fest
Adressbusbreite einiger CPUs

BTS - Sasshofer 10
Steuerbus

▶ Überträgt Kommandos (z.B. Lese-


und Schreibanweisungen) von der
CPU und Statusmeldungen von den
Peripheriegeräten
▶ Unterschied zwischen Adressbus
und Steuerbus:
▶ Komponenten des Computers
werden über den Adressbus
angesprochen und über den
Steuerbus angewiesen, was sie
zu tun haben
▶ Enthält auch Leitungen, über die E/A-Geräte der CPU
Unterbrechungsanforderungen (Interrupts) signalisieren
▶ Typische Busbreite: ≤ 10 Leitungen

BTS - Sasshofer 11
Busse in modernen Rechnersystemen

▶ Verbindendes Element: Chipsatz


▶ Der Chipsatz besteht aus. . .
▶ Northbridge
▶ Liegt dicht an der CPU, um Daten
schnell übertragen zu können
▶ Zuständig für Anbindung des
Hauptspeicher und der Grafikkarte(n)
an die CPU
▶ Southbridge
▶ Für „langsamere“ Verbindungen
▶ Front-Side-Bus (FSB) heißt der Bus
zwischen CPU und Chipsatz
▶ Er enthält den Adressbus, Datenbus und
Steuerbus

BTS - Sasshofer 12
Ausgewählte Bussysteme

▶ Aus Geschwindigkeits- und Kostengründen werden zunehmend


Teile des Chipsatzes in die CPU verlagert
▶ Anders als in der Von-Neumann-Architektur werden Geräte nicht
direkt mit der CPU verbunden
▶ Rechnersysteme enthalten heute verschiedenen seriellen und
parallele Bussysteme, die für die jeweilige Erfordernisse ausgelegt
sind
▶ Immer häufiger werden Punkt-zu-Punkt-Verbindungen eingesetzt
▶ Eingabe-/Ausgabecontroller arbeiten als Vermittler zwischen den
Geräten und der CPU
▶ Einige Bussysteme:
▶ Parallele, Rechner-interne Busse: PATA (IDE), PCI, ISA, SCSI. . .
▶ Serielle, Rechner-interne Busse: SATA, PCI-Express. . .
▶ Parallele, Rechner-externe Busse: PCMCIA, SCSI. . .
▶ Serielle, Rechner-externe Busse: Ethernet, FireWire, USB, eSATA. . .

BTS - Sasshofer 13
Verlagerung des Speichercontrollers in die CPU

▶ Ergebnis: Die Northbridge enthält nur noch den Controller für PCIe

BTS - Sasshofer 14
Verlagerung der Northbridge in die CPU

▶ Bei einigen modernen


Systemen ist die
Northbridge in die CPU
verlagert
▶ Vorteil: Geringere Kosten für
das Gesamtsystem

BTS - Sasshofer 15
Zeichenorientierte und Blockorientierte Geräte

▶ Geräte an Computersystemen werden bezüglich der kleinsten


Übertragungseinheit unterschieden:
▶ Zeichenorientierte Geräte
▶ Bei Ankunft/Anforderung jedes einzelnes Zeichens wird immer mit
der CPU kommuniziert
▶ Beispiele: Maus, Tastatur, Drucker, Terminal und Magnetband

▶ Blockorientierte Geräte
▶ Datenübertragung findet erst statt, wenn ein
kompletter Block (z.B. 1-4 kB) vorliegt
▶ Beispiele: Festplatte, SSD, CD-/DVD-Laufwerk und
Disketten-Laufwerk
▶ Die meisten blockorientierten Geräte unterstützen
Direct Memory Access (DMA), um Daten ohne
CPU-beteiligung zu übertragen

BTS - Sasshofer 16
Daten einlesen

▶ Soll z.B. ein Datensatz von einer Festplatte gelesen werden, sind
folgende Schritte nötig:
1. Die CPU bekommt von einem Prozess die Anforderung, einen
Datensatz von einer Festplatte zu lesen
2. Die CPU schickt dem Controller mit Hilfe des Treibers einen
I/O-Befehl
3. Der Controller lokalisiert den Datensatz auf der Festplatte
4. Der Prozess erhält die angeforderten Daten
▶ Es gibt 3 Konzepte, wie Prozesse im Computer Daten einlesen
können:
▶ Busy Waiting (geschäftiges bzw. aktives Warten)
▶ Interrupt-gesteuert
▶ Direct Memory Access (DMA)

BTS - Sasshofer 17
Busy Waiting (geschäftiges bzw. aktives Warten)

▶ Der Treiber sendet die Anfrage an das Gerät und wartet in einer
Endlosschleife, bis der Controller anzeigt, dass die Daten bereit
stehen
▶ Stehen die Daten bereit, werden sie in den Speicher geschrieben
und die Ausführung des Prozesses geht weiter
▶ Beispiel: Zugriffsprotokoll Programmed Input/Output (PIO)
▶ Die CPU greift via Lese- und Schreibbefehle auf die Speicherbereiche
der Geräte zu und kopiert so Daten zu und von diesen Geräten

▶ Vorteil:
▶ Keine zusätzliche Hardware nötig
▶ Nachteile:
▶ Belastet die CPU
▶ Verlangsamt die gleichzeitige Abarbeitung mehrerer
Prozesse
▶ Grund: Regelmäßig muss die CPU überprüfen, ob die
Daten bereit stehen

BTS - Sasshofer 18
Interrupt-gesteuert
▶ Voraussetzung: Ein Interrupt-Controller und Leitungen im
Steuerbus für das Senden der Interrupts
▶ Der Treiber initialisiert die E/A-Aufgabe und wartet auf einen
Interrupt (Unterbrechung) durch den Controller ⇒ Der Treiber
schläft
▶ Die CPU ist während des Wartens auf den Interrupt nicht blockiert
und das Betriebssystem kann die CPU anderen Prozesse zuweisen
▶ Kommt es zum Interrupt, wird der Treiber dadurch geweckt ⇒
bekommt Zugriff auf die CPU
▶ Danach holt die CPU die Daten vom Controller und legt sie in den
Speicher
▶ Anschließend wird die CPU dem unterbrochenen Prozess zugewiesen,
der seine Abarbeitung fortsetzen kann
▶ Vorteile:
▶ Die CPU wird nicht blockiert
▶ Gleichzeitige Abarbeitung mehrerer Prozesse wird nicht verlangsamt
▶ Nachteil:
▶ Zusätzliche Hardware (Interrupt-Controller) ist nötig
BTS - Sasshofer 19
Direct Memory Access
▶ Voraussetzung: DMA-Controller
▶ Kann Daten direkt zwischen Arbeitsspeicher und E/A-Gerät
übertragen
▶ Beispiele: HDD/SSD, Soundkarte, Netzwerkkarte, TV-/DVB-Karte
▶ Löst nach der Datenübertragung einen Interrupt aus

▶ Beispiel: Ultra-DMA (UDMA)


▶ Nachfolgeprotokoll des PIO-Modus
▶ Legt fest, wie Daten zwischen
DMA-Controller und Arbeitsspeicher
übertragen werden
▶ Vorteile:
▶ Vollständige Entlastung der CPU
▶ Gleichzeitige Abarbeitung mehrerer Prozesse wird
nicht verlangsamt
▶ Nachteile:
▶ Zusätzliche Hardware (DMA-Controller) ist nötig
▶ Seit Ende der 1980er Jahre im Chipsatz integriert
BTS - Sasshofer 20
Speicher

▶ Speichert die Daten und die ausführbare Programme


▶ Unterschiedliche Speicher sind durch Busse verbunden und bilden
eine Hierarchie
⇒ Speicherpyramide
▶ Grund für die Speicher-Hierarchie: Preis/Leistungsverhältnis
⇒ Je schneller ein Speicher ist, desto teurer und knapper ist er

BTS - Sasshofer 21
Digitale Datenspeicher

▶ Wahlfreier Zugriff heißt, dass das Medium nicht – wie z.B. bei
Bandlaufwerken – von Beginn an sequentiell durchsucht werden
muss, um eine bestimmte Stelle (Datei) zu finden
▶ Die Köpfe von Magnetplatten oder ein Laser können in einer
bekannten maximalen Zeit zu jedem Punkt des Mediums springen

BTS - Sasshofer 22
Mechanische Datenspeicher

▶ Jede Lochkarte stellt üblicherweise eine Zeile Programmtext mit 80


Zeichen oder entsprechend viele binäre Daten dar
▶ Der dargestellte Lochstreifen hat 8 Löcher für Daten und eine
kleinere Transportlochung
▶ Man kann damit 1 Byte pro Zeile speichern
▶ Die Datenspeicherung auf CDs/DVDs erfolgt mit Pits (Gruben) und
Lands (Flächen), die auf einem Kunststoff aufgebracht sind
▶ Die Massenherstellung von CDs/DVDs heißt pressen und erfolgt via
Spritzgussverfahren mit einem Negativ (Stamper)

BTS - Sasshofer 23
Magnetische Datenspeicher

▶ Datenspeicherung auf magnetisierbarem Material


▶ Datenträger werden mit einem Lese-Schreib-Kopf
gelesen und beschrieben
▶ Ausnahme: Kernspeicher
▶ Der Lese-Schreib-Kopf kann beweglich (z.B. bei
Festplatten) oder feststehend (z.B. bei Magnetbändern)
sein
▶ Rotierende Datenspeicher:
▶ Festplatte (⇒ Foliensatz 4), Diskette,
Trommelspeicher…
▶ Nichtrotierende Datenspeicher:
▶ Kernspeicher, Magnetband, Magnetkarte/ -streifen,
Datasette, Magnetblasenspeicher…

BTS - Sasshofer 24
Magneto-optische Datenspeicher

▶ Rotierendes Speichermedium
▶ Wird magnetisch beschrieben
▶ Der Datenträger muss zum Schreiben erhitzt
werden
▶ Erst oberhalb der Curie-Temperatur ist die
magnetische Information änderbar
▶ Vorteil: Unempfindlich gegen Magnetfelder
▶ Das Erhitzen erfolgt via Laserstrahl
▶ Wird optisch ausgelesen
▶ Unterschiedlich magnetisierte Bereiche
reflektieren Licht unterschiedlich

BTS - Sasshofer 25
Elektronischer Datenspeicher

▶ Flüchtiger Speicher (volatile) – Random-Access Memory (RAM)


▶ Static Random-Access Memory (SRAM)
▶ Informationen werden als Zustandsänderung einer bistabile
Kippstufe (Flipflop) gespeichert
▶ Informationen können beim Anliegen der Betriebsspannung beliebig
lange gespeichert werden
▶ Dynamic Random-Access Memory (DRAM)
▶ Informationen werden in Kondensatoren gespeichert
▶ Benötigt ein periodisches Auffrischen der Informationen
▶ Bei fehlender dauerhaft Betriebsspannung oder zu später
Wiederauffrischung gehen die Information wegen der Leckströme
verloren
▶ Nichtflüchtiges Speicher (non-volatile)
▶ Read-Only Memory (ROM)
▶ Ultra-Violet Erasable Programmable ROM (UV-EPROM)
▶ Electrically Erasable Programmable ROM (EEPROM)
▶ …
▶ Flash-Speicher ⇒ Foliensatz 4

BTS - Sasshofer 26
Speicherpyramide

▶ Primärspeicher und
Sekundärspeicher sind permanent
mit dem Computer verbunden
▶ Vorteil: Geringe Zugriffszeiten
auf gespeicherte Daten

▶ Primärspeicher: Darauf greift die CPU direkt zu


▶ Sekundärspeicher: Wird über einen Controller angesprochen
▶ Tertiärspeicher: Nicht dauerhaft mit dem Rechner verbunden.
Hauptaufgabe ist Archivierung
▶ Tertiärspeicher wird unterschieden in
▶ Nearlinespeicher: Werden automatisch und ohne menschliches
Zutun dem System bereitgestellt (z.B. Band-Library)
▶ Offlinespeicher: Medien werden in Schränken oder Lagerräumen
aufbewahrt und müssen von Hand in das System integriert werden
▶ Streng genommen sind Wechselfestplatten auch Offlinespeicher

BTS - Sasshofer 27
Arbeitsweise der Speicherhierarchie

▶ Beim ersten Zugriff auf ein Datenelement, wird eine Kopie erzeugt,
die entlang der Speicherhierarchie nach oben wandert

▶ Wird das Datenelement verändert, müssen die Änderungen


irgendwann nach unten durchgereicht (zurückgeschrieben) werden
▶ Beim Zurückschreiben, müssen die Kopien des Datenblocks auf
allen Ebenen aktualisiert werden, um Inkonsistenzen zu vermeiden
▶ Änderungen können nicht direkt auf die unterste Ebene (zum
Original) durchgereicht werden!

BTS - Sasshofer 28
Cache-Schreibstrategien

▶ Write-Through: Änderungen werden sofort an tiefere


Speicherebenen weitergegeben
▶ Vorteil: Konsistenz ist gesichert
▶ Nachteil: Geringere Geschwindigkeit
Bild: Ein Prozess möchte eine Schreibanweisung abarbeiten. Er schreibt (1) die Daten in den Cache und
übergibt dem Controller die Schreibanweisung. Der Controller weist (2) das Schreiben der Daten auf dem
Datenspeicher an. Wurden die Daten erfolgreich geschrieben, meldet (3) der Controller das erfolgreiche
Schreiben der Daten an den Prozess

▶ Write-Back: Änderungen werden beim Verdrängen der


Seite aus dem Cache weitergegeben
▶ Vorteil: Höhere Geschwindigkeit
▶ Nachteil: Änderungen sind beim Systemausfall
verloren
Für jede Seite im Cache wird ein Dirty Bit im Cache gespeichert, das angibt, ob die Seite geändert wurde

Bild: Ein Prozess möchte eine Schreibanweisung abarbeiten. Er schreibt (1) die Daten in den Cache und
übergibt dem Controller die Schreibanweisung. Der Controller meldet (2) sofort das erfolgreiche Schreiben der
Daten an den Prozess. Das Schreiben (3) der Daten auf dem Datenspeicher erfolgt asynchron zur
Schreibanweisung im Prozess

BTS - Sasshofer 29
Register, Cache und Hauptspeicher (1/4)
▶ Register enthalten die Daten, auf die die CPU sofort zugreifen kann
▶ Die Register sind genauso schnell getaktet wie die CPU selbst

▶ Datenregister (= Akkumulatoren) speichern


Operanden für die ALU und deren Resultate
▶ z.B. EAX, ECX, EDX, EBX ⇒ Foliensatz 7
▶ Adressregister für Speicheradressen von
Operanden und Befehlen
▶ z.B. Basisadressregister (=
Segmentregister) und Indexregister (für
den Offset) ⇒ Foliensatz 5
▶ Befehlszähler (= Program Counter) (= Instruction
Pointer) enthält die Speicheradresse des nächsten
Befehls
▶ Befehlsregister (= Instruction Register) speichert
den aktuellen Befehl
▶ Stapelregister (= Stack Pointer) enthält die
Speicheradresse am Ende des Stacks ⇒
Foliensatz 7
BTS - Sasshofer 30
Register, Cache und Hauptspeicher (2/4)

▶ Cache (Pufferspeicher) enthält Kopien von Teilen des


Arbeitsspeichers um den Zugriff auf diese Daten zu beschleunigen

▶ First Level Cache (L1-Cache)


▶ Ist in die CPU integriert
▶ Second Level Cache (L2-Cache)
▶ Ist langsamer und größer
▶ Ursprünglich außerhalb der CPU

Das Bild zeigt eine Intel Mobile Pentium II „Tongae“ 233 MHz CPU mit externem 512 kB L2-Cache.
Der L2-Cache läuft mit halber Taktfrequenz

BTS - Sasshofer 31
Register, Cache und Hauptspeicher (3/4)

▶ Seit 1999/2000 integrieren die CPU-Hersteller zunehmend den


L2-Cache in die CPUs
▶ Das führte zur Etablierung das Third Level Cache (L3-Cache) als
CPU-externen Cache
▶ Bei modernen CPUs (z.B. Intel Core-i-Serie und AMD Phenom II) ist
auch der L3-Cache in die CPU integriert
▶ Bei Multicore-CPUs mit integriertem L3-Cache teilen sich die Kerne
den L3-Cache, während jeder Kern einen eigenen L1-Cache und
L2-Cache hat

▶ Einige
Prozessor-Architekturen
haben einen L4-Cache
▶ Intel Itanium 2 (2003):
64 MB
▶ Einige Intel Haswell
CPUs (2013): 128 MB

BTS - Sasshofer 32
Register, Cache und Hauptspeicher (4/4)

▶ Typische Kapazitäten der Cache-Ebenen:


▶ L1-Cache: 4 kB bis 256 kB
▶ L2-Cache: 256 kB bis 4 MB
▶ L3-Cache: 1 MB bis 16 MB

▶ Hauptspeicher, auch Arbeitsspeicher oder RAM (Random Access


Memory = Speicher mit wahlfreiem Zugriff) genannt
▶ Kapazität: Wenige hundert MB bis mehrere GB
▶ Alle Anfragen der CPU, die nicht vom Cache beantwortet werden
können, werden an den Hauptspeicher weitergeleitet

RAM und ROM


Im Gegensatz zum flüchtigen Hauptspeicher RAM ist ROM (Read Only
Memory) ein nicht-flüchtiger Lesespeicher
BTS - Sasshofer 33
Grundlagen zum Speicher und Speicherverwaltung

Wiederholung
▶ Bislang haben wir bzgl. Speicher geklärt:
▶ Er nimmt Daten und die auszuführenden Programme auf
▶ Er bildet eine Hierarchie (⇒ Speicherpyramide)
▶ Grund: Preis/Leistungsverhältnis
▶ Je schneller ein Speicher ist, desto teurer und knapper ist er
▶ Beim ersten Zugriff auf ein Datenelement, wird eine Kopie erzeugt,
die entlang der Speicherhierarchie nach oben wandert
▶ Da die obersten Speicherebenen praktisch immer voll belegt sind,
müssen Daten verdrängt/ersetzt werden
▶ Änderungen müssen durchgereicht (zurückgeschrieben) werden

Es ist zu klären:
▶ Speicherverwaltung ⇒ Foliensatz 5
▶ Speicheradressierung ⇒ Foliensatz 5

BTS - Sasshofer 34
BTS 04 - Massenspeicher

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Massenspeicher

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

▶ Am Ende dieses Foliensatzes kennen/verstehen Sie. . .


▶ den Aufbau, die Arbeitsweise und die Eckdaten von Festplatten
▶ den Aufbau, die Arbeitsweise und die Eckdaten von Solid State
Drives
▶ die Arbeitsweise und die am häufigsten verwendeten Varianten von
Redundant Array of Independent Disks (RAID)

BTS - Sasshofer 3
Festplatten

▶ Festplatten sind ca. Faktor 100 preisgünstiger pro Bit als


Hauptspeicher und bieten ca. Faktor 100 mehr Kapazität
▶ Nachteil: Zugriffe auf Festplatten sind um ca. Faktor 1000
langsamer
▶ Grund für die geringere Zugriffsgeschwindigkeit:
▶ Festplatten sind mechanische Geräte
▶ Sie enthalten eine oder mehrere Scheiben, die mit 4200, 5400, 7200,
10800 oder 15000 Umdrehungen pro Minute rotieren
▶ Für jede Seite jeder Platte existiert ein Schwungarm mit einem
Schreib-/Lesekopf
▶ Der Schreib-/Lesekopf magnetisiert Bereiche der
Scheibenoberfläche und schreibt bzw. liest so die Daten
▶ Zwischen Platte und Kopf ist ein Luftpolster von ca. 20 Nanometern
▶ Auch Festplatten haben einen Cache (üblicherweise ≤ 32 MB)
Dieser puffert Schreib- und Lesezugriffe

BTS - Sasshofer 4
Logischer Aufbau von Festplatten (1/2)

▶ Die Oberflächen der Scheiben werden in kreisförmigen Spuren


(Tracks) von den Köpfen magnetisiert
▶ Alle Spuren auf allen Platten bei einer Position des
Schwungarms bilden einen Zylinder (Cylinder )
▶ Die Spuren sind in logische Einheiten (Kreissegmente)
unterteilt, die Blöcke oder Sektoren heißen
▶ Typischerweise enthält ein Block 512 Bytes Nutzdaten
▶ Sektoren sind die kleinsten adressierbaren Einheiten auf
Festplatten
▶ Müssen Daten geändert werden, muss der ganze Sektor
gelesen und neu geschrieben werden
▶ Heute werden auf Softwareseite Cluster angesprochen
▶ Cluster sind Verbünde von Sektoren mit fester Größe, z.B. 4
oder 8 kB
▶ Bei modernen Betriebssystemen sind Cluster die kleinste
Zuordnungseinheit

BTS - Sasshofer 5
Logischer Aufbau von Festplatten (2/2)

BTS - Sasshofer 6
Adressierung der Daten auf Festplatten (1/4)

▶ Festplatten ≤ 8 GB verwenden Cylinder-Head-Sector-Adressierung


▶ CHS unterliegt mehreren Einschränkungen:
▶ Die Schnittstelle Parallel ATA verwendet 28 Bits für
CHS-Adressierung und davon. . .
▶ 16 Bits für die Zylinder (maximal 65.536)
▶ 4 Bits für die Köpfe (maximal 16)
▶ 8 Bits für die Sektoren/Spur (maximal 255, da ab 1 gezählt wird)
▶ Das BIOS verwendet 24 Bits für CHS-Adressierung und davon. . .
▶ 10 Bits für die Zylinder (maximal 1.024)
▶ 8 Bits für die Köpfe (maximal 256)
▶ 6 Bits für die Sektoren/Spur (maximal 63, da ab 1 gezählt wird)
▶ Bei den Grenzen ist der jeweils niedrigere Wert entscheidend
▶ Darum können alte BIOS-Versionen maximal 504 MB adressieren

▶ 1.024 Zylinder * 16 Köpfe * 63 Sektoren/Spur * 512 Bytes/Sektor = 528.482.304


Bytes
▶ 528.482.304 Bytes / 1024 / 1024 = 504 MB

BTS - Sasshofer 7
Adressierung der Daten auf Festplatten (2/4)

▶ 1.024 Zylinder * 16 Köpfe * 63


Sektoren/Spur * 512 Bytes/Sektor =
528.482.304 Bytes
▶ 528.482.304 Bytes / 1024 / 1024 = 504
MB

▶ Problem: Keine 2,5” oder 3,5” Festplatte


hat ≥ 16 Köpfe
▶ Lösung: Logische Köpfe
▶ Festplatten verwenden üblicherweise
16 logische Köpfe
⇒ Erweitertes CHS (Extended CHS)

BTS - Sasshofer 8
Adressierung der Daten auf Festplatten (3/4)

▶ Spätere BIOS-Versionen verwendeten


Erweitertes CHS (Extended CHS)
▶ Erhöht via Multiplikation die Anzahl der
Köpfe auf bis zu 255 und verringert die
Anzahl der Zylinder um den gleichen
Faktor
▶ Dadurch sind Kapazitäten bis 7,844 GB
möglich

▶ 1.024 Zylinder * 255 Köpfe * 63


Sektoren/Spur * 512 Bytes/Sektor =
8.422.686.720 Bytes
▶ 8.422.686.720 Bytes / 1.024 / 1.024 /
1.024 = 7,844 GB
Bessere Erklärung ⇒ siehe nächste Folie

BTS - Sasshofer 9
Erweitertes CHS – Bessere Erklärung (1/2)

▶ The IDE/ATA standard allows more cylinders than the BIOS does,
and the BIOS allows more heads than IDE/ATA does
▶ Remember: These are logical disk parameters, not physical ones
▶ The BIOS takes the logical geometry that the hard disk specifies
according to the IDE/ATA standard, and translates it into an
equivalent geometry that will „fit“ into the maximums allowed by
the BIOS
▶ This is done by dividing the number of logical cylinders by an
integer, and then multiplying the number of logical heads by the
same number

BTS - Sasshofer 10
Erweitertes CHS – Bessere Erklärung (2/2)

▶ Let’s take the case of a 3.1 GB Western Digital Caviar hard drive, AC33100
▶ This drive actually has a capacity of 2.95 binary GB, and logical geometry of 6,136
cylinders, 16 heads and 63 sectors. This is well within the bounds of the IDE/ATA
limitations, but exceeds the BIOS limit of 1,024 cylinders
▶ The BIOS picks a translation factor such that dividing the logical number of
cylinders by this number will produce a number of cylinders below 1,024
▶ Usually one of 2, 4, 8, or 16 are selected; in this case the optimal number is 8
▶ BIOS divides the number of cylinders by 8 and multiplies the number of heads by 8
▶ This results in a translated geometry of 767 cylinders, 128 heads and 63 sectors.
The capacity is of course unchanged, and the new geometry fits quite nicely into
the BIOS limits

BTS - Sasshofer 11
Adressierung der Daten auf Festplatten (4/4)

▶ Festplatten > 7,844 GB verwenden


logische Blockadressierung Logical Block
Addressing (LBA)
▶ Alle Sektoren werden von 0 beginnend
durchnummeriert
▶ Aus Kompatibilitätsgründen können bei
allen Festplatten > 7,844 GB die ersten
7,844 GB via CHS adressiert werden

BTS - Sasshofer 12
Logical Block Addressing (LBA)

▶ Bei CHS-Adressierung sind alle Spuren (Tracks) in gleich viele


Sektoren unterteilt
▶ Jeder Sektor speichert 512 Bytes Nutzdaten
▶ Nachteil: Es wird Speicherkapazität verschwendet, weil die
Datendichte nach außen hin immer weiter abnimmt
▶ Bei LBA existiert dieser Nachteil nicht

BTS - Sasshofer 13
Zugriffszeit bei Festplatten

▶ Die Zugriffszeit ist ein wichtiges Kriterium für die Geschwindigkeit


▶ 2 Faktoren sind für die Zugriffszeit einer Festplatte verantwortlich
▶ Suchzeit (Average Seek Time)
▶ Die Zeit, die der Schwungarm braucht, um eine Spur zu erreichen
▶ Liegt bei modernen Festplatten zwischen 5 und 15 ms
▶ Zugriffsverzögerung durch Umdrehung (Average Rotational Latency
Time)
▶ Verzögerung durch die Drehgeschwindigkeit bis der
Schreib-/Lesekopf den gewünschten Block erreicht
▶ Hängt ausschließlich von der Drehgeschwindigkeit der Scheiben ab
▶ Liegt bei modernen Festplatten zwischen 2 und 7,1 ms
30.000
𝑍𝑢𝑔𝑟𝑖𝑓𝑓𝑠𝑣𝑒𝑟𝑧𝑜𝑒𝑔𝑒𝑟𝑢𝑛𝑔[𝑚𝑠] = 𝐷𝑟𝑒ℎ𝑔𝑒𝑠𝑐ℎ𝑤𝑖𝑛𝑑𝑖𝑔𝑘𝑒𝑖𝑡[𝑈/𝑚𝑖𝑛]

BTS - Sasshofer 14
Solid State Drives (SSD)

▶ Werden manchmal fälschlicherweise Solid State Disks genannt

▶ Enthalten keine beweglichen Teile


▶ Vorteile:
▶ Kurze Zugriffszeit
▶ Geringer Energieverbrauch
▶ Keine Geräuschentwicklung
▶ Mechanische Robustheit
▶ Geringes Gewicht
▶ Die Position der Daten ist irrelevant ⇒
Defragmentieren ist sinnlos

▶ Nachteile:
▶ Höherer Preis im Vergleich zu Festplatten gleicher Kapazität
▶ Sicheres Löschen bzw. Überschreiben ist schwierig
▶ Eingeschränkte Anzahl an Schreib-/Löschzyklen

BTS - Sasshofer 15
Arbeitsweise von Flash-Speicher

▶ Daten werden als elektrische


Ladungen gespeichert
▶ Im Gegensatz zum Hauptspeicher
ist kein Strom nötig, um die Daten
im Speicher zu halten

▶ Jede Flash-Speicherzelle ist ein Transistor und hat 3 Anschlüsse


▶ Gate (deutsch: Tor ) = Steuerelektrode
▶ Drain (deutsch: Senke) = Elektrode
▶ Source (deutsch: Quelle) = Elektrode
▶ Das Floating-Gate speichert Elektronen (Daten)
▶ Ist komplett von einem Isolator umgeben
▶ Die Ladung bleibt über Jahre stabil

BTS - Sasshofer 16
Daten aus Flash-Speicherzellen lesen

▶ Ein positiv-dotierter (p) Halbleiter


trennt die beiden negativ-dotierten
(n) Elektroden Drain und Source
▶ Wie beim npn-Transistor ohne
Basisstrom leitet der
npn-Übergang nicht

▶ Ab einer bestimmten positiven Spannung (5V) am Gate (Threshold)


entsteht im p-Bereich ein n-leitender Kanal
▶ Durch diesen kann Strom zwischen Source und Drain fließen
▶ Sind Elektronen im Floating-Gate, verändert das den Threshold
▶ Es ist eine höhere positive Spannung am Gate nötig, damit Strom
zwischen Source und Drain fließen kann
▶ So wird der gespeicherte Wert der Flash-Speicherzelle ausgelesen

BTS - Sasshofer 17
Daten in Flash-Speicherzellen schreiben

▶ Flash-Speicherzellen
werden durch den
Fowler-Nordheim-
Tunneleffekt beschrieben

▶ Eine positive Spannung (5V) wird am Control-Gate angelegt


▶ Darum können Elektronen zwischen Source und Drain fließen
▶ Ist die positive Spannung am Control-Gate groß genug (6 bis 20V),
werden einige Elektronen durch den Isolator in das Floating-Gate
getunnelt (⇒ Fowler-Nordheim-Tunnel)
▶ Das Verfahren heißt auch Channel Hot Electron Injection

BTS - Sasshofer 18
Daten in Flash-Speicherzellen löschen

▶ Um eine Flash-Speicherzelle zu
löschen, wird eine negative
Spannung (-6 bis -20V) am
Control-Gate angelegt
▶ Die Elektronen werden dadurch
in umgekehrter Richtung aus
dem Floating-Gate
herausgetunnelt

▶ Die isolierende Schicht, die das Floating-Gate umgibt, leidet bei


jedem Löschvorgang
▶ Irgendwann ist die isolierende Schicht nicht mehr ausreichend, um
die Ladung im Floating-Gate zu halten
▶ Darum überlebt Flash-Speicher nur eine eingeschränkte Anzahl
Schreib-/Löschzyklen

BTS - Sasshofer 19
Arbeitsweise von Flash-Speicher

▶ Die Speicherzellen sind in Gruppen zu Blöcken und (abhängig vom


Aufbau auch in Seiten) angeordnet
▶ Ein Block enthält immer eine feste Anzahl an Seiten
▶ Schreib- und Löschoperationen können nur für komplette Seiten
oder Blöcke durchgeführt werden
▶ Darum sind Schreib- und Löschoperationen aufwendiger als
Leseoperationen
▶ Sollen Daten in einer Seite verändert werden, muss der komplette
Block gelöscht werden
▶ Dafür wird der Block in einen Pufferspeicher kopiert
▶ Im Pufferspeicher werden die Daten verändert
▶ Danach wird der Block im Flash-Speicher gelöscht
▶ Abschließend wird der veränderte Block in den Flash-Speicher
geschrieben

BTS - Sasshofer 20
Unterschiede beim Flash-Speicher

▶ Es existieren 2 Arten von Flash-Speicher:


▶ NOR-Speicher
▶ NAND-Speicher
▶ Das Schaltzeichen bezeichnet die interne Verbindung der
Speicherzellen
▶ Das beeinflusst Kapazität und Zugriffsgeschwindigkeit

BTS - Sasshofer 21
NOR-Speicher

▶ Jede Speicherzelle hat eine eigene Datenleitung


▶ Vorteil:
▶ Wahlfreier Lese- und Schreibzugriff
⇒ Bessere Zugriffszeit als NAND-Speicher
▶ Nachteil:
▶ Komplexer (⇒ kostspieliger) Aufbau
▶ Höherer Stromverbrauch als NAND-Speicher
▶ Üblicherweise geringe Kapazitäten (≤ 32 MB)

▶ Enthält keine Seiten


▶ Die Speicherzellen sind zu Blöcken zusammengefasst
▶ Typische Blockgrößen: 64, 128 oder 256 kB
▶ Bei Löschoperationen ist kein wahlfreier Zugriff möglich
▶ Es muss immer ein kompletter Block gelöscht werden
▶ Einsatzbereiche:
▶ Industrielles Umfeld
▶ Speicherung der Firmware eines Computersystems

BTS - Sasshofer 22
NAND-Speicher

▶ Die Speicherzellen sind zu Seiten zusammengefasst


▶ Typische Seitengröße: 512 bis 8.192 Bytes
▶ Jede Seite hat eine eigene Datenleitung
▶ Mehrere Seiten umfassen einen Block
▶ Typische Blockgröße: 32, 64, 128 oder 256 Seiten

▶ Vorteil:
▶ Weniger Datenleitungen ⇒ Benötigt < 50% Fläche von
NOR-Speicher
▶ Herstellung ist preisgünstiger im Vergleich zu NOR-Flash-Speicher
▶ Nachteil:
▶ Kein wahlfreier Zugriff
⇒ Schlechtere Zugriffszeit als NOR-Speicher
▶ Lese- und Schreibzugriffe sind nur für ganze Seiten möglich
▶ Löschoperationen sind nur für ganze Blöcke möglich

▶ Einsatzbereiche: USB-Sticks, SSDs, Speicherkarten

BTS - Sasshofer 23
Single/Multi/Triple/Quad-Level Cell

▶ 4 Arten von NAND-Flash-Speicher


existieren
▶ QLC-Zellen speichern 4 Bits
▶ TLC-Zellen speichern 3 Bits
▶ MLC-Zellen speichern 2 Bits
▶ SLC-Zellen speichern 1 Bit
▶ SLC-Speicher. . .
▶ ist am teuersten
▶ hat die höchste
Schreibgeschwindigkeit
▶ hat die höchste Lebensdauer
(überlebt die meisten
Schreib-/Löschzyklen)

▶ SLC-Speicher überlebt ca. 100.000 bis 300.000 Schreib-/Löschzyklen


▶ MLC-Speicher überlebt ca. 10.000 Schreib-/Löschzyklen
▶ TLC-Speicher und QLC-Speicher überleben ca. 1.000 Schreib-/Löschzyklen
▶ Es existieren auch Speicherzellen, die mehrere Millionen Schreib-/Löschzyklen
verkraften
BTS - Sasshofer 24
Wear Leveling

▶ Wear
Leveling-Algorithmen
verteilen
Schreibzugriffe
gleichmäßig
▶ Dateisysteme, die speziell für Flash-Speicher ausgelegt sind, und
darum Schreibzugriffe minimieren, sind u.a. JFFS, JFFS2, YAFFS
und LogFS
▶ JFFS enthält einen eigenen Wear Leveling-Algorithmus *Das ist bei
eingebetteten Systemen häufig nötig, wo Flash-Speicher direkt
angeschlossen wird

BTS - Sasshofer 25
Zugriffszeiten bei Festplatten
▶ Die Geschwindigkeit von Prozessoren, Cache und Hauptspeicher
wächst schneller als die Zugriffsgeschwindigkeit der Festplatten:

▶ Die Zugriffszeit von SSDs ist ≤ 1 µs ⇒ ≈ 100x besser als bei HDDs
▶ Dennoch vergrößert sich der Abstand in Zukunft weiter wegen der
Leistungsgrenzen der Schnittstellen und Mehrkernprozessoren
▶ Weitere Herausforderung
▶ Laufwerke können ausfallen ⇒ Gefahr des Datenverlustes
▶ Zugriffszeit und Datensicherheit bei HDDs/SSDs erhöhen ⇒ RAID
BTS - Sasshofer 26
Redundant Array of Independent Disks (RAID)

▶ Die Geschwindigkeit der Festplatten lässt sich nicht beliebig


verbessern
▶ Festplatten bestehen aus beweglichen Teilen
▶ Physikalische und materielle Grenzen müssen akzeptiert werden
▶ Eine Möglichkeit, die gegebenen Beschränkungen im Hinblick auf
Geschwindigkeit, Kapazität und Datensicherheit zu umgehen, ist
das gleichzeitige Verwenden mehrerer Komponenten
▶ Ein RAID besteht aus mehreren Laufwerken (Festplatten oder SSDs)
▶ Diese werden vom Benutzer und den Prozessen als ein einziges
großes Laufwerk wahrgenommen
▶ Die Daten werden über die Laufwerke eines RAID-Systems verteilt
▶ Das RAID-Level spezifiziert, wie die Daten verteilt werden
▶ Die gebräuchlichsten RAID-Level sind RAID 0, RAID 1 und RAID 5
▶ RAID 2, 4, 6, 7 werden praktisch nicht (mehr) eingesetzt
▶ RAID 3 dient nur der besseren Verständlichkeit, kein praktischer
Einsatz

BTS - Sasshofer 27
RAID 0 – Striping – Beschleunigung ohne Redundanz

▶ Keine Redundanz
▶ Steigert nur die Datentransferrate
▶ Aufteilung der Laufwerke in Blöcke gleicher Größe
▶ Sind die Ein-/Ausgabeaufträge groß genug (> 4 oder 8 kB), können
die Zugriffe parallel auf mehreren oder allen Laufwerken
durchgeführt werden

▶ Fällt ein Laufwerk aus, können die Daten nicht mehr


vollständig rekonstruiert werden
▶ Nur kleinere Dateien, die vollständig auf den
verbliebenen Laufwerken gespeichert sind, können
gerettet werden
▶ RAID 0 eignet sich nur, wenn die Sicherheit der Daten
bedeutungslos ist oder eine geeignete Form der
Datensicherung vorhanden ist

BTS - Sasshofer 28
RAID 1 – Mirroring – Spiegelung

▶ Mindestens 2 Laufwerke gleicher Kapazität enthalten identische


Daten
▶ Sind die Laufwerke unterschiedlich groß, bietet ein Verbund mit
RAID 1 höchstens die Kapazität des kleinsten Laufwerks
▶ Ausfall eines Laufwerks führt nicht zu Datenverlust
▶ Grund: Die übrigen Laufwerke halten die identischen Daten vor
▶ Zum Totalverlust kommt es nur beim Ausfall aller Laufwerke

▶ Jede Datenänderung wird auf allen Laufwerken


geschrieben
▶ Kein Ersatz für Datensicherung
▶ Fehlerhafte Dateioperationen oder Virenbefall finden
auf allen Laufwerken statt
▶ Die Lesegeschwindigkeit kann durch intelligente
Verteilung der Zugriffe auf die angeschlossenen
Laufwerke gesteigert werden

BTS - Sasshofer 29
RAID 3 – Byte-Level Striping mit Paritätsinformationen

▶ Paritätsinformationen sind auf einem Paritätslaufwerk gespeichert

▶ Jede
Schreiboperation auf
das RAID führt zu
Schreiboperationen
auf das
Paritätslaufwerk
⇒ Flaschenhals
▶ Wurde durch RAID 5
ersetzt
▶ Benutzte Rechenoperation für Parität: XOR (exklusives Oder)
▶ Durch XOR-Verknüpfung aller verbliebenen Blöcke lässt sich der
ausgefallene wieder herstellen
▶ “Degraded”-RAID mit schlechter Performance, bis ausgefallenes
Laufwerk ersetzt wird

BTS - Sasshofer 30
RAID 5 – Block-Level Striping mit verteilten
Paritätsinformationen

▶ Nutzdaten und Par-


itätsinformationen
werden auf alle
Laufwerke verteilt
▶ Vorteile:
▶ Hoher
Datendurchsatz
▶ Hohe
Datensicherheit
▶ Kein Flaschenhals

BTS - Sasshofer 31
Übersicht über die RAID-Level

▶ X ist die Leistung eines einzelnen Laufwerks beim Lesen bzw.


Schreiben
▶ Die maximale theoretisch mögliche Leistung wird häufig vom
Controller bzw. der Rechenleistung des Hauptprozessors
eingeschränkt

Anmerkung: Sind die Laufwerke in einem RAID 1 unterschiedlich groß,


entspricht die Nettokapazität des RAID 1 der Kapazität seines kleinsten
Laufwerks
BTS - Sasshofer 32
RAID-Kombinationen

▶ Meist wird RAID 0, 1 oder 5


verwendet
▶ Zusätzlich zu den bekannten
RAID-Standards (Leveln)
existieren verschiedene
RAID-Kombinationen
▶ Mindestens 2 RAIDs
werden zu einem
größeren RAID
zusammengefasst
Beispiele

BTS - Sasshofer 33
Hardware-/Host-/Software-RAID (1/2)

▶ Hardware-RAID
▶ Ein RAID-Controller mit Prozessor berechnet die
Paritätsinformationen und überwacht den Zustand
▶ Vorteile:
▶ Betriebssystemunabhängigkeit
▶ Keine zusätzliche CPU-Belastungh
▶ Nachteil:
▶ Hoher Preis (ca. € 200)
▶ Host-RAID
▶ Entweder ein preiswerter RAID-Controller oder der
Chipsatz erbringen die RAID-Funktionalität
▶ Unterstützt meist nur RAID 0 und RAID 1
▶ Vorteile:
▶ Betriebssystemunabhängigkeit
▶ Geringer Preis (ca. € 50)
▶ Nachteile:
▶ Zusätzliche CPU-Belastung

BTS - Sasshofer 34
Hardware-/Host-/Software-RAID (2/2)

▶ Software-RAID
▶ Linux, Windows und MacOS ermöglichen das Zusammenschließen
von Laufwerken zu einem RAID auch ohne RAID-Controller
▶ Vorteil:
▶ Keine Kosten für zusätzliche Hardware
▶ Nachteile:
▶ Betriebssystemabhängigkeit
▶ Zusätzliche CPU-Belastung

BTS - Sasshofer 35
Software-RAID unter Linux

▶ Beispiel: RAID 1 (md0) mit den Partitionen sda1 und sdb1 erstellen:
mdadm --create /dev/md0 --auto md --level=1
--raid-devices=2 /dev/sda1 /dev/sdb1

▶ Informationen über alle Software-RAIDs im System erhalten:


cat /proc/mdstat

▶ Informationen über ein bestimmtes Software-RAID (md0) erhalten:


mdadm --detail /dev/md0

▶ Partition sdb1 entfernen und Partition sdc1 zum RAID hinzufügen:


mdadm /dev/md0 --remove /dev/sdb1
mdadm /dev/md0 --add /dev/sdc1

BTS - Sasshofer 36
BTS 05 - Speicherverwaltung

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Speicherverwaltung

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

▶ Am Ende dieses Foliensatzes kennen/verstehen Sie. . .


▶ grundlegende Konzepte der Speicherverwaltung
▶ Statische Partitionierung
▶ Dynamische Partitionierung
▶ Buddy-Speicherverwaltung
▶ wie Betriebssysteme auf den Speicher zugreifen (ihn adressieren!)
▶ Real Mode
▶ Protected Mode
▶ Komponenten und Konzepte um virtuellen Speicher zu realisieren
▶ Memory Management Unit (MMU)
▶ Seitenorientierter Speicher (Paging)
▶ die möglichen Ergebnisse bei Anfragen an einen Speicher (Hit und
Miss)
▶ die Arbeitsweise und Eckdaten wichtiger Ersetzungsstrategien

BTS - Sasshofer 3
Speicherverwaltung

▶ Eine wesentliche Funktion von Betriebssystemen


▶ Weist Programmen auf deren Anforderung hin Teile des Speichers
zu

▶ Gibt auch Teile des Speichers frei, die Diese Konzepte sind schon etwas älter

Programmen zugewiesen sind, wenn


diese nicht benötigt werden
▶ 3 Konzepte zur Speicherverwaltung:
1. Statische Partitionierung
2. Dynamische Partitionierung
3. Buddy-Speicherverwaltung

BTS - Sasshofer 4
Konzept 1: Statische Partitionierung

▶ Der Hauptspeicher wird in Partitionen gleicher oder


unterschiedlicher Größe unterteilt
▶ Nachteile:
▶ Es kommt zwangsläufig zu interner Fragmentierung ⇒ ineffizient
▶ Das Problem wird durch Partitionen unterschiedlicher Größe
abgemildert, aber nicht gelöst
▶ Anzahl der Partitionen limitiert die Anzahl möglicher Prozesse
▶ Herausforderung: Ein Prozess benötigt mehr Speicher, als eine
Partition groß ist
▶ Dann muss der Prozess so implementiert sein, dass nur ein Teil des
Programmcodes im Hauptspeicher liegt
▶ Beim Nachladen von Programmcode (Modulen) kommt es zum
Overlay ⇒ andere Module und Daten werden eventuell
überschrieben

IBM OS/360 MFT in den 1960er Jahren nutzte statische Partitionierung

BTS - Sasshofer 5
Statische Partitionierung (1/2)

▶ Werden Partitionen gleicher Größe verwendet, ist es egal,


welche freie Partition ein Prozess zugewiesen wird
▶ Sind alle Partitionen belegt, muss ein Prozess aus dem
Hauptspeicher verdrängt werden Die Entscheidung, welcher
Prozess verdrängt wird, hängt vom verwendeten
Scheduling-Verfahren (⇒ Foliensatz 8) ab

BTS - Sasshofer 6
Statische Partitionierung (2/2)

▶ Prozesse sollen eine möglichst passgenaue Partition


erhalten
▶ Ziel: Wenig interne Fragmentierung
▶ Werden Partitionen unterschiedlicher Größe
verwendet, gibt es 2 Möglichkeiten, um Prozessen
Partitionen zuzuweisen:
1. Eine eigene Prozess-Warteschlange für jede Partition
* Nachteil: Bestimmte Partitionen werden eventuell nie
genutzt
2. Eine einzelne Warteschlange für alle Partitionen * Die
Zuweisung der Partitionen an Prozesse ist flexibler
möglich * Auf veränderte Anforderungen der Prozesse
kann rasch reagiert werden

BTS - Sasshofer 7
Konzept 2: Dynamische Partitionierung
▶ Jeder Prozess erhält im Hauptspeicher eine zusammenhängende
Partition mit exakt der notwendigen Größe

▶ Es kommt zwangsläufig zu externer Fragmentierung ⇒ ineffizient


▶ Mögliche Lösung: Defragmentierung
▶ Voraussetzung: Verschiebbarkeit von Speicherblöcken
▶ Verweise in Prozessen dürfen durch ein Verschieben von Partitionen
nicht ungültig werden

IBM OS/360 MVT nutzte in den 1960er Jahren dynamische Partitionierung


BTS - Sasshofer 8
Realisierungskonzepte für dynamische Partitionierung

▶ First Fit
▶ Sucht ab dem Anfang des Adressraums einen
passenden freien Block
▶ Schnelles Verfahren
▶ Next Fit
▶ Sucht ab der letzten Zuweisung einen passenden
freien Block
▶ Zerstückelt schnell den großen Bereich freien
Speichers am Ende des Adressraums
▶ Best Fit
▶ Sucht den freien Block, der am besten passt
▶ Produziert viele Minifragmente und ist langsam

BTS - Sasshofer 9
Konzept 3: Buddy-Speicherverwaltung von Donald Knuth
▶ Zu Beginn gibt es nur einen Block, der den gesamten Speicher
abdeckt
▶ Fordert ein Prozess einen Speicher an, wird zur nächsthöheren
Zweierpotenz aufgerundet und ein entsprechender, freier Block
gesucht
▶ Existiert kein Block dieser Größe, wird nach einem Block doppelter
Größe gesucht und dieser in 2 Hälften (sogenannte Buddies)
unterteilt
▶ Der erste Block wird dann dem Prozess zugewiesen
▶ Existiert auch kein Block doppelter Größe, wird ein Block vierfacher
Größe gesucht, usw. . .
▶ Wird Speicher freigegeben, wird geprüft, ob 2 Hälften gleicher
Größe sich wieder zu einem größeren Block zusammenfassen
lassen
▶ Es werden nur zuvor vorgenommene Unterteilungen rückgängig
gemacht!
Buddy-Speicherverwaltung in der Praxis
Der Linux-Kernel verwendet eine Variante der Buddy-Speicherverwaltung für die Zuweisung der
Seiten
BTS - Sasshofer 10
Beispiel zum Buddy-Verfahren

▶ Nachteil: Interner und externer Verschnitt (Fragmentierung)

BTS - Sasshofer 11
Informationen zur Fragmentierung des Speichers
▶ Die DMA-Zeile zeigt die ersten 16 MB im System
▶ Die Adressbusbreite des Intel 80286 ist 224 => 16 MB max.
adressierbarer Speicher
▶ Die DMA32-Zeile zeigt den Speicher > 16 MB und < 4 GB im System
▶ Die Adressbusbreite beim Intel 80386, 80486, Pentium I/II/III/IV,
… ist 232 => 4 GB max. adressierbarer Speicher
▶ Die Normal-Zeile zeigt den Speicher > 4 GB im System
▶ Moderne Systeme haben meist eine Adressbusbreite von 36, 44
oder 48 Bits

Spalte 1 ⇒ Anzahl freier Blöcke („Buddies“) der Größe 20 × PAGESIZE ⇒ 4 kB


Spalte 2 ⇒ Anzahl freier Blöcke („Buddies“) der Größe 21 × PAGESIZE ⇒ 8 kB
Spalte 3 ⇒ Anzahl freier Blöcke („Buddies“) der Größe 22 × PAGESIZE ⇒ 16 kB

Spalte 11 ⇒ Anz. frei. Blöcke („Buddies“) der Größe 210 × PAGESIZE ⇒ 4096 kB = 4 MB
PAGESIZE = 4096 Bytes = 4 kB
Die Seitengröße eines Linux-Systems gibt folgendes Kommando aus: $ getconf PAGESIZE

BTS - Sasshofer 12
Speicheradressierung

! ! ! Frage ! ! !
Wie greifen Prozesse auf den Speicher zu?
▶ Auf 16 Bit-Architekturen sind 216 Speicheradressen und damit bis
zu
65.536 Byte, also 64 kB adressierbar
▶ Auf 32 Bit-Architekturen sind 232 Speicheradressen und damit bis
zu
4.294.967.296 Byte, also 4 GB adressierbar
▶ Auf 64 Bit-Architekturen sind 264 Speicheradressen und damit bis
zu
18.446.744.073.709.551.616 Byte, also 16 Exabyte adressierbar

BTS - Sasshofer 13
Idee: Direkter Zugriff auf den Speicher

▶ Naheliegende Idee: Direkter Speicherzugriff durch die Prozesse


⇒ Real Mode

BTS - Sasshofer 14
Real Mode (Real Address Mode)
▶ Betriebsart x86-kompatibler Prozessoren
▶ Kein Zugriffsschutz
▶ Jeder Prozess kann auf den gesamten adressierbaren Speicher
zugreifen
▶ Inakzeptabel für Multitasking-Betriebssysteme
▶ Maximal 1 MB Hauptspeicher adressierbar
▶ Maximaler Speicherausbau eines Intel 8086
▶ Grund: Der Adressbus des 8088/8086 verfügt nur über 20
Adressleitungen
▶ 20 Busleitungen ⇒ 20 Bits lange Speicheradressen ⇒ Die CPU kann
220 = ca. 1 MB Speicher adressieren
▶ Nur die ersten 640 kB (unterer Speicher) stehen für das
Betriebssystem (MS-DOS) und die Programme zur Verfügung
▶ Die restlichen 384 kB (oberer Speicher) enthalten das BIOS der
Grafikkarte, das Speicherfenster zum Grafikkartenspeicher und das
BIOS ROM des Mainboards
▶ Die Bezeichnung „Real Mode“ wurde mit dem Intel 80286
eingeführt
▶ Im Real Mode greift die CPU wie ein 8086 auf den Hauptspeicher zu
BTS - Sasshofer ▶ Jede x86-kompatible CPU startet im Real Mode 15
Real Mode – Adressierung

▶ Der Hauptspeicher ist in 65.536 Segmente unterteilt


▶ Die Speicheradressen sind 16 Bits lang
▶ Jedes Segment ist 64 Bytes (= 216 = 65.536 Bits) groß
▶ Adressierung des Hauptspeichers via Segment und Offset
▶ Zwei 16 Bits lange Werte, die durch einen Doppelpunkt getrennt
sind Segment:Offset
▶ Segment und Offset werden in den zwei 16-Bits großen Registern
Segmentregister (= Basisadressregister) und Offsetregister (=
Indexregister) gespeichert

▶ Das Segmentregister speichert die


Nummer des Segments
▶ Das Offsetregister zeigt auf eine
Adresse zwischen 0 und 216
(=65.536) relativ zur Adresse im
Segmentregister

BTS - Sasshofer 16
Real Mode – Segmentregister seit 8086

▶ Beim 8086 existieren 4


Segmentregister
▶ CS (Code Segment)
▶ Enthält den ausführbaren
Code des Programms

▶ DS (Data Segment)
▶ Enthält die globalen Daten des aktuellen Programms
▶ SS (Stack Segment)
▶ Enthält den Stack für die lokalen Daten des Programms
▶ ES (Extra Segment)
▶ Segment für weitere Daten
▶ Ab dem Intel 80386 existieren 2 weitere Segmentregister (FS und
GS) für zusätzliche Extra-Segmente
▶ Die Segmentbereiche realisieren einen einfachen Speicherschutz
BTS - Sasshofer 17
Real Mode bei MS-DOS

▶ Real Mode ist der Standardmodus für MS-DOS


und dazu kompatible Betriebssysteme (u.a.
PC-DOS, DR-DOS und FreeDOS)

BTS - Sasshofer 18
Real Mode bei Microsoft Windows

▶ Neuere Betriebssysteme verwenden ihn nur noch während der


Startphase und schalten dann in den Protected Mode um

▶ Windows 2.0 läuft nur im Real Mode


▶ Windows 2.1 und 3.0 können entweder im Real Mode oder im
Protected Mode laufen
▶ Windows 3.1 und spätere Versionen laufen nur im Protected Mode

BTS - Sasshofer 19
Anforderungen an die Speicherverwaltung (1/2)

▶ Relokation
▶ Werden Prozesse aus dem Hauptspeicher verdrängt, ist nicht
bekannt, an welcher Stelle sie später wieder in den Hauptspeicher
geladen werden
▶ Erkenntnis: Prozesse dürfen keine Referenzen auf physische
Speicheradressen enthalten
▶ Schutz
▶ Speicherbereiche müssen geschützt werden vor unbeabsichtigtem
oder unzulässigem Zugriff durch anderen Prozesse
▶ Erkenntnis: Zugriffe müssen (durch die CPU) überprüft werden
▶ Gemeinsame Nutzung
▶ Trotz Speicherschutz muss eine Kooperation der Prozesse mit
gemeinsamem Speicher (Shared Memory) möglich sein ⇒
Foliensatz 10

BTS - Sasshofer 20
Anforderungen an die Speicherverwaltung (2/2)

▶ Vergrößerte Kapazität
▶ 1 MB ist nicht genug
▶ Es soll mehr Speicher verwendet werden können, als physisch
existiert
▶ Erkenntnis: Ist der Hauptspeicher voll, können Daten ausgelagert
werden
▶ Lösung: Protected mode und virtueller Speicher

BTS - Sasshofer 21
Protected Mode (Schutzmodus)

▶ Betriebsart x86-kompatibler Prozessoren


▶ Eingeführt mit dem Intel 80286
▶ Erhöht die Menge des adressierbaren Speichers
▶ 16-Bit Protected Mode beim 80286 ⇒ 16 MB Hauptspeicher
▶ 32-Bit Protected Mode beim 80386 ⇒ 4 GB Hauptspeicher
▶ Bei späteren Prozessoren hängt die Menge des adressierbaren
Speichers von der Anzahl der Busleitungen im Adressbus ab
▶ Realisiert virtuellen Speicher
▶ Prozesse verwenden keine physischen Hauptspeicheradressen
▶ Das würde bei Multitasking-Systemen zu Problemen führen
▶ Stattdessen besitzt jeder Prozess einen eigenen Adressraum
▶ Es handelt sich dabei um virtuellen Speicher
▶ Er ist unabhängig von der verwendeten Speichertechnologie und
den gegebenen Ausbaumöglichkeiten
▶ Er besteht aus logischen Speicheradressen, die von der Adresse 0
aufwärts durchnummeriert sind

BTS - Sasshofer 22
Virtueller Speicher (1/2)

▶ Adressräume können nach Bedarf erzeugt oder gelöscht werden


und sie sind geschützt
▶ Kein Prozess kann ohne vorherige Vereinbarung auf den Adressraum
eines anderen Prozesses zugreifen
▶ Mapping = Virtuellen Speicher auf physischen Speicher abbilden

▶ Dank virtuellem Speicher wird der Hauptspeicher besser ausgenutzt


▶ Prozesse müssen nicht am Stück im Hauptspeicher liegen
▶ Darum ist die Fragmentierung des Hauptspeichers kein Problem

BTS - Sasshofer 23
Virtueller Speicher (2/2)

▶ Durch virtuellen Speicher kann


mehr Speicher angesprochen und
verwendet werden, als physisch im
System vorhanden ist
▶ Auslagern (Swapping) geschieht
für Benutzer und Prozesse
transparent Virtueller Speicher ist
anschaulich erklärt bei. . .

▶ Im Protected Mode unterstützt die CPU 2 Methoden zur


Speicherverwaltung
▶ Segmentorientierter Speicher (Segmentierung)
▶ Paging existiert ab dem 80386
▶ Beide Verfahren sind Implementierungsvarianten des virtuellen
Speichers

BTS - Sasshofer 24
Paging: Seitenorientierter Speicher
▶ Virtuelle Seiten der Prozesse werden auf physische Seiten im
Hauptspeicher abgebildet
▶ Alle Seiten haben die gleiche Länge
▶ Die Seitenlänge ist üblicherweise 4 kb (bei der Alpha-Architektur: 8
kB)

▶ Vorteile:
▶ Externe Fragmentierung is irrelevant
▶ Interne Fragmentierung kann nur in der letzten
Seite jedes Prozesses auftreten
▶ Das Betriebssystemen verwaltet für jeden Prozess eine
Seitentabelle
▶ In dieser steht, wo sich die einzelnen Seiten des Prozesses befinden
▶ Prozesse arbeiten nur mit virtuellen Speicheradressen
▶ Virtuelle Speicheradressen bestehen aus 2 Teilen
▶ Der werthöhere Teil enthält die Seitennummer
▶ Der wertniedrigere Teil enthält den Offset (Adresse innerhalb einer
Seite)
BTS - Sasshofer
▶ Die Länge der virtuellen Adressen ist architekturabhängig (hängt von 25
Zuweisung von Prozessseiten zu freien physischen Seiten

▶ Prozesse müssen nicht am Stück im Hauptspeicher liegen


⇒ Keine externe Fragmentierung

BTS - Sasshofer 26
Adressumwandlung durch die Memory Management Unit

▶ Virtuelle Speicheradressen übersetzt die CPU mit der MMU und der
Seitentabelle in physische Adressen
▶ Das Betriebssystem prüft, ob sich die physische Adresse im
Hauptspeicher, oder auf der SSD/HDD befindet

▶ Befinden sich die Daten auf


der SSD/HDD, muss das
Betriebssystem die Daten in
den Hauptspeicher einlesen
▶ Ist der Hauptspeicher voll,
muss das Betriebssystem
andere Daten aus dem
Hauptspeicher auf die
SDD/HDD verdrängen
(swappen)

BTS - Sasshofer 27
Implementierung der Seitentabelle

▶ Die Länge der Seiten hat Auswirkungen:


▶ Kurze Seiten: Weniger interner Verschnitt, aber längere
Seitentabelle
▶ Lange Seiten: Kürzere Seitentabelle, aber mehr interner Verschnitt
▶ Seitentabellen liegen im Hauptspeicher

▶ Maximale Größe der Seitentabellen bei 32 Bit-Betriebssystemen:


4 𝐺𝐵 232 𝐵𝑦𝑡𝑒𝑠 2 22
4 𝑘𝐵 × 4 𝐵𝑦𝑡𝑒𝑠 = 212 𝐵𝑦𝑡𝑒𝑠 × 2 𝐵𝑦𝑡𝑒𝑠 = 2 𝐵𝑦𝑡𝑒𝑠 = 4 𝑀 𝐵

▶ Jeder Prozess in einem Multitasking-Betriebssystem braucht eine


Seitentabelle
▶ Bei 64 Bit-Betriebssystemen können die Seitentabellen der einzelnen Prozesse deutlich größer sein
Da aber die meisten im Alltag laufenden Prozesse nicht mehrere Gigabyte Speicher benötigen, fällt der Overhead durch die
Verwaltung der Seitentabellen auf modernen Computern gering aus

BTS - Sasshofer 28
Struktur der Seitentabellen (Page Table)

▶ Jeder Eintrag in der Seitentabelle enthält u.a.:


▶ Present-Bit: Gibt an, ob die Seite im Hauptspeicher liegt
▶ Dirty-Bit (Modified-Bit): Gibt an, ob die Seite verändert wurde
▶ Reference-Bit: Gibt an, ob es einen (auch lesenden!) Zugriff auf die
Seite gab ⇒ das ist evtl. wichtig für die verwendete
Seitenersetzungsstrategie
▶ Weitere Steuerbits: Hier ist u.a. festgelegt, ob. . .
▶ Prozesse im Benutzermodus nur lesend oder auch schreibend auf die
Seite zugreifen dürfen (Read/Write-Bit)
▶ Prozesse im Benutzermodus auf die Seite zugreifen dürfen
(User/Supervisor-Bit)
▶ Änderungen sofort (Write-Through) oder erst beim verdrängen
(Write-Back) durchgeschrieben werden (Write-Through-Bit)
▶ Die Seite in den Cache geladen darf oder nicht (Cache-Disable-Bit)
▶ Physische Seitenadresse: Wird mit dem Offset der virtuellen
Adresse verknüpft

BTS - Sasshofer 29
Adressumwandlung beim Paging (einstufig)

▶ Einstufiges Paging ist auf 16 Bit-Architekturen ausreichend


▶ Auf Architekturen ≥ 32 Bit realisieren die Betriebssysteme
mehrstufiges Paging
▶ 2 Register ermöglichen der MMU den Zugriff auf die Seitenabelle
▶ Page-Table Base Register (PTBR): Adresse wo die Seitentabelle des
laufenden Prozesses anfängt
▶ Page-Table Length Register (PTLR): Länge der Seitentabelle des
laufenden Prozesses
BTS - Sasshofer 30
Adressumwandlung beim Paging (zweistufig)

BTS - Sasshofer 31
Warum mehrstufiges Paging?

▶ Wir wissen bereits…


▶ Bei 32 Bit-Betriebssystemen mit 4 kB Seitenlänge kann die
Seitentabelle jedes Prozesses 4 MB groß sein
▶ Bei 64 Bit-Betriebssystemen können die Seitentabellen wesentlich
größer sein
▶ Mehrstufiges Paging entlastet den Hauptspeicher
▶ Bei der Berechnung einer physischen Adresse durchläuft das
Betriebssystem die Teilseiten Stufe für Stufe
▶ Einzelne Teilseiten können bei Bedarf auf den Auslagerungsspeicher
verdrängt werden, um Platz im Hauptspeicher zu schaffen

BTS - Sasshofer 32
Page Fault Ausnahme (Exception) – Seitenfehler

▶ Ein Prozess versucht (1) auf eine


Seite zuzugreifen, die nicht im
physischen Hauptspeicher liegt
▶ Das Present-Bit in jedem Eintrag
der Seitentabelle gibt an, ob die
Seite im Hauptspeicher ist oder
nicht

▶ Ein Software-Interrupt (Exception) wird ausgelöst (2), um vom


Benutzermodus in den Kernelmodus zu wechseln
▶ Das Betriebssystem…
▶ lokalisiert (3) die Seite mit Hilfe des Controllers und Gerätetreibers
auf dem Auslagerungsspeicher (SSD/HDD)
▶ kopiert (4) die Seite in eine freie Hauptspeicherseite
▶ aktualisiert (5) die Seitentabelle
▶ gibt die Kontrolle an den Prozess zurück (6)
▶ Dieser führt die Anweisung, die zum Page Fault führte, erneut aus

BTS - Sasshofer 33
Access Violation Ausnahme (Exception) oder

General Protection Fault Ausnahme (Exception)

▶ Heißt auch Segmentation fault oder


Segmentation violation
▶ Ein Paging-Problem, das nichts mit
Segmentierung zu tun hat!

▶ Ein Prozess versucht auf eine virtuelle Speicheradresse zuzugreifen,


auf die er nicht zugreifen darf

▶ Ergebnis: Systemabstürze bei alten


Windows-Betriebssystemen (Blue
Screen), Linux gibt das Signal
SIGSEGV zurück
▶ Beispiel: Ein Prozess versucht in eine
Seite zu schreiben, auf die er nur
lesend zugreifen darf
BTS - Sasshofer 34
Wiederholung: Real Mode und Protected Mode

▶ Real Mode
▶ Betriebsart x86-kompatibler Prozessoren
▶ Die CPU greift wie ein Intel 8086 auf den Hauptspeicher zu
▶ Kein Zugriffsschutz
▶ Jeder Prozess kann auf den gesamten Hauptspeicher zugreifen
▶ Protected Mode (Schutzmodus)
▶ Moderne Betriebssysteme (für x86) arbeiten im Protected Mode und
verwenden Paging

BTS - Sasshofer 35
Hitrate und Missrate

▶ Eine effiziente Speicherverwaltung für Hauptspeicher und Cache. . .


▶ hält diejenigen Seiten im Speicher, auf die häufig zugegriffen wird
▶ identifiziert diejenigen Seiten, auf die in naher Zukunft vermutlich
nicht zugegriffen wird und verdrängt diese bei Bedarf
▶ Bei einer Anfrage an einen Speicher sind 2 Ergebnisse möglich:
▶ Hit: Angefragte Daten sind vorhanden (Treffer)
▶ Miss: Angefragte Daten sind nicht vorhanden (verfehlt)
▶ 2 Kennzahlen bewerten die Effizienz eines Speichers:
▶ Hitrate: Anzahl der Anfragen an den Speicher mit Ergebnis Hit,
geteilt durch die Gesamtanzahl der Anfragen
▶ Ergebnis liegt zwischen 0 und 1
▶ Je höher der Wert, desto höher ist die Effizienz des Speichers
▶ Missrate: Anzahl der Anfragen an den Speicher mit Ergebnis Miss,
geteilt durch die Gesamtanzahl der Anfragen
▶ Missrate = 1 − Hitrate

BTS - Sasshofer 36
Seiten-Ersetzungsstrategien

▶ Es ist sinnvoll, die Daten (⇒ Seiten) im Speicher zu halten, auf die


häufig zugegriffen wird
▶ Einige Ersetzungsstrategien:
▶ OPT (Optimale Strategie)
▶ LRU (Least Recently Used)
▶ LFU (Least Frequently Used)
▶ FIFO (First In First Out)
▶ Clock / Second Chance
▶ TTL (Time To Live)
▶ Random

BTS - Sasshofer 37
Optimale Strategie (OPT)

▶ Verdrängt die Seite, auf die am längsten in der Zukunft


nicht zugegriffen wird
▶ Unmöglich zu implementieren
▶ Grund: Niemand kann in die Zukunft sehen
▶ Darum muss das Betriebssystem die Vergangenheit
berücksichtigen
▶ Mit OPT bewertet man die Effizienz anderer
Ersetzungsstrategien

Die Anfragen sind Anforderungen an Seiten im virtuellen Adressraum eines Prozesses. Wenn eine
angefragte Seite nicht schon im Cache ist, wird sie aus dem Hauptspeicher oder dem
Auslagerungsspeicher (Swap) nachgeladen
BTS - Sasshofer 38
Least Recently Used (LRU)

▶ Verdrängt die Seite, auf die am längsten nicht zugegriffen wurde


▶ Alle Seiten werden in einer Warteschlange eingereiht
▶ Wird eine Seite in den Speicher geladen oder referenziert, wird sie
am Anfang der Warteschlange eingereiht
▶ Ist der Speicher voll und es kommt zum Miss, wird die Seite am Ende
der Warteschlange ausgelagert
▶ Nachteil: Berücksichtigt nicht die Zugriffshäufigkeit

BTS - Sasshofer 39
Least Frequently Used (LFU)

▶ Verdrängt die Seite, auf die am wenigsten zugegriffen wurde


▶ Das Betriebssystem verwaltet für jede Seite im Speicher in der
Seitentabelle einen Referenzzähler, der die Anzahl der Zugriffe
speichert
▶ Sind alle Speicherplätze belegt und kommt es zum Miss, wird die
Seite verdrängt, deren Referenzzähler den niedrigsten Wert hat
▶ Vorteil: Berücksichtigt die Zugriffshäufigkeit
▶ Nachteil: Seiten, auf die in der Vergangenheit häufig zugegriffen
wurde, können den Speicher blockieren

BTS - Sasshofer 40
First In First Out (FIFO)

▶ Verdrängt die Seite, die sich am längsten im Speicher befindet


▶ Annahme: Eine Vergrößerung des Speichers führt zu weniger oder
schlechtestenfalls gleich vielen Miss
▶ Problem: Laszlo Belady zeigte 1969, dass bei bestimmten
Zugriffsmustern FIFO bei einem vergrößerten Speicher zu mehr
Miss führt (⇒ Belady’s Anomalie)
▶ Bis zur Entdeckung von Belady’s Anomalie galt FIFO als gute
Ersetzungsstrategie

BTS - Sasshofer 41
Belady’s Anomalie (1969)

BTS - Sasshofer 42
Clock / Second Chance

▶ Dieses Verfahren verwendet das Reference-Bit, das das


Betriebssystem für jede Seite in der Seitentabelle führt
▶ Wird eine Seite in den Speicher geladen ⇒ Reference-Bit = 0
▶ Wird auf eine Seite zugegriffen ⇒ Reference-Bit = 1
▶ Ein Zeiger zeigt auf die zuletzt zugegriffene Seite
▶ Beim Miss wird der Speicher ab dem Zeiger nach der ersten Seite
durchsucht, deren Reference-Bit den Wert 0 hat
▶ Diese Seite wird ersetzt
▶ Bei allen bei der Suche durchgesehenen Seiten, bei denen das
Reference-Bit den Wert 1 hat, wird es auf 0 gesetzt

Linux, BSD-UNIX, VAX/VMS (ursprünglich von Digital Equipment Corporation) und Microsoft Windows NT 4.0 auf
Uniprozessor-Systemen verwenden Clock oder Varianten davon

BTS - Sasshofer 43
Weitere Ersetzungsstrategien

▶ TTL (Time To Live): Jede Seite bekommt beim Laden in den


Speicher eine Lebenszeit zugeordnet
▶ Ist die TTL überschritten, kann die Seite verdrängt werden
Das Konzept wird nicht von Betriebssystemen verwendet. Es ist aber sinnvoll zum Caching von Webseiten (Inhalten aus dem WWW)

▶ Random: Zufällige Seiten werden verdrängt


▶ Vorteile: Simple und ressourcenschonende Ersetzungsstrategie
▶ Grund: Es müssen keine Informationen über das Zugriffsverhalten
gespeichert werden

Die Ersetzungsstrategie Random wird (wurde) in der Praxis eingesetzt

Die Betriebssysteme IBM OS/390 und Windows NT 4.0 auf SMP-Systemen verwenden die Ersetzungsstrategie Random
Die Intel i860 RISC-CPU verwendet die Ersetzungsstrategie Random für den Cache

BTS - Sasshofer 44
BTS 06 - Dateisysteme

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Dateisysteme

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

▶ Am Ende dieses Foliensatzes kennen/verstehen Sie. . .


▶ die Aufgaben und Grundbegriffe von Dateisystemen
▶ was Inodes und Cluster sind
▶ wie Blockadressierung funktioniert
▶ den Aufbau ausgewählter Dateisysteme
▶ eine Übersicht über die Windows-Dateisysteme und deren Eckdaten
▶ was Journaling ist und warum es viele Dateisysteme heute
implementieren
▶ wie Extent-basierte Adressierung funktioniert und warum
zahlreiche moderne Betriebssysteme diese verwenden
▶ was Copy-On-Write ist
▶ wie Defragmentierung funktioniert und wann es sinnvoll ist zu
defragmentieren

BTS - Sasshofer 3
Dateisysteme. . .

▶ organisieren die Ablage von Dateien auf


Datenspeichern
▶ Dateien sind beliebig lange Folgen von Bytes
und enthalten inhaltlich zusammengehörende
Daten
▶ verwalten Dateinamen und Attribute
(Metadaten) der Dateien
▶ bilden einen Namensraum Hierarchie von
Verzeichnissen und Dateien
Absolute Pfadnamen: Beschreiben den kompletten Pfad von der Wurzel bis zur Datei Relative
Pfadnamen: Alle Pfade, die nicht mit der Wurzel beginnen

▶ sind eine Schicht/Funktionalität des Betriebssystems * Prozesse


und Benutzer greifen auf Dateien abstrakt über deren Dateinamen
und nicht direkt auf Speicheradressen zu
▶ sollen wenig Overhead für Verwaltungsinformationen verursachen

BTS - Sasshofer 4
Technische Grundlagen der Dateisysteme
▶ Dateisysteme adressieren Cluster und nicht Blöcke des
Datenträgers
▶ Jede Datei belegt eine ganzzahlige Menge an Clustern
▶ In der Literatur heißen die Cluster häufig Zonen oder Blöcke
▶ Das führt zu Verwechslungen mit den Sektoren der Laufwerke, die in
der Literatur auch manchmal Blöcke heißen
▶ Die Größe der Cluster ist wichtig für die Effizienz des Dateisystems
▶ Je kleiner die Cluster. . .
▶ Steigender Verwaltungsaufwand für große Dateien
▶ Abnehmender Kapazitätsverlust durch interne Fragmentierung
▶ Je größer die Cluster. . .
▶ Abnehmender Verwaltungsaufwand für große Dateien
▶ Steigender Kapazitätsverlust durch interne Fragmentierung
Je größer die Cluster, desto mehr Speicher geht durch interne Fragmentierung verloren
Dateigröße: 1 kB. Clustergröße: 2 kB ⇒ 1 kB geht verloren
Dateigröße: 1 kB. Clustergröße: 64 kB ⇒ 63 kB gehen verloren!

▶ Die Clustergröße kann man beim Anlegen des Dateisystems


festlegen
BTS - Sasshofer 5
Grundbegriffe von Linux-Dateisystemen
Unter Linux gilt: Clustergröße ≤ Größe der Speicherseiten (Pagesize)
Die Pagesize hängt von der Architektur ab
x86 = 4 kB, Alpha und Sparc = 8 kB, IA-64 = 4/8/16/64 kB

▶ Wird eine Datei angelegt, wird auch ein Inode (Index Node) angelegt
▶ Er speichert die Verwaltungsdaten (Metadaten) einer Datei, außer
dem Dateinamen
▶ Metadaten sind u.a. Dateigröße, UID/GID, Zugriffsrechte und Datum
▶ Jeder Inode hat eine im Dateisystem eindeutige Inode-Nummer
▶ Im Inode wird auf die Cluster der Datei verwiesen
▶ Alle Linux-Dateisysteme basieren auf dem Funktionsprinzip der
Inodes
▶ Auch ein Verzeichnis ist eine Datei
▶ Inhalt: Dateiname und Inode-Nummer für jede Datei des
Verzeichnisses
▶ Arbeitssweise der Linux-Dateisysteme traditionell:
Blockadressierung
▶ Eigentlich ist der Begriff irreführend, weil Dateisysteme immer
Cluster adressieren und nicht Blöcke (des Datenträgers)
▶ Der Begriff ist aber seit Jahrzehnten in der Literatur etabliert
BTS - Sasshofer 6
Blockadressierung am Beispiel ext2/3/4
▶ Jeder Inode speichert die Nummern von bis zu 12 Clustern direkt

▶ Benötigt eine Datei mehr


Cluster, wird indirekt
adressiert mit Clustern,
deren Inhalt
Clusternummern sind
▶ Blockadressierung
verwenden Minix, ext2/3/4,
ReiserFS und Reiser4

▶ Szenario: Im Dateisystem können keine Dateien mehr erstellt werden, obwohl


noch ausreichend freie Kapazität vorhanden ist
▶ Mögliche Erklärung: Es sind keine Inodes mehr verfügbar
▶ Das Kommando df -i zeigt, wie viele Inodes existieren wie viele noch verfügbar
sind

BTS - Sasshofer 7
Direkte und indirekte Adressierung am Beispiel ext2/3/4

BTS - Sasshofer 8
Minix

Das Betriebssystem Minix

▶ Unix-ähnliches Betriebssystem
▶ Wird seit 1987 von Andrew S. Tanenbaum als Lehrsystem entwickelt
▶ Aktuelle Version: 3.3.0 aus dem Jahr 2014

▶ Standard-Dateisystem unter Linux bis 1992


▶ Naheliegend, denn Minix war die Grundlage der Entwicklung von
Linux
▶ Verwaltungsaufwand des Minix-Dateisystems ist gering
▶ Sinnvolle Einsatzbereiche „heute“: Boot-Disketten und RAM-Disks
▶ Speicher wird als lineare Kette gleichgroßer Cluster (1-8 kB)
dargestellt
▶ Ein Minix-Dateisystem enthält nur 6 Bereiche
▶ Die einfache Struktur macht es für die Lehre optimal

BTS - Sasshofer 9
Bereiche in einem Minix-Dateisystem

▶ Bootblock: Enthält den Boot-Loader, der das Betriebssystem startet


▶ Superblock: Enthält Informationen über das Dateisystem,
▶ z.B. Anzahl der Inodes und Cluster
▶ Inodes-Bitmap: Enthält eine Liste aller Inodes mit der Information,
ob der Inode belegt (Wert: 1) oder frei (Wert: 0) ist
▶ Cluster-Bitmap: Enthält eine Liste aller Cluster mit der Information,
ob der Cluster belegt (Wert: 1) oder frei (Wert: 0) ist
▶ Inodes: Enthält Inodes mit den Metadaten
▶ Jede Datei und jedes Verzeichnis wird von mindestens einem Inode
repräsentiert, der Metadaten enthält
▶ Metadaten sind u.a. Dateityp, UID/GID, Zugriffsrechte, Größe
▶ Daten: Hier ist der Inhalt der Dateien und Verzeichnisse
▶ Das ist der größte Bereich im Dateisystem

BTS - Sasshofer 10
ext2/3
▶ Die Cluster des Dateisystems werden in Blockgruppen gleicher
Größe zusammengefasst
▶ Die Informationen über die Metadaten und freien Cluster jeder
Blockgruppe werden in der jeweiligen Blockgruppe verwaltet

Maximale Größe einer Blockgruppe: 8x Clustergröße in Bytes


Beispiel: Ist die Clustergröße 1.024 Bytes, kann jede Blockgruppe maximal 8.192
Cluster umfassen

▶ Vorteil der Blockgruppen (bei Festplatten!): Die Inodes (Metadaten)


liegen physisch nahe bei den Clustern, die sie adressieren
▶ Das reduziert die Suchzeiten und den Grad der Fragmentierung
▶ Bei Flash-Speicher ist die Position der Daten in den einzelnen
Speicherzellen für die Zugriffsgeschwindigkeit irrelevant

BTS - Sasshofer 11
Schema der Blockgruppen bei ext2/3

▶ Der erste Cluster enthält den Bootblock (Größe: 1 kB)


▶ Er enthält den Bootmanager, der das Betriebssystem startet
▶ Jede Blockgruppe enthält eine Kopie des Superblocks
▶ Das verbessert die Datensicherheit
▶ Die Deskriptor-Tabelle enthält u.a.
▶ Die Clusternummern des Block-Bitmaps und des Inode-Bitmaps
▶ Die Anzahl der freien Cluster und Inodes in der Blockgruppe
▶ Block- und Inode-Bitmap sind jeweils einen Cluster groß
▶ Sie enthalten die Information, welche Cluster und welche Inodes in
der Blockgruppe belegt sind
▶ Die Inode-Tabelle enthält die Inodes der Blockgruppe
▶ Die restlichen Cluster der Blockgruppe sind für die Daten nutzbar
BTS - Sasshofer 12
Dateisysteme mit Dateizuordnungstabellen

Das Dateisystem FAT wurde 1980 mit QDOS, später umbenannt in MS-DOS,
veröffentlicht
QDOS = Quick and Dirty Operating System

▶ Das Dateisystem File Allocation Table (FAT) basiert auf der


gleichnamigen Datenstruktur, deren deutsche Bezeichnung
Dateizuordnungstabelle ist
▶ Die FAT (Dateizuordnungstabelle) ist eine Tabelle fester Größe
▶ Für jeden Cluster des Dateisystems existiert ein Eintrag in der FAT
mit folgenden Informationen über den Cluster:
▶ Cluster ist frei oder das Medium an dieser Stelle beschädigt
▶ Cluster ist von einer Datei belegt
▶ In diesem Fall speichert er die Adresse des nächsten Clusters, der zu
dieser Datei gehört oder er ist der letzte Cluster der Datei
▶ Die Cluster einer Datei bilden eine verkettete Liste (Clusterkette) ⇒
siehe folgende Folien

BTS - Sasshofer 13
Bereiche in einem FAT-Dateisystem (1/2)

▶ Im Bootsektor liegen ausführbarer x86-Maschinencode, der das


Betriebssystem starten soll, und Informationen über das
Dateisystem:
▶ Blockgröße des Speichermediums (512, 1.024, 2.048 oder 4.096
Bytes)
▶ Anzahl der Blöcke pro Cluster
▶ Anzahl der Blöcke (Sektoren) auf dem Speichermedium
▶ Beschreibung des Speichermediums
▶ Beschreibung der FAT-Version
▶ Zwischen Bootsektor und (erster) FAT können sich optionale
reservierte Sektoren, z.B. für den Bootmanager, befinden
▶ Diese Cluster können nicht vom Dateisystem benutzt werden

BTS - Sasshofer 14
Bereiche in einem FAT-Dateisystem (2/2)

▶ In der Dateizuordnungstabelle (FAT) sind die belegten und freien


Cluster im Dateisystem erfasst
▶ Konsistenz der FAT ist für die Funktionalität des Dateisystems
elementar
▶ Darum existiert üblicherweise eine Kopie der FAT, um bei
Datenverlust noch eine vollständige FAT als Backup zu haben
▶ Im Stammverzeichnis (Wurzelverzeichnis) ist jede Datei und jedes
Verzeichnis durch einen Eintrag repräsentiert:
▶ Bei FAT12 und FAT16 befindet sich das Stammverzeichnis direkt
hinter der FAT und hat eine feste Größe
▶ Die maximale Anzahl an Verzeichniseinträgen ist somit begrenzt
▶ Bei FAT32 kann sich das Stammverzeichnis an beliebiger Position im
Datenbereich befinden und hat eine variable Größe
▶ Der letzte Bereich enthält die eigentlichen Daten
BTS - Sasshofer 15
Stammverzeichnis (Wurzelverzeichnis) und FAT

BTS - Sasshofer 16
Struktur der Einträge im Stammverzeichnis

Warum ist 4 GB die maximale Dateigröße unter FAT32?


Es stehen nur 4 Bytes für die Angabe der Dateigröße zur Verfügung.

BTS - Sasshofer 17
Gefahr von Inkonsistenzen im Dateisystem

▶ Typische Probleme von Dateisystemen, die auf einer FAT basieren:


▶ verlorene Cluster
▶ querverbundene Cluster

BTS - Sasshofer 18
FAT12

▶ Erschien 1980 mit der ersten QDOS-Version


▶ Die Clusternummern sind 12 Bits lang
▶ Maximal 212 = 4.096 Cluster können adressiert werden

▶ Clustergröße: 512 Bytes bis 4 kB


▶ Unterstützt nur Speichermedien (Partitionen) bis 16 MB

212 × 4 kB Clustergröße = 16.384 kB = 16 MB maximale


Dateisystemgröße

▶ Dateinamen werden nur im Schema 8.3 unterstützt


▶ 8 Zeichen stehen für den Dateinamen und 3 Zeichen für die
Dateinamenserweiterung zur Verfügung

Wird „heute“ nur für DOS- und Windows-Disketten eingesetzt

BTS - Sasshofer 19
FAT16

▶ Erschien 1983, da absehbar war, dass 16 MB


Adressraum nicht ausreicht 128 MB - 255 MB
▶ Maximal 216 = 65.536 Cluster können adressiert
werden 2 GB - 4 GB
▶ 12 Cluster sind reserviert
▶ Clustergröße: 512 Bytes bis 256 kB
▶ Dateinamen werden nur im Schema 8.3 ▶ Die Tabelle enthält die
Standard-Clustergrößen unter
unterstützt ▶
Windows 2000/XP/Vista/7
Einige Betriebssysteme (z.B. MS-DOS
▶ Haupteinsatzgebiet heute: mobile Datenträger und Windows 95/98/Me) unterstützen
keine 64 kB Cluster
≤ 2 GB ▶ Einige Betriebssysteme (z.B. MS-DOS
und Windows 2000/XP/7) unterstützen
keine 128 kB und 256 kB Cluster

BTS - Sasshofer 20
FAT32

▶ Erschien 1997 als Reaktion auf die höhere


Festplattenkapazität und weil Cluster > 32 kB
sehr viel Speicher verschwenden
▶ 32 Bits pro Eintrag in der FAT stehen für
Clusternummern zur Verfügung
▶ 4 Bits sind reserviert
▶ Darum können nur 228 = 268.435.456 Cluster
▶ Die Tabelle enthält die
adressiert werden 256 MB - 511 MB
Standard-Clustergrößen unter
▶ Clustergröße: 512 Bytes bis 32 kB Windows 2000/XP/Vista/7. Die
Clustergröße kann beim Erzeugen des
▶ Maximale Dateigröße: 4 GB Dateisystems festgelegt werden

▶ Grund: Es stehen nur 4 Bytes für die Angabe


der Dateigröße zur Verfügung
▶ Haupteinsatzgebiet heute: mobile Datenträger
> 2 GB

BTS - Sasshofer 21
exFAT

▶ Speziell für Wechselmedien


▶ Effizient für kleine, Unterstützung für große Medien
▶ Dateigröße: 16 EiB augrund der 64-Bit Begrenzung
▶ Dateien pro Verzeichnis: 2,796,202
▶ Dateinamen: 255 (UTF-8) Zeichen)
▶ Volume Größe: 64 ZiB (Microsoft empfiehlt 512 TiB)
▶ ACL Unterstützung (wie NTFS)

BTS - Sasshofer 22
Längere Dateinamen durch VFAT

▶ VFAT (Virtual File Allocation Table) erschien 1997


▶ Erweiterung für FAT12/16/32, die längere Dateinamen ermöglicht
▶ Durch VFAT wurden unter Windows erstmals…
▶ Dateinamen unterstützt, die nicht dem Schema 8.3 folgen
▶ Dateinamen bis zu einer Länge von 255 Zeichen unterstützt
▶ Verwendet die Zeichenkodierung Unicode
Lange Dateinamen – Long File Name Support (LFN)

▶ VFAT ist ein interessantes Beispiel für die Realisierung einer neuen Funktionalität
unter Beibehaltung der Abwärtskompatibilität
▶ Lange Dateinamen (max. 255 Zeichen) werden auf max. 20
Pseudo-Verzeichniseinträge verteilt
▶ Dateisysteme ohne Long File Name Support ignorieren die
Pseudo-Verzeichniseinträge und zeigen nur den verkürzten Namen an
▶ Bei einem VFAT-Eintrag in der FAT, haben die ersten 4 Bits im Feld Dateiattribute
den Wert 1
▶ Besonderheit: Groß/Kleinschreibung wird angezeigt, aber ignoriert

BTS - Sasshofer 23
Kompatibilität zu MS-DOS
▶ VFAT und NTFS speichern für jede Datei einen eindeutigen
Dateinamen im Format 8.3
▶ Betriebssysteme ohne die VFAT-Erweiterung ignorieren die
Pseudo-Verzeichniseinträge und zeigen nur den verkürzten
Dateinamen
▶ So können Microsoft-Betriebssysteme ohne VFAT-Unterstützung auf
Dateien mit langen Dateinamen zugreifen
▶ Problem: Die kurzen Dateinamen müssen eindeutig sein
▶ Lösung:
▶ Alle Sonderzeichen und Punkte innerhalb des Namens werden
gelöscht
▶ Alle Kleinbuchstaben werden in Großbuchstaben umgewandelt
▶ Es werden nur die ersten 6 Zeichen beibehalten
▶ Danach folgt ein ~1 vor dem Punkt
▶ Die ersten 3 Zeichen hinter dem Punkt werden beibehalten und der
Rest gelöscht
▶ Existiert schon eine Datei gleichen Namens, wird ~1 zu ~2, usw.

Beispiel: Die Datei “Ein ganz langer Dateiname.test.pdf” wird unter MS-DOS so dargestellt: EINGAN~1.pdf

BTS - Sasshofer 24
FAT-Dateisysteme analysieren (1/2)

BTS - Sasshofer 25
FAT-Dateisysteme analysieren (2/2)

BTS - Sasshofer 26
Problematik von Schreibzugriffen

▶ Sollen Dateien oder Verzeichnisse erstellt, verschoben, umbenannt,


gelöscht oder einfach verändert werden, sind Schreibzugriffe im
Dateisystem nötig
▶ Schreiboperationen sollen Daten von einem konsistenten Zustand in
einen neuen konsistenten Zustand überführen
▶ Kommt es während eines Schreibzugriffs zum Ausfall, muss die
Konsistenz des Dateisystems überprüft werden
▶ Ist ein Dateisystem mehrere GB groß, kann die Konsistenzprüfung
mehrere Stunden oder Tage dauern
▶ Die Konsistenzprüfung zu überspringen, kann zum Datenverlust
führen
▶ Ziel: Die bei der Konsistenzprüfung zu überprüfenden Daten
eingrenzen
▶ Lösung: Über Schreibzugriffe Buch führen ⇒
Journaling-Dateisysteme

BTS - Sasshofer 27
Journaling-Dateisysteme

▶ Diese Dateisysteme führen ein Journal, in dem die Schreibzugriffe


gesammelt werden, bevor sie durchgeführt werden
▶ In festen Zeitabständen werden das Journal geschlossen und die
Schreiboperationen durchgeführt
▶ Vorteil: Nach einem Absturz müssen nur diejenigen Dateien
(Cluster) und Metadaten überprüft werden, die im Journal stehen
▶ Nachteil: Journaling erhöht die Anzahl der Schreiboperation, weil
Änderungen erst ins Journal geschrieben und danach durchgeführt
werden
▶ 2 Varianten des Journaling:
▶ Metadaten-Journaling
▶ Vollständiges Journaling

BTS - Sasshofer 28
Metadaten-Journaling und vollständiges Journaling
▶ Metadaten-Journaling (Write-Back)
▶ Das Journal enthält nur Änderungen an den Metadaten (Inodes)
▶ Nur die Konsistenz der Metadaten ist nach einem Absturz garantiert
▶ Änderungen an Clustern führt erst das sync() durch (⇒ Write-Back)
▶ Der Systemaufruf sync() übertragt die Änderungen im Page Cache,
auch = Buffer Cache genannt, auf die HDD/SDD
▶ Vorteil: Konsistenzprüfungen dauern nur wenige Sekunden
▶ Nachteil: Datenverlust durch einen Systemabsturz ist weiterhin
möglich
▶ Optional bei ext3/4 und ReiserFS
▶ NTFS und XFS bieten ausschließlich Metadaten-Journaling
▶ Vollständiges Journaling
▶ Änderungen an den Metadaten und alle Änderungen an Clustern der
Dateien werden ins Journal aufgenommen
▶ Vorteil: Auch die Konsistenz der Dateien ist garantiert
▶ Nachteil: Alle Schreiboperation müssen doppelt ausgeführt werden
▶ Optional bei ext3/4 und ReiserFS

Die Alternative ist also hohe Datensicherheit und hohe Schreibgeschwindigkeit


BTS - Sasshofer 29
Kompromiss aus beiden Varianten: Ordered-Journaling
▶ Die meisten Linux-Distributionen verwenden standardmäßig einen
Kompromiss aus beiden Varianten
▶ Ordered-Journaling
▶ Das Journal enthält nur Änderungen an den Metadaten
▶ Dateiänderungen werden erst im Dateisystem durchgeführt und
danach die Änderungen an den betreffenden Metadaten ins
Journal geschrieben
▶ Vorteil: Konsistenzprüfungen dauern nur wenige Sekunden und
ähnliche hohe Schreibgeschwindigkeit wie beim
Metadaten-Journaling
▶ Nachteil: Nur die Konsistenz der Metadaten ist garantiert
▶ Beim Absturz mit nicht abgeschlossenen Transaktionen im Journal
sind neue Dateien und Dateianhänge verloren, da die Cluster noch
nicht den Inodes zugeordnet sind
▶ Überschriebene Dateien haben nach einem Absturz möglicherweise
inkonsistenten Inhalt und können nicht mehr repariert werden, da die
alte Version nicht gesichert wurde
▶ Beispiele: Einzige Alternative bei JFS, Standard bei ext3/4 und
ReiserFS
BTS - Sasshofer 30
Problem des Overheads für Verwaltungsinformationen

▶ Jeder Inode bei Blockadressierung adressiert eine bestimmte


Anzahl Clusternummern direkt
▶ Benötigt eine Datei mehr Cluster, wird indirekt adressiert

▶ Dieses Adressierungsschema führt bei steigender Dateigröße zu


zunehmendem Overhead für Verwaltungsinformationen
▶ Lösung: Extents

BTS - Sasshofer 31
Extent-basierte Adressierung

▶ Inodes adressieren nicht einzelne Cluster, sondern bilden möglichst


große Dateibereiche auf Bereiche zusammenhängender Blöcke
(Extents) auf dem Speichergerät ab
▶ Statt vieler einzelner Clusternummern sind nur 3 Werte nötig:
▶ Start (Clusternummer) des Bereichs (Extents) in der Datei
▶ Größe des Bereichs in der Datei (in Clustern)
▶ Nummer des ersten Clusters auf dem Speichergerät

▶ Ergebnis: Weniger
Verwaltungsaufwand
▶ Beispiele: JFS, XFS,
btrfs, NTFS, ext4

BTS - Sasshofer 32
Extents am Beispiel von ext4

▶ Bei Blockadressierung mit ext3/4 sind in jedem Inode 15 je 4 Bytes


große Felder, also 60 Bytes, zur Adressierung von Clustern
verfügbar
▶ ext4 verwendet diese 60 Bytes für einen Extent-Header (12 Bytes)
und zur Adressierung von 4 Extents (jeweils 12 Bytes)

BTS - Sasshofer 33
Vorteil von Extents am Beispiel von ext4

▶ Mit maximal 12 Clustern kann ein ext3/4-Inode 48 kB (bei 4 kB


Clustergröße) direkt adressieren

▶ Mit 4 Extents kann ein ext4-Inode


512 MB direkt adressieren
▶ Ist eine Datei > 512 MB, baut ext4
einen Baum aus Extents auf
▶ Das Prinzip ist analog zur
indirekten Blockadressierung

BTS - Sasshofer 34
NTFS – New Technology File System

Verschiedene Versionen des NTFS-Dateisystems Aktuelle Versionen von NTFS bieten zusätzlich. . .
existieren ▶ Unterstützung für Kontingente (Quota) ab
▶ NTFS 1.0: Windows NT 3.1 Version 3.x
▶ NTFS 1.1: Windows NT 3.5/3.51 ▶ transparente Kompression
▶ NTFS 2.x: Windows NT 4.0 bis SP3 ▶ transparente Verschlüsselung (Triple-DES und
▶ NTFS 3.0: Windows NT 4.0 ab SP3/2000 AES) ab Version 2.x
▶ NTFS 3.1: Windows XP/2003/Vista/7/8/10

▶ Clustergröße: 512 Bytes bis 64 kB


▶ NTFS bietet im Vergleich zu seinem Vorgänger FAT u.a.:
▶ Maximale Dateigröße: 16 TB (⇒ Extents)
▶ Maximale Partitionsgröße: 256 TB (⇒ Extents)
▶ Sicherheitsfunktionen auf Datei- und Verzeichnisebene
▶ Genau wie VFAT. . .
▶ speichert NTFS Dateinamen bis zu einer Länge von 255
Unicode-Zeichen
▶ realisiert NTFS eine Kompatibilität zur Betriebssystemfamilie
MS-DOS,
▶ indem es für jede Datei einen eindeutigen Dateinamen im Format
8.3 speichert
BTS - Sasshofer 35
Struktur von NTFS

▶ Das Dateisystem enthält eine Hauptdatei – Master File Table (MFT)


▶ Enthält die Referenzen, welche Cluster zu welcher Datei gehören
▶ Enthält auch die Metadaten der Dateien (Dateigröße, Dateityp,
Datum der Erstellung, Datum der letzten Änderung und evtl. den
Dateiinhalt)
▶ Der Inhalt kleiner Dateien ≤ 900 Bytes wird direkt in der MFT
gespeichert

▶ Beim Formatieren einer Partition wird für die


MFT ein fester Bereich reserviert
▶ Standardmäßig werden für die MFT 12,5% der
Partitionsgröße reserviert
▶ Ist der Bereich voll, verwendet das Dateisystem Die Tabelle enthält die Standard-Clustergrößen
unter Windows 2000/XP/Vista/7. Die
Die Tabelle enthält die freien Speicher der Clustergröße kann beim Erzeugen des
Dateisystems festgelegt werden
Partition für die MFT
▶ Dabei kann es zu einer Fragmentierung der
MFT kommen

BTS - Sasshofer 36
ReFS (Resilient File System)

▶ eingeführt mit Server 2012, Windows 10 (Ziel: Enterprise,


Datacenter Anwendungen)
▶ 3 verschiedene Modelle:
1. Simple ReFS Volume
▶ This provides fast cloning, spaceless full backups, and data integrity
streams.
2. Shared Storage Spaces (S2S)
▶ This suffers from poor performance (parity) and poor capacity
(mirror).
3. Storage Spaces Direct (S2D)
▶ This adds real-time storage tiering with SSD. While it resolves S2S
performance issues
▶ Vorteile gegenüber NTFS
▶ Data integrity (metadata checksum protected, data optional)
▶ Resilience and availability (online repairs)
▶ Speed and efficieny (VM checkpoints, provisioning)

BTS - Sasshofer 37
Modernstes Konzept: Copy-On-Write

▶ Beim Schreibzugriff im
Dateisystem wird nicht der Inhalt
der Originaldatei geändert,
sondern der veränderte Inhalt als
neue Datei in freie Cluster
geschrieben
▶ Anschließend werden die
Metadaten auf die neue Datei
angepasst
▶ Bis die Metadaten angepasst sind, bleibt die Originaldatei erhalten
und kann nach einem Absturz weiter verwendet werden
▶ Vorteile:
▶ Die Datensicherheit ist besser als bei Dateisystemen mit Journal
▶ Snapshots können ohne Verzögerung erzeugt werden
▶ Beispiele: ZFS, btrfs und ReFS

BTS - Sasshofer 38
Datenzugriffe mit einem Cache beschleunigen (1/2)

▶ Moderne Betriebssysteme beschleunigen Datenzugriffe mit einem


Page Cache (auch Buffer Cache genannt) im Hauptspeicher
▶ Wird eine Datei lesend angefragt, schaut der Kernel zuerst im Page
Cache nach, ob die Datei dort vorliegt
▶ Liegt die Datei nicht im Page Cache vor, wird sie in diesen geladen
▶ Der Page Cache ist nie so groß, wie die Menge der Daten auf dem
System
▶ Darum müssen selten nachgefragte Daten verdrängt werden
▶ Wurden Daten im Cache verändert, müssen die Änderungen
spätestens beim Verdrängen nach unten durchgereicht
(zurückgeschrieben) werden
▶ Optimales Verwenden des Cache ist nicht möglich, da Datenzugriffe
nicht deterministisch (nicht vorhersagbar) sind
▶ Die meisten Betriebssystemen geben Schreibzugriffe nicht direkt
weiter (⇒ Write-Back)
▶ Vorteil: Höhere System-Geschwindigkeit
▶ Nachteil: Stürzt das System ab, kann es zu Inkonsistenzen kommen

BTS - Sasshofer 39
Datenzugriffe mit einem Cache beschleunigen (2/2)

▶ DOS und Windows bis Version 3.11 verwenden das Programm


Smartdrive um einen Page Cache zu realisieren
▶ Auch alle späteren Versionen von Windows enthalten einen Cache
Manager, der einen Page Cache verwaltet
▶ Linux puffert automatisch so viele Daten wie Platz im
Hauptspeicher ist
▶ Das Kommando free -m gibt unter Linux eine Übersicht der
Speicherbelegung aus
▶ Es informiert auch in den Spalten buffers und cached darüber, wie
viel Speicherkapazität des Hauptspeichers gegenwärtig für den Page
Cache verwendet wird

$ free -m
total used free shared buffers cached
Mem: 7713 6922 790 361 133 1353
-/+ buffers/cache: 5436 2277
Swap: 11548 247 11301

BTS - Sasshofer 40
Fragmentierung

▶ In einem Cluster darf nur eine Datei gespeichert werden


▶ Ist eine Datei größer als ein Cluster, wird sie auf mehrere verteilt
▶ Fragmentierung heißt, dass logisch zusammengehörenden Cluster
nicht räumlich beieinander sind
▶ Ziel: Häufige Bewegungen des Schwungarme vermeiden
▶ Liegen die Cluster einer Datei über die Festplatte verteilt, müssen die
Festplattenköpfe bei Zugriffen auf die Datei mehr zeitaufwendige
Positionswechsel durchführen
▶ Bei SSDs spielt die Position der Cluster keine Rolle für die
Zugriffsgeschwindigkeit

BTS - Sasshofer 41
Defragmentierung (1/3)

▶ Es kommen immer wieder folgende Fragen auf:


▶ Warum ist es unter Linux/UNIX nicht üblich ist zu defragmentieren?
▶ Kommt es unter Linux/UNIX überhaupt zu Fragmentierung?
▶ Gibt es unter Linux/UNIX Möglichkeiten zu defragmentieren?
▶ Zu allererst ist zu klären: Was will man mit Defragmentieren
erreichen?
▶ Durch das Schreiben von Daten auf einen Datenträger kommt es
zwangsläufig zu Fragmentierung
▶ Die Daten sind nicht mehr zusammenhängend angeordnet
▶ Eine zusammenhängende Anordnung würde das fortlaufende
Vorwärtslesen der Daten maximal beschleunigen, da keine
Suchzeiten mehr vorkommen
▶ Nur wenn die Suchzeiten sehr groß sind, macht Defragmentierung
Sinn
▶ Bei Betriebssystemen, die kaum Hauptspeicher zum Cachen der
Festplattenzugriffe verwenden, sind hohe Suchzeiten sehr negativ

Erkenntnis 1: Defragmentieren beschleunigt primär das fortlaufende Vorwärtslesen

BTS - Sasshofer 42
Defragmentierung (2/3)
▶ Singletasking-Betriebssysteme (z.B. MS-DOS)
▶ Es kann immer nur eine Anwendung laufen
▶ Wenn diese Anwendung hängt, weil sie auf die Ergebnisse von Lese-
und Schreibanforderungen wartet, verringert das die
Systemgeschwindigkeit

Erkenntnis 2: Defragmentieren kann bei Singletasking-Betriebssystemen sinnvoll sein

▶ Multitasking-Betriebssysteme
▶ Es laufen immer mehrere Programme
▶ Anwendungen können fast nie große Datenmengen am Stück lesen,
ohne dass andere Anwendungen ihre Lese- und
Schreibanforderungen dazwischenschieben
▶ Damit sich gleichzeitig laufende Programme nicht zu sehr
gegenseitig behindern, lesen Betriebssysteme mehr Daten ein als
angefordert
▶ Das System liest einen Vorrat an Daten in den Cache ein, auch wenn
dafür noch keine Anfragen vorliegen
Erkenntnis 3: In Multitasking-Betriebssysteme können Anwendungen fast nie große Datenmengen
am Stück lesen
BTS - Sasshofer 43
Defragmentierung (3/3)

▶ Linux-Systeme halten Daten, auf die Prozesse häufig zugreifen,


automatisch im Cache
▶ Die Wirkung des Cache überwiegt bei weitem die kurzzeitigen
Vorteile, die eine Defragmentierung hätte
▶ Defragmentieren hat primär einen Benchmark-Effekt
▶ In der Realität bringt Defragmentierung (unter Linux!) fast nichts
▶ Es gibt Werkzeuge (z.B: defragfs) zur Defragmentierung unter Linux
▶ Deren Einsatz ist häufig nicht empfehlenswert und sinnvoll
Erkenntnis 4: Defragmentieren hat primär einen Benchmark-Effekt
Erkenntnis 5: Dateisystemcache vergrößern bringt bessere Resultate als Defragmentieren

BTS - Sasshofer 44
BTS 07 - Prozesse

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Prozesse

in Anlehnung an
den Foliensatz zu Betriebssysteme,
Prof. Dr. Christian Baun
Fachhochschule Frankfurt am Main

BTS - Sasshofer 2
Lernziele dieses Foliensatzes

▶ Am Ende dieses Foliensatzes kennen/verstehen Sie…


▶ Was ein Prozess aus Sicht des Betriebssystems ist
▶ Welche Informationen der Prozesskontext im Detail enthält
▶ Benutzerkontext
▶ Hardwarekontext
▶ Systemkontext
▶ die unterschiedlichen Prozesszustände anhand verschiedener
Zustands-Prozessmodelle
▶ wie das Prozessmanagement mit Prozesstabellen,
Prozesskontrollblöcken und Zustandslisten funktioniert
▶ welche Schritte Betriebssysteme beim Erstellen von Prozessen (via
fork oder exec) oder Löschen von Prozessen durchführen
▶ was Forkbomben sind
▶ die Struktur von UNIX-Prozessen im Speicher
▶ Was Systemaufrufe (System Calls) sind und wie sie funktionieren

BTS - Sasshofer 3
Prozess und Prozesskontext

Wir wissen bereits...

▶ Ein Prozess (lat. procedere = voranschreiten) ist eine Instanz eines Programms, das
ausgeführt wird
▶ Prozesse sind dynamische Objekte und repräsentieren sequentielle Aktivitäten im Computer
▶ Auf Computern sind immer mehrere Prozesse in Ausführung
▶ Die CPU wird bei Multitasking im raschen Wechsel zwischen den Prozessen hin- und
hergeschaltet

▶ Ein Prozess umfasst außer dem Quelltext noch seinen Kontext


▶ 3 Arten von Kontextinformationen verwaltet das Betriebssystem:
▶ Benutzerkontext
▶ Daten im zugewiesenen Adressraum (virtuellen Speicher)
▶ Hardwarekontext
▶ Register in der CPU
▶ Systemkontext
▶ Informationen, die das Betriebssystem über einen Prozess speichert
▶ Die Informationen im Hardwarekontext und Systemkontext
verwaltet das Betriebssystem im Prozesskontrollblock

BTS - Sasshofer 4
Hardwarekontext

▶ Der Hardwarekontext sind die Inhalte der Register in der CPU zum
Zeitpunkt der Prozess-Ausführung
▶ Register, deren Inhalt bei einem Prozesswechsel gesichert werden
muss:
▶ Befehlszähler (Program Counter, Instruction Pointer) – enthält die
▶ Speicheradresse des nächsten auszuführenden Befehls
▶ Stackpointer – enthält die Speicheradresse am Ende des Stacks
▶ Basepointer – zeigt auf eine Adresse im Stack
▶ Befehlsregister (Instruction Register) – speichert den aktuellen
Befehl
▶ Akkumulator – speichert Operanden für die ALU und deren Resultate
▶ Page-table base Register – Adresse wo die Seitentabelle des
laufenden Prozesses anfängt
▶ Page-table length Register – Länge der Seitentabelle des laufenden
Prozesses
Einige dieser Register wurden in Foliensatz 3 und Foliensatz 5 vorgestellt

BTS - Sasshofer 5
Systemkontext

▶ Der Systemkontext sind die Informationen, die das Betriebssystem


über einen Prozess speichert
▶ Beispiele:
▶ Eintrag in der Prozesstabelle
▶ Prozessnummer (PID)
▶ Prozesszustand
▶ Information über Eltern- oder Kindprozesse
▶ Priorität
▶ Identifier – Zugriffsrechte auf Ressourcen
▶ Quotas – Zur Verfügung stehende Menge der einzelnen Ressourcen
▶ Laufzeit
▶ Geöffnete Dateien
▶ Zugeordnete Geräte

BTS - Sasshofer 6
Prozesstabelle und Prozesskontrollblöcke

▶ Jeder Prozess hat seinen eigenen Prozesskontext, der von den


Kontexten anderer Prozesse unabhängig ist

▶ Zur Verwaltung der Prozesse


führt das Betriebssystem
die Prozesstabelle
▶ Es ist eine Liste aller
existierenden Prozesse
▶ Sie enthält für jeden
Prozess einen Eintrag,
den
Prozesskontrollblock

BTS - Sasshofer 7
Prozesswechsel

▶ Beim Prozesswechsel wird der


Kontext (⇒ Inhalt der
CPU-Register) im
Prozesskontrollblock gespeichert
▶ Erhält ein Prozess Zugriff auf die
CPU, wird sein Kontext mit dem
Inhalt des Prozesskontrollblocks
wiederhergestellt

▶ Jeder Prozess ist zu jedem Zeitpunkt in einem bestimmten Zustand


⇒ Zustandsdiagramm der Prozesse

BTS - Sasshofer 8
Prozesszustände

Wir wissen bereits...


Jeder Prozess befindet sich zu jedem Zeitpunkt in einem Zustand

▶ Wie viele unterschiedliche Zustände es gibt, hängt vom


Zustands-Prozessmodell des Betriebssystems ab

Frage
Wie viele Prozesszustände braucht ein Prozessmodell mindestens?

BTS - Sasshofer 9
2-Zustands-Prozessmodell

▶ Prinzipiell genügen 2 Prozesszustände


▶ rechnend: Einem Prozess wurde die CPU zugeteilt
▶ untätig (idle): Die Prozesse warten auf die Zuteilung der CPU

BTS - Sasshofer 10
2-Zustands-Prozessmodell (Implementierung)

▶ Die Prozesse im Zustand untätig müssen in einer Warteschlange


gespeichert werden, in der sie auf ihre Ausführung warten Die Liste
wird nach Prozesspriorität oder Wartezeit sortiert

Die Priorität (anteilige Rechenleistung) hat unter Linux einen Wert von -20 bis +19 (in ganzzahligen Schritten). -20 ist die höchste
Priorität und 19 die niedrigste Priorität. Die Standardpriorität ist 0. Normale Nutzer können Prioritäten von 0 bis 19 vergeben. Der
Systemverwalter (root) darf auch negative Werte vergeben.

▶ Dieses Modell zeigt auch die Arbeitsweise des Dispatchers


▶ Aufgabe des Dispatchers ist die Umsetzung der Zustandsübergänge
▶ Die Ausführungsreihenfolge der Prozesse legt der Scheduler fest,
der einen Scheduling-Algorithmus verwendet

BTS - Sasshofer 11
Konzeptioneller Fehler des 2-Zustands-Prozessmodells

▶ Das 2-Zustands-Prozessmodell geht davon aus, dass alle Prozesse


immer zur Ausführung bereit sind
▶ Das ist unrealistisch!
▶ Es gibt fast immer Prozesse, die blockiert sind
▶ Mögliche Gründe:
▶ Warten auf die Eingabe oder Ausgabe eines E/A-Geräts
▶ Warten auf das Ergebnis eines anderen Prozesses
▶ Warten auf eine Reaktion des Benutzers
▶ Lösung: Die untätigen Prozesse werden in 2 Gruppen unterschieden
▶ Prozesse die bereit (ready) sind
▶ Prozesse die blockiert (blocked) sind

⇒ 3-Zustands-Prozessmodell

BTS - Sasshofer 12
3-Zustands-Prozessmodell (1/2)

▶ Jeder Prozess befindet sich in


einem der folgenden Zustände:
▶ rechnend (running): Der Prozess
hat Zugriff auf die CPU und führt
auf dieser Instruktionen aus

▶ bereit (ready):
▶ Der Prozess könnte unmittelbar Instruktionen auf der CPU
ausführen und wartet aktuell auf die Zuteilung der CPU
▶ blockiert (blocked):
▶ Der Prozess kann momentan nicht weiter ausgeführt werden und
wartet auf das Eintreten eines Ereignisses oder die Erfüllung einer
Bedingung
▶ Dabei kann es sich z.B. um eine Nachricht eines anderen Prozesses
oder eines Eingabe-/Ausgabegeräts oder um das Eintreten eines
Synchronisationsereignisses handeln

BTS - Sasshofer 13
3-Zustands-Prozessmodell (2/2)

▶ add: Prozesserzeugung und Einordnung in


die Liste der Prozesse im Zustand bereit
▶ retire: Der rechnende Prozess terminiert
▶ Belegte Ressourcen werden freigegeben

▶ dispatch: Die CPU wird einem Prozess im Zustand bereit zugeteilt,


der nun in den Zustand rechnend wechselt
▶ block: Der rechnende Prozess wartet auf eine Nachricht oder ein
Synchronisationsereignis und wechselt in den Zustand blockiert
▶ timeout: Dem rechnenden Prozess wird wegen einer Entscheidung
des Schedulers die CPU entzogen und er wechselt in den Zustand
bereit
▶ ready: Der Grund, warum der der Prozess blockiert ist, existiert
nicht mehr und der Prozess wechselt in den Zustand bereit

BTS - Sasshofer 14
3-Zustands-Prozessmodell – Realisierung (1/2)

▶ Eine Implementierung könnte auf 2 Warteschlangen basieren


▶ Warteschlange für Prozesse im Zustand bereit
▶ Warteschlange für Prozesse im Zustand blockiert

▶ Mehreren Warteschlangen für die blockierten Prozesse sind sinnvoll

BTS - Sasshofer 15
3-Zustands-Prozessmodell – Realisierung (2/2)

▶ Mehrere Warteschlangen für blockierte Prozesse So macht es Linux


in der Praxis

▶ Beim Zustandsübergang wird der Prozesskontrollblock des


Prozesses aus der alten Zustandsliste entfernt und in die neue
Zustandsliste eingefügt
▶ Für Prozesse im Zustand rechnend existiert keine eigene Liste

BTS - Sasshofer 16
5-Zustands-Prozessmodell

▶ Es ist empfehlenswert, das 3-Zustands-Prozessmodell um 2


weitere Prozesszustände zu erweitern
▶ neu (new): Der Prozess (Prozesskontrollblock) ist erzeugt, wurde
aber vom Betriebssystem noch nicht in die Warteschlange für
Prozesse im Zustand bereit eingefügt
▶ exit: Der Prozess ist fertig abgearbeitet oder wurde beendet, aber
sein Prozesskontrollblock existiert aus verschiedenen Gründen noch

▶ Grund für die Existenz der


Prozesszustände neu und exit:
▶ Auf manchen Systemen ist die
Anzahl der ausführbaren
Prozesse limitiert, um Speicher
zu sparen und den Grad des
Mehrprogrammbetriebs
festzulegen

BTS - Sasshofer 17
6-Zustands-Prozessmodell
▶ Ist nicht genügend physischer Hauptspeicher für alle Prozesse
verfügbar, müssen Teile von Prozessen ausgelagert werden ⇒
Swapping
▶ Das Betriebssystem lagert Prozesse aus, die im Zustand blockiert
sind

▶ Dadurch steht mehr


Hauptspeicher den
Prozessen in den Zuständen
rechnend und bereit zur
Verfügung
▶ Es macht also Sinn, das
5-Zustands-
Prozessmodell um den
Prozesszustand
suspendiert (suspended)
zu erweitern
BTS - Sasshofer 18
7-Zustands-Prozessmodell

▶ Wurde ein Prozess suspendiert, ist es besser, den frei gewordenen


Platz im Hauptspeicher zu verwenden, um einen ausgelagerten
Prozess zu aktivieren, als ihn einem neuen Prozess zuzuweisen
▶ Das ist nur dann sinnvoll, wenn der aktivierte Prozess nicht mehr
blockiert ist

▶ Im
6-Zustands-Prozessmodell
fehlt die Möglichkeit, die
ausgelagerten Prozesse zu
unterscheiden in:
▶ blockierte ausgelagerte
Prozesse
▶ nicht-blockierte
ausgelagerte Prozesse

BTS - Sasshofer 19
Prozessmodell von Linux/UNIX (etwas vereinfacht)
▶ Der Zustand rechnend (running) wird unterteilt in die Zustände. . .
▶ Benutzer rechnend (user running) für Prozesse im Benutzermodus
▶ Kernel rechnend (kernel running) für Prozesse im Kernelmodus

Ein Zombie-Prozess ist fertig abgearbeitet (via Systemaufruf exit), aber sein Eintrag in der
Prozesstabelle existiert so lange, bis der Elternprozess den Rückgabewert (via Systemaufruf wait)
abgefragt hat
BTS - Sasshofer 20
Prozesse unter Linux/UNIX erzeugen mit fork (1/2)
▶ Der Systemaufruf fork() ist die üblicherweise verwendete
Möglichkeit, einen neuen Prozess zu erzeugen
▶ Ruft ein Prozess fork() auf, wird eine identische Kopie als neuer
Prozess gestartet
▶ Der aufrufende Prozess heißt Vaterprozess oder Elternprozess
▶ Der neue Prozess heißt Kindprozess
▶ Der Kindprozess hat nach der Erzeugung den gleichen
Programmcode
▶ Auch die Befehlszähler haben den gleichen Wert, verweisen also auf
die gleiche Zeile im Programmcode
▶ Geöffnete Dateien und Speicherbereiche des Elternprozesses
werden für den Kindprozess kopiert und sind unabhängig vom
Elternprozess
▶ Kindprozess und Elternprozess besitzen ihren eigenen
Prozesskontext

Mit vfork existiert eine Variante von fork, die nicht den Adressraum des Elternprozesses kopiert, und
somit weniger Verwaltungsaufwand als fork verursacht. Die Verwendung von vfork ist sinnvoll, wenn
BTS - Sasshofer
der Kindprozess direkt nach seiner Erzeugung durch einem anderen Prozess ersetzt werden soll. 21
Prozesse unter Linux/UNIX erzeugen mit fork (2/2)

▶ Ruft ein Prozess fork() auf, wird eine exakte Kopie erzeugt
▶ Die Prozesse unterscheiden sich nur in Rückgabewerten von fork()
1 # include <stdio.h>
2 # include <unistd.h>
3 # include <stdlib.h>
4
5 void main () {
6 int rueckgabewert = fork () ;
7
8 if (rueckgabewert < 0) { // -1
9 // Speicher oder Prozesstabelle sind voll
10 }
11 if (rueckgabewert > 0) { // positiv, im Elternprozess
12 // Der Rückgabewert ist die PID des neu erzeugten Kindprozesses
13 }
14 if (rueckgabewert == 0) { // 0
15 // Hat fork () den Rückgabewert 0, sind wir im Kindprozess
16 }
17 }

BTS - Sasshofer 22
Prozessbaum
▶ Durch das Erzeugen immer neuer Kindprozesse mit fork()
entsteht ein beliebig tiefer Baum von Prozessen (⇒
Prozesshierarchie)
▶ Das Kommando pstree gibt die laufenden Prozesse unter
Linux/UNIX als Baum entsprechend ihrer Vater-/Sohn-Beziehungen
aus
$ pstree
init-+-Xprt
|-acpid
...
|-gnome-terminal-+-4*[bash]
| |- bash --- su --- bash
| |- bash -+- gv --- gs
| | |- pstree
| | |- xterm --- bash --- xterm --- bash
| | |- xterm --- bash --- xterm --- bash --- xterm --- bash
| | `- xterm --- bash
| |- gnome-pty-helpe
| `-{gnome-terminal}
|-4*[gv---gs]

BTS - Sasshofer 23
Informationen über Prozesse unter Linux/UNIX

$ ps -aF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 517 700 0 Nov10 ? 00:00:00 init
user 4311 1 0 9012 20832 0 Nov10 ? 00:00:05 xfce4-terminal
user 4321 4311 0 951 1984 0 Nov10 pts/0 00:00:00 bash
root 4380 4347 0 753 1128 0 Nov10 pts/3 00:00:00 su
root 4381 4380 0 920 1972 0 Nov10 pts/3 00:00:00 bash
user 20920 1 0 1127 2548 0 09:45 pts/1 00:00:00 gv SYS_WS0708.ps
user 20923 20920 0 4587 9116 0 09:45 pts/1 00:00:10 gs -sDEVICE = x11
user 21478 4321 0 1570 2996 0 10:28 pts/0 00:00:00 xterm
user 21479 21478 0 950 1936 0 10:28 pts/4 00:00:00 bash
user 21484 21479 0 1993 5036 0 10:28 pts/4 00:00:00 xterm
user 21485 21484 0 949 1936 0 10:28 pts/5 00:00:00 bash
user 21491 21479 0 1569 2872 0 10:29 pts/4 00:00:00 xterm
user 21492 21491 0 949 1924 0 10:29 pts/6 00:00:00 bash
user 21497 21479 0 1570 2880 0 10:29 pts/4 00:00:00 xterm
user 21498 21497 0 949 1924 0 10:29 pts/7 00:00:00 bash
user 21556 21485 0 672 976 0 10:31 pts/5 00:00:00 ps -AF

▶ RSS (Resident Set Size) = Belegter physischer Speicher (ohne Swap) in kB


▶ SZ = Größe des Speicherabbilds (Core Image) des Prozesses. Das beinhaltet Textsegment,
Heap und Stack
▶ TIME = Rechenzeit auf der CPU
▶ PSR = Dem Prozess zugewiese CPU

BTS - Sasshofer 24
Unabhängigkeit von Eltern- und Kindprozess

▶ Das Beispiel zeigt, dass Eltern- und Kindprozess unabhängig


voneinander arbeiten und unterschiedliche Speicherbereiche
verwenden
1 # include <stdio.h> Kind : 0
2 # include <unistd.h> Kind : 1
3 # include <stdlib.h> ...
4 Kind : 21019
5 void main () { Vater : 0
6 int i; ...
7 if (fork()) Vater : 50148
8 // Hier arbeitet der Vaterprozess Kind : 21020
9 for (i = 0; i < 5000000; i++) ...
10 printf ("\n Vater: %i", i) ; Kind : 129645
11 else Vater : 50149
12 // Hier arbeitet der Kindprozess ...
13 for (i = 0; i < 5000000; i++) Vater : 855006
14 printf ("\n Kind: %i", i ) ; Kind : 129646
15 } ...

▶ In der Ausgabe sind die Prozesswechsel zu sehen


▶ Der Wert der Schleifenvariablen i beweist, dass Eltern- und
Kindprozess unabhängig voneinander sind
▶ Das Ergebnis der Ausführung ist nicht reproduzierbar

BTS - Sasshofer 25
Die PID-Nummern von Eltern- und Kindprozess (1/2)

1 # include < stdio .h >


2 # include < unistd .h > ▶ Das Beispiel erzeugt
3 # include < stdlib .h >
4 einen Kindprozess
5
6
void main () {
int pid _des_Kindes ; ▶ Kindprozess und
7
8 pid _des_ Kindes = fork () ; Vaterprozess geben
9
10 // Es kam zu einem Fehler --> Programmabbruch beide aus:
11 if ( pid_ des_Kindes < 0) { ▶ Eigene PID
12 perror ( " \ n Es kam bei fork () zu einem Fehler ! " ) ;
13 exit (1) ; ▶ PID des Vaters
14 }
15 (PPID)
16 // Vaterprozess
17 if ( pid_ des_Kindes > 0) {
18 printf ( " \ n Vater : PID : % i " , getpid () ) ;
19 printf ( " \ n Vater : PPID : % i " , getppid () ) ;
20 }
21
22 // Kindprozess
23 if ( pid_ des_Kindes == 0) {
24 printf ( " \ n Kind : PID : % i " , getpid () ) ;
25 printf ( " \ n Kind : PPID : % i " , getppid () ) ;
26 }
27 }

BTS - Sasshofer 26
Die PID-Nummern von Eltern- und Kindprozess (2/2)
▶ Die Ausgabe ist üblicherweise mit dieser vergleichbar:
Vater : PID : 20952
Vater : PPID : 3904
Kind : PID : 20953
Kind : PPID : 20952

▶ Gelegentlich kann man folgendes Ereignis beobachten:


Vater : PID : 20954
Vater : PPID : 3904
Kind : PID : 20955
Kind : PPID : 1

▶ Der Elternprozess wurde vor dem Kind-Prozess beendet


▶ Wird der Elternprozess vor dem Kindprozess beendet, bekommt er
init als neuen Elternprozess zugeordnet
▶ Elternlose Prozesse werden immer von init adoptiert

init (PID 1) ist/war der erste Prozess unter Linux/UNIX


BTS - Sasshofer 27
Prozesse ersetzen mit exec

▶ Der Systemaufruf exec() ersetzt einen Prozess durch einen


anderen
▶ Es findet eine Verkettung statt
▶ Der neue Prozess erbt die PID des aufrufenden Prozesses
▶ Will man aus einem Prozess heraus ein Programm starten, ist es
nötig, zuerst mit fork() einen neuen Prozess zu erzeugen und
diesen mit exec() zu ersetzen
▶ Wird vor einem Aufruf von exec() kein neuer Prozess mit fork()
erzeugt, geht der Elternprozess verloren
▶ Schritte einer Programmausführung in der Shell:
▶ Die Shell erzeugt mit fork() eine identische Kopie von sich selbst
▶ Im neuen Prozess wird mit exec() das eigentliche Programm
gestartet

BTS - Sasshofer 28
Beispiel zum Systemaufruf exec

$ ps -f
UID PID PPID C STIME TTY TIME CMD
user 1772 1727 0 May18 pts /2 00:00:00 bash
user 12750 1772 0 11:26 pts /2 00:00:00 ps -f
$ bash
$ ps -f
UID PID PPID C STIME TTY TIME CMD
user 1772 1727 0 May18 pts /2 00:00:00 bash
user 12751 1772 12 11:26 pts /2 00:00:00 bash
user 12769 12751 0 11:26 pts /2 00:00:00 ps -f
$ exec ps -f
UID PID PPID C STIME TTY TIME CMD
user 1772 1727 0 May18 pts /2 00:00:00 bash
user 12751 1772 4 11:26 pts /2 00:00:00 ps -f
$ ps -f
UID PID PPID C STIME TTY TIME CMD
user 1772 1727 0 May18 pts /2 00:00:00 bash
user 12770 1772 0 11:27 pts /2 00:00:00 ps -f

▶ Durch das exec hat ps -f die Bash ersetzt und deren PID (12751)
und PPID (1772) übernommen

BTS - Sasshofer 29
3 Möglichkeiten um einen neuen Prozess zu erzeugen

▶ Prozessvergabelung (forking): Ein laufender Prozess erzeugt mit


fork() einen neuen, identischen Prozess
▶ Prozessverkettung (chaining): Ein laufender Prozess erzeugt mit
exec() einen neuen Prozess und beendet (terminiert) sich damit
selbst, weil er durch den neuen Prozess ersetzt wird
▶ Prozesserzeugung (creation): Ein laufender Prozess erzeugt mit
fork() einen neuen, identischen Prozess, der sich selbst mit
exec() durch einen neuen Prozess ersetzt

BTS - Sasshofer 30
Spaß haben mit Forkbomben

▶ Eine Forkbombe ist ein Programm, das den Systemaufruf fork in


einer Endlosschleife aufruft
▶ Ziel: So lange Kopien des Prozesses erzeugen, bis kein Speicher
mehr frei ist
▶ Das System wird unbenutzbar

▶ Forkbombe in Python ▶ Forkbombe in C


1 import os 1 #include <unistd.h>
2 2
3 while True: 3 int main(void) {
4 os.fork () 4 4 while (1)
5 fork();
6 }
▶ Einzige Schutzmöglichkeit: Maximale Anzahl der Prozesse und
maximalen Speicherverbrauch pro Benutzer limitieren

BTS - Sasshofer 31
Struktur eines UNIX-Prozesses im Speicher (1/6)

▶ Standardmäßige Aufteilung des


virtuellen Speichers auf einem
Linux-System mit 32-Bit-CPU
▶ 1 GB sind für das System
(Kernel)
▶ 3 GB für den laufenden Prozess
Die Struktur von Prozessen auf 64 Bit-Systemen unterscheidet sich nicht
von 32 Bit-Systemen. Einzig der Adressraum ist größer und damit die
mögliche Ausdehnung der Prozesse im Speicher

▶ Das Textsegment enthält den


Programmcode (Maschinencode)
▶ Können mehrere Prozesse teilen
▶ Muss also nur einmal im
physischen Quellen Speicher
vorgehalten werden
▶ Ist darum üblicherweise nur
lesbar (read only)
▶ Liest exec() aus Programmdatei
BTS - Sasshofer 32
Struktur eines UNIX-Prozesses im Speicher (2/6)

▶ Der Heap wächst dynamisch und


besteht aus 2 Teilen:
1. Datensegment
2. BSS
▶ Das Datensegment enthält
initialisierte Variablen und
Konstanten
▶ Enthält alle Daten, die ihre Werte
in globalen Deklarationen
(außerhalb von Funktionen)
zugewiesen bekommen
▶ Beispiel: int summe = 0;
▶ Liest exec() aus der
Programmdatei

BTS - Sasshofer 33
Struktur eines UNIX-Prozesses im Speicher (3/6)

▶ Der Bereich BSS (Block Started by


Symbol) enthält nicht initialisierte
Variablen
▶ Enthält globale Variablen
(Deklaration ist außerhalb von
Funktionen), denen kein
Anfangswert zugewiesen wird
▶ Beispiel: int i;
▶ Zudem kann hier der Prozess
dynamisch zur Laufzeit Speicher
allokieren
▶ Unter C mit der Funktion
malloc()
▶ Alle Variablen im BSS initialisiert
exec() mit 0

BTS - Sasshofer 34
Struktur eines UNIX-Prozesses im Speicher (4/6)

▶ Der Stack dient zur Realisierung


geschachtelter Funktionsaufrufe
▶ Enthält auch die
Kommandozeilenargumente des
Programmaufrufs und
Umgebungsvariablen
▶ Arbeitet nach dem Prinzip LIFO
(Last In First Out)

BTS - Sasshofer 35
Struktur eines UNIX-Prozesses im Speicher (5/6)

▶ Mit jedem Funktionsaufruf wird


eine Datenstruktur mit folgendem
Inhalt auf den Stack gelegt:
▶ Aufrufparameter
▶ Rücksprungadresse
▶ Zeiger auf die aufrufende
Funktion im Stack
▶ Die Funktionen legen auch ihre
lokalen Variablen auf den Stack
Beim Rücksprung aus einer
Funktion wird die Datenstruktur
der Funktion aus dem Stack
entfernt

BTS - Sasshofer 36
Struktur eines UNIX-Prozesses im Speicher (6/6)

▶ Das Kommando size gibt die


Größe (in Bytes) von Textsegment,
Datensegment und BSS von
Programmdateien aus
▶ Die Inhalte von Textsegment und
Datensegment sind in den
Programmdateien enthalten
▶ Alle Inhalte im BSS werden bei
der Prozesserzeugung auf den
Wert 0 gesetzt
$ size /bin/c*
text data bss dec hex filename
46480 620 1480 48580 bdc4 /bin/cat
7619 420 32 8071 1f87 /bin/chacl
55211 592 464 56267 dbcb /bin/chgrp
51614 568 464 52646 cda6 /bin/chmod
57349 600 464 58413 e42d /bin/chown
120319 868 2696 123883 1e3eb /bin/cp
131911 2672 1736 136319 2147f /bin/cpio

BTS - Sasshofer 37
Wiederholung: Virtueller Speicher (Foliensatz 5)

BTS - Sasshofer 38
Benutzermodus und Kernelmodus

▶ x86-kompatible CPUs enthalten 4


Privilegienstufen
▶ Ziel: Stabilität und Sicherheit verbessern
▶ Jeder Prozess wird in einem Ring ausgeführt
und kann sich nicht selbstständig aus diesem
befreien
Realisierung der Privilegienstufen
Das Register CPL (Current Privilege Level) speichert die aktuelle
Privilegienstufe

▶ In Ring 0 (=Kernelmodus) läuft der Betriebssystemkern


▶ Hier haben Prozesse vollen Zugriff auf die Hardware
▶ Der Kern kann auch physischen Speicher adressieren (⇒ Real Mode)
▶ In Ring 3 (=Benutzermodus) laufen die Anwendungen
▶ Hier arbeiten Prozesse nur mit virtuellem Speicher (⇒ Protected
Mode)
Moderne Betriebssysteme verwenden nur 2 Privilegienstufen (Ringe)
Grund: Einige Hardware-Architekturen (z.B: Alpha, PowerPC, MIPS) enthalten nur 2 Stufen

BTS - Sasshofer 39
Systemaufrufe (1/2)
Wir wissen bereits...
Alle Prozesse außerhalb des Betriebssystemkerns dürfen ausschließlich auf ihren eigenen virtuellen
Speicher zugreifen

▶ Muss ein Prozess im Benutzermodus eine höher privilegierte


Aufgabe erfüllen (z.B. Zugriff auf Hardware), kann er das dem
Kernel durch einen Systemaufruf mitteilen
▶ Ein Systemaufruf ist ein Funktionsaufruf im Betriebssystem, der
einen Sprung vom Benutzermodus in den Kernelmodus auslöst
(⇒ Moduswechsel)
Moduswechsel

▶ Ein Prozess gibt die Kontrolle über die CPU an den Kernel ab und ist unterbrochen bis die
Anfrage fertig bearbeitet ist
▶ Nach dem Systemaufruf gibt der Kernel die CPU wieder an den Prozess im Benutzermodus ab
▶ Der Prozess führt seine Abarbeitung an der Stelle fort, an der der Kontextwechsel zuvor
angefordert wurde

▶ Die Leistung eines Systemaufrufs wird im Kernel erbracht


▶ Also außerhalb des Adressraums des aufrufenden Prozesses

BTS - Sasshofer 40
Systemaufrufe (2/2)
▶ Systemaufrufe (System Calls) sind die Schnittstelle, die das
Betriebssystem den Prozessen im Benutzermodus zur Verfügung
stellt
▶ Systemaufrufe erlauben den Prozessen im Benutzermodus u.a.
Prozesse und Dateien zu erzeugen und zu verwalten und auf
Hardware zuzugreifen

Einfach gesagt...
Ein Systemaufruf ist eine Anfrage eines
Prozesses im Benutzermodus an den Kernel,
um einen Dienst des Kernels zu nutzen

Vergleich zwischen Systemaufrufen und Interrupts


Interrupts (⇒ Foliensatz 3) sind Unterbrechungen, die Ereignisse außerhalb von Prozessen im Benutzermodus auslösen

BTS - Sasshofer 41
Ein Beispiel für einen Systemaufruf: ioctl()
▶ Mit ioctl() setzen Linux-Programme gerätespezifische Befehle ab
▶ Er ermöglicht Prozessen die Kommunikation mit und Steuerung von:
▶ Zeichenorientierten Geräten (Maus, Tastatur, Drucker, Terminals, . . . )
▶ Blockorientierten Geräten (SSD/HDD, CD-/DVD-Laufwerk, . . . )

▶ Syntax:
ioctl (Filedeskriptor, Aktionsanforderung,
Integer-Wert oder Zeiger auf Daten);

▶ Einige typische Einsatzszenarien von ioctl():


▶ Diskettenspur formatieren
▶ Modem oder Soundkarte initialisieren
▶ CD auswerfen
▶ Status- und Verbindungsinformationen der WLAN-Schnittstelle
auslesen
▶ Auf Sensoren via Inter-Integrated Circuit (I2 C) Datenbus zugreifen
Gute Übersichten über Systemaufrufe
Linux: http://www.cheat-sheets.org/saved-copy/Linux_Syscall_quickref.pdf
Linux: http://syscalls.kernelgrok.com
Linux:
BTS - Sasshofer http://www.tutorialspoint.com/unix_system_calls/ 42
Systemaufrufe und Bibliotheken

▶ Direkt mit Systemaufrufen arbeiten ist unsicher


und schlecht portabel
▶ Moderne Betriebssysteme enthalten eine
Bibliothek, die sich logisch zwischen den
Benutzerprozessen und dem Kern befindet

▶ Die Bibliothek ist zuständig für:


▶ Kommunikationsvermittlung der Benutzerprozesse mit dem Kernel
▶ Moduswechsel zwischen Benutzermodus und Kernelmodus
▶ Vorteile, die der Einsatz einer Bibliothek mit sich bringt:
▶ Erhöhte Portabilität, da kein oder nur sehr wenig Bedarf besteht,
dass die Benutzerprozesse direkt mit dem Kernel kommunizieren
▶ Erhöhte Sicherheit, da die Benutzerprozesse nicht selbst den
Wechsel in den Kernelmodus durchführen können
Beispiele für solche Bibliotheken
C Standard Library (UNIX), GNU C-Bibliothek glibc (Linux), C Library Implementationen (BSD),
Native API ntdll.dll (Windows)
BTS - Sasshofer 43
Schritt für Schritt (1/4) – read(fd, buffer, nbytes);

▶ In Schritt 1-3 legt der


Benutzerprozess die
Parameter auf den Stack
▶ In 4 ruft der
Benutzerprozess die
Bibliotheksfunktion für
read (⇒ nbytes aus der
Datei fd lesen und in
buffer speichern) auf
▶ Die Bibliotheksfunktion speichert in 5 die Nummer des
Systemaufrufs im Accumulator Register EAX (32-Bit) bzw. RAX
(64-Bit)
▶ Die Bibliotheksfunktion speichert die Parameter des Systemaufrufs
in den Registern EBX, ECX und EDX (bzw. bei 64-Bit: RBX, RCX und
RDX)

BTS - Sasshofer 44
Schritt für Schritt (2/4) – read(fd, buffer, nbytes);

▶ In 6 wird der
Softwareinterrupt
(Exception) 0x80 (dezimal:
128) ausgelöst, um vom
Benutzermodus in den
Kernelmodus zu wechseln
▶ Der Softwareinterrupt
unterbricht die
Programmausführung im
Benutzermodus und
erzwingt das Ausführen
eines
Exception-Handlers im
Kernelmodus
Der Kernel verwaltet die System Call Table, eine Liste mit allen Systemaufrufen
Jedem Systemaufruf ist dort eine eindeutige Nummer und eine Kernel-interne Funktion zugeordnet

BTS - Sasshofer 45
Schritt für Schritt (3/4) – read(fd, buffer, nbytes);

▶ Der aufgerufene
Exception-Handler ist eine
Funktion im Kernel, die das
Register EAX ausliest
▶ Die
Exception-Handler-Funktion
ruft in 7 die entsprechende
Kernel-Funktion aus der
System Call Table mit den in
den Registern EBX, ECX und
EDX liegenden Argumenten
auf
▶ In 8 startet der
Systemaufruf

BTS - Sasshofer 46
Schritt für Schritt (4/4) – read(fd, buffer, nbytes);

▶ In 9 gibt der
Exception-Handler die
Kontrolle an die Bibliothek
zurück, die den
Softwareinterrupt auslöste
▶ Die Funktion kehrt danach in
10 zum Benutzerprozess so
zurück, wie es auch eine
normale Funktion getan
hätte
▶ Um den Systemaufruf abzuschließen, muss der Benutzerprozess in
11 genau wie nach jedem Funktionsaufruf den Stack aufräumen
▶ Anschließend kann der Benutzerprozess weiterarbeiten

BTS - Sasshofer 47
Beispiel für einen Systemaufruf unter Linux

▶ Systemaufrufe werden wie Bibliotheksfunktionen aufgerufen Der


Mechanismus ist bei allen Betriebssystemen ähnlich In einem
C-Programm ist kein Unterschied erkennbar
1 #include <syscall.h>
2 #include <unistd.h>
3 #include <stdio.h>
4 #include <sys/types.h>
5
6 int main (void) {
7 unsigned int ID1, ID2;
8
9 // Systemaufruf
10 ID1 = syscall ( SYS_getpid ) ;
11 printf ("Ergebnis des Systemaufrufs: %d\n" , ID1);
12
13 // Von der glibc aufgerufener Systemaufruf
14 ID2 = getpid();
15 printf ("Ergebnis der Bibliotheksfunktion: %d\n", ID2);
16
17 return (0);
18 }

$ gcc SysCallBeispiel.c -o SysCallBeispiel


$ ./SysCallBeispiel
Ergebnis des Systemaufrufs : 3452
Ergebnis der Bibliotheksfunktion: 3452

BTS - Sasshofer 48
Auswahl an Systemaufrufen

BTS - Sasshofer 49
Systemaufrufe unter Linux

▶ Die Liste mit den Namen der Systemaufrufe im Linux-Kernel…


▶ befindet sich im Quelltext von Kernel 2.6.x in der Datei:
arch/x86/kernel/syscall_table_32.S
▶ befindet sich im Quelltext von Kernel 3.x, 4.x und 5.x in diesen
Dateien:
arch/x86/syscalls/syscall_[64|32].tbl oder
arch/x86/entry/syscalls/syscall_[64|32].tbl
arch/x86/syscalls/syscall_32.tbl
...
1 i386 exit sys_exit
2 i386 fork sys_fork
3 i386 read sys_read
4 i386 write sys_write
5 i386 open sys_open
6 i386 close sys_close
...

BTS - Sasshofer 50
BTS 12 - Distributionen 1

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Distributionen im Überblick

BTS - Sasshofer 2
Teil 1 - Geschichtlicher Hintergrund

BTS - Sasshofer 3
Richard Stallman

▶ Geboren 1953 (USA)


▶ Mitarbeiter MIT (1971)
▶ Gründer des GNU Projektes
▶ Gründer der Free Software Foundation
▶ “Value your freedom or you will lose it, teaches
history.”

BTS - Sasshofer 4
Das GNU Projekt

▶ GNU rekursives Akronym


▶ GNU is Not Unix
▶ Start 1984
▶ Ziel: Entwicklung eines vollständigen,
UNIX-artigen OS, aber als freie Software

BTS - Sasshofer 5
FSF - Free Software Foundation

▶ Gegründet 1985
▶ Organisatorischer Sponsor des GNU Projektes
▶ Finanzierung
▶ Mitgliedsbeiträge/Spenden (2013: 99%)
▶ Erträge aus Copyleft-Verletzungen (2009: 30%)
▶ Unterstützung von Firmen und Stiftungen

BTS - Sasshofer 6
Freie Software

4 Freiheiten gemäß Free Software Foundation:


0 Use Die Freiheit, das Programm für jeden Zweck auszuführen
frei verwenden!
1 Study Die Freiheit, die Funktionsweise eines Programms zu
untersuchen, und es an seine Bedürfnisse anzupassen
Quelltext erhalten!
2 Share Die Freiheit, Kopien weiterzugeben und damit seinen
Mitmenschen zu helfen
weitergeben!
3 Improve Die Freiheit, ein Programm zu verbessern, und die
Verbesserungen an die Öffentlichkeit weiterzugeben, so
dass die gesamte Gesellschaft profitiert
Programm verändern!

BTS - Sasshofer 7
GNU General Public License

▶ Lizenz zur Benutzung der Software


▶ Copyright beim Autor
▶ keine Haftung
▶ beliebig einsetzbar
▶ beliebig weiterzugeben
▶ Immer mit Quellcode (Open Source)
▶ beliebig änderbar
▶ Geld verdienen z.B. durch Beratung/Support

BTS - Sasshofer 8
Freie Software

▶ Keine Preispolitik (muss nicht gratis sein)


▶ Rechte, nicht Pflichten!
▶ GPL: muss frei bleiben
▶ “Free” as in “free speech”, not as in “free beer”!

BTS - Sasshofer 9
Exkurs: Freie Software nur für Linux Systeme?

▶ Nein, auch für Windows!


▶ Woher?
▶ Downloads
▶ Computerheft CDs/DVDs
▶ Beispiele Programme / Projekte:
▶ Büro: Open/LibreOffice.Org, Freemind,
PDFCreator
▶ Grafik: GIMP, Blender
▶ Internet: Firefox, Thunderbird, Miranda
▶ Multimedia: VLC Player, Audacity, Ardour
▶ Programmieren: Eclipse, BlueGriffon
▶ Server: Apache, Joomla!, Wordpress, Drupal,
Typo3, PostgreSQL, VNC

BTS - Sasshofer 10
Exkurs: Urheberrecht/Copyright

▶ Urheberrecht
▶ Alternativ: Copyright (USA)
▶ Recht des Autors an seinem Werk
▶ »automatisch«
▶ Lizenz
▶ Rechte des Benutzers
▶ z.B. Single/Multi-User, Public Domain, Shareware
▶ Creative Commons

BTS - Sasshofer 11
Exkurs: Betriebssystem

▶ Ein Betriebssystem ist eine Software (Satz


von Programmen)

▶ Aufgaben:
▶ Verwaltung der HW und SW-Ressourcen (Speicher, Ein- und
Ausgabe, Netzwerk, Dateien, Geräten, Prozesse…)
▶ Schnittstelle zwischen Anwendungen und Hardware
▶ Steuerung der Ausführung der Anwendungsprogramme
▶ Kommunikation mit Benutzern
▶ Benutzer (und manche Hersteller) sehen Standardprogramme oft
auch als Teil des Betriebssystems!

BTS - Sasshofer 12
Exkurs: Betriebssystem

2 wesentliche Teile:
1. Betriebssystem-Kern
(Kernel)
2. Dienst- und
Anwendungsprogramme

BTS - Sasshofer 13
GNU Projekt

▶ GCC (GNU Compiler-Collection)


▶ GNU Emacs
▶ GNU Konsolentools
▶ Editoren
▶ …
▶ Insgesamt:
▶ GNU: 398
▶ FSF: 16210 Pakete (Stand 31.8.2019)
▶ COPYLEFT!

BTS - Sasshofer 14
GNU Projekt

Freie Software - bestand aus:

▶ Textbasierten Anwendungsprogrammen
▶ Bibliotheken
Freie Software wurde primär auf UNIX Systemen verwendet

Versuche eigenen Kernel (Hurd) zu entwickeln scheitern bisher…

KEIN KERNEL

BTS - Sasshofer 15
Linus Torvalds

▶ Finne, geboren 1969


▶ entwickelt Linux seit 1991
▶ Version 1.0 1994
▶ Version 2.0 1996
▶ Version 3.0 2011
▶ Version 4.0 2015
▶ Version 5.0 03-2019
▶ Neueste Version: 5.3 (31.8.19: RC6)

“I’m doing a (free) operating system (just a hobby, won’t be big and
professional like gnu) for 386(486) AT clones.” (August 1991)

“Software is like sex. It’s better when it’s free.” (November 1993)

BTS - Sasshofer 16
GNU/Linux

▶ Linux Kernel
▶ “Nur” Kernel
▶ Keine Anwendungs-/Dienstprogramme
▶ GNU Software
▶ “Nur” Anwendungs-/Dienstprogramme
▶ Kein Kernel

Linux + GNU = GNU/Linux

BTS - Sasshofer 17
TUX

Ein Pinguin als Symbol für Linux, durch einen Wettbewerb 1996
entstanden - auf Anregung von Linus Torvalds

BTS - Sasshofer 18
BTS 13 - Distributionen 2

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Distributionen im Überblick

BTS - Sasshofer 2
Teil 2 – Linux-Distributionen

BTS - Sasshofer 3
Distributionen

▶ Linux ist ja nur ein Kernel, GNU ist (größtenteils) nur Text basierend!
▶ Es fehlen:
▶ grafische Oberfläche
▶ Anwendungsprogramme
▶ Office
▶ Internet (Browser, Mail,…)
▶ Multimedia (MP3, Video,..)
▶ Grafik (Fotoverwaltung, ….)
▶ Spiele
▶ Hilfsprogramme (CD-Brenner,…)
▶ … und es gibt zu viele davon (bei Debian fast 60.000)!!

Daher: Auswahl einer sinnvollen Zusammenstellung durch einen


Menschen, eine Firma oder Organisation → “Distribution”

BTS - Sasshofer 4
Vergleich

▶ Windows vs. Linux Distribution


▶ Installation
▶ „Batteries included“
▶ Keine Treiber CD
▶ Software
▶ Zentrale Verwaltung
▶ Zentrales Update
▶ Auch „Server“-Software

BTS - Sasshofer 5
Was ist eine Linux Distribution?

Eine Linux-Distribution („Distro“) ist

▶ eine Sammlung von (meist freier) Software, die auf


▶ einem Linux-Kernel und GNU/Linux-Betriebssystem aufbaut und
typischerweise
▶ zahlreiche Anwendungen integriert sowie in der Regel
▶ ein komfortables Installationswerkzeug mitbringt.
▶ Sie wird von einer Entwicklergemeinschaft oder einer Firma
zusammengestellt und gewartet.

BTS - Sasshofer 6
Einige Distributionen

▶ Debian GNU/Linux – die „echteste“ Distribution →


Community
▶ Ubuntu Linux – „Shooting Star“, heute noch sehr
verbreitet, bunt, modern, aktuell!
▶ Erfolgreicher Ableger: Linux Mint (RPi 3!)
▶ Kommerzielle Distributionen (für Firmen):
▶ Suse Linux Enterprise
▶ Red Hat Enterprise Linux (→ CentOS)
▶ Community-Ableger der kommerziellen
Distributionen:
▶ OpenSuse
▶ Fedora
▶ Viele, viele (hunderte) kleinere und größere, teils
spezialisierte Distributionen!

BTS - Sasshofer 7
Live System auf USB/CD/DVD

▶ Starten eines Betriebssystems samt


Applikationsprogrammen ohne Installation
▶ Keine Veränderungen auf der Festplatte
▶ Nach dem Abschalten bzw. Neustarten ist „alles wieder
gut“
▶ Ideal zum Ausprobieren oder zum Reparieren bzw.
Datenrettung!
▶ ABER:
▶ CD/DVD : eher langsam (heute eher USB-Stick)
▶ keine Programmwahl (CD…)
▶ kein einfaches Speichern von eigenene Dateien (“alles
im RAM”)!

BTS - Sasshofer 8
Distribution: Ubuntu Linux

BTS - Sasshofer 9
Mark Shuttleworth

▶ Südafrikanischer Millionär
▶ 2002 erster Weltraumtourist
▶ Gründer und Sponsor von Ubuntu
▶ Firmeninhaber von Canonical
▶ Canonical versendete CDs gratis (bis 04 ’11)

BTS - Sasshofer 10
Ubuntu - Eigenschaften

▶ Linux-Distribution auf Debian Basis (Fork!)


▶ Gesponsert von Canonical Ltd.
▶ Benutzerfreundlichkeit im Vordergrund – aktuelle Hardware
▶ Auch Server-Variante
▶ Regelmäßig neue Versionen → Details:

4.10 Warty Warthog 2.6.8 13.10 Saucy Salamander 3.11


5.04 Hoary Hedgehog 2.6.10 14.04 Trusty Tahr 3.13-4-4
5.10 Breezy Badger 2.6.12 14.10 Utopic Unicorn 3.16
6.06 Dapper Drake 2.6.15 15.04 Vivid Vervet 3.19
6.10 Edgy Eft 2.6.17 15.10 Wily Werewolf 4.2
7.04 Feisty Fawn 2.6.20 16.04 Xenial Xerus 4.4-4.15
7.10 Gutsy Gibbon 2.6.22 16.10 Yakkety Yak 4.6
8.04 Hardy Heron 2.6.24 17.04 Zesty Zeppus 4.10
8.10 Intrepid Ibex 2.6.27 17.10 Artful Aardvark 4.13
9.04 Jaunty Jackalope 2.6.28 18.04 Bionic Beaver 4.15-5.0
9.10 Karmic Koala 2.6.31 18.10 Cosmic Cuttlefish 4.18
10.04 Lucid Lynx 2.6.32 19.04 Disco Dingo 5.0
10.10 Maverick Meerkat 2.6.35 19.10 Eoan Ermine 5.3
11.04 Natty Narwhal 2.6.38 20.04 Focal Fossa 5.4
11.10 Oneiric Ocelot 3.0 20.10 Groovy Gorilla 5.8
12.04 Precise Pangolin 3.2-13 21.04 Hirsute Hippo 5.11.0
12.10 Quantal Quetzal 3.5 21.10 Impish Idri
13.04 Raring Ringtail 3.8

BTS - Sasshofer 11
Ubuntu Long Term Support

▶ Releases alle 6 Monate


▶ Support für 9 Monate
▶ Releaseupgrade möglich
▶ LTS Version alle 2 Jahre (seit
2006)
▶ Support für 5 Jahre
▶ dazwischen
Punktziffernreleases
(Update Roll-Ups inkl.
Kernel-Updates)

BTS - Sasshofer 12
Ubuntu Installation

▶ Download der Pakete bzw. ISO-Image


▶ Früher: Bestellung der CD möglich (bis März 2011)!
▶ Verfügbare Architekturen
▶ Intel x86, AMD64
▶ PowerPC, SPARC, Itanium (IA64) (Server)
▶ ARM (RPi), Playstation 3
▶ Live CD/USB-Stick mit möglicher Installation
▶ Keine Paketauswahl bei Installation
▶ “Alternate Installer” (Text)

BTS - Sasshofer 13
Ubuntu Software-Komponenten

Software wird in 4 “Components” unterteilt:

Main Entsprechen Ubuntu-Lizenzanforderungen


Restricted Werden aufgrund der Wichtigkeit (Notwendigkeit)
unterstützt (gewartet), sind aber nicht unter freier Lizenz
(Beispiel Grafikkarten-Treiber)
Universe Breites Spektrum an freier Software - wird nicht vom
Ubuntu-Team unterstützt
Multiverse nicht freie Software - Programme die nicht in
vorangehenden Gruppen sind, aber als Debian Pakete
vorliegen

BTS - Sasshofer 14
Eigenschaften von Ubuntu

▶ Gnome 3 (angepasst), bis


17.04 Unity (Ubuntu eigen)
▶ LibreOffice
▶ Firefox/Thunderbird
▶ Paketverwaltung mit apt
▶ Software Center
▶ neu: Snap (nicht Flatpack
wie Fedora - aber
möglich)
▶ X.org (GDM seit 17.10 statt
LightDM als Display
Manager)
▶ update-manager / update
notifier
▶ Suspend to disk / RAM
▶ …
BTS - Sasshofer 15
Kubuntu

▶ Ubuntu + KDE
▶ Offizielle Ubuntu-Schiene
(→ Flavours)
▶ Installation und
Vorgehensweise wie Ubuntu
▶ www.kubuntu.org

BTS - Sasshofer 16
xubuntu

▶ Ubuntu + XFCE
▶ Offizielle Ubuntu-Schiene
▶ Installation und
Vorgehensweise wie Ubuntu
▶ www.xubuntu.org

BTS - Sasshofer 17
Linux Mint

▶ Aufbauend auf
Ubuntu-Grundgerüst mit
eigener, eleganter Optik
(Cinnamon, Mate)
▶ Volle Multimedia-
Unterstützung (Codecs,
Plug-Ins…) von Haus aus
▶ Aktuelle Version 20.1
Ulyssa (alphabetisch,
Ubuntu LTS seit 17)
▶ SW/Update-Manager
▶ Flavours (XFCE, KDE) ▶ Apropos → “Mate”
▶ Steigende Beliebtheit

BTS - Sasshofer 18
Distribution: openSUSE

▶ Erste Version erschien 1994


▶ Slackware-basiert
▶ Gesellschaft für Software und
Systementwicklung (Nürnberg)
▶ Erste offizielle S.u.S.E. Version
▶ 1996, Version 4.2
▶ OpenSUSE - ab Version 10.0 (2005)
▶ Aktuelle Version Leap 15.2 (Änderung von
42.1 nach 13.2)
▶ Übernahmen der SUSE Linux GmbH:
Novell, dann Attachmate (seit 2014 Micro
Focus), seit 2018 EQT Partners AB

BTS - Sasshofer 19
YaST – Yet another Setup Tool

▶ Bis 2004 proprietär


▶ Installations- und Konfigurationstool
▶ YaST – Textbasiert
▶ YaST2 – Grafisch
▶ Fast jegliche Konfiguration als YaST Modul verfügbar
▶ Paketmanagement: RPM/Zypper

BTS - Sasshofer 20
YaST – Yet another Setup Tool

BTS - Sasshofer 21
SUSE Linux Produkte

▶ openSUSE (ehem. SUSE Linux)


▶ Wird von der openSUSE Community mitentwickelt
▶ Zielgruppe: Privatpersonen
▶ Variante: Tumbleweed ~ Rolling Release für Enthusiasten
▶ Basiert auf SUSE Linux Enterprise Core
▶ SUSE Linux Enterprise Desktop (SLED) von Novell
▶ Namen der vorherigen Versionen waren: SUSE Linux Desktop und
Novell Linux Desktop (NLD)
▶ Zielgruppe: Unternehmen, die Support und lange Lebenszeit für
Desktopsysteme brauchen
▶ dzt. Version 15
▶ SUSE Linux Enterprise Server (SLES) von Novell
▶ Für Server geeignet
▶ Zielgruppe: Unternehmen

BTS - Sasshofer 22
openSUSE – Die Stärken

▶ KDE
▶ Yast
▶ Gute Hardware-Unterstützung
▶ Gut für Umsteiger, dennoch reich
konfigurierbar
▶ LSB-zertifiziert
▶ Große Software-Auswahl
▶ SUSE-Support-DB/OpenSUSE Wiki

BTS - Sasshofer 23
Distribution: Debian

▶ Am 16. August 1993 von Ian Murdock ins Leben gerufen


▶ über 1.000 „Mitarbeiter”
▶ Kein Firmenprojekt, sondern Community
▶ Paket Managementsystem APT (.deb, aptitude)
▶ Aktuelle Version 10 (Buster) seit 6.7.2019 (bald Bullseye)
▶ Vorher: 9 (Stretch), 8 (Jessie), 7 (Wheezy), 6 (Squeeze)
▶ z.Z. ca 60.000 Pakete

Gilt als sehr stabil, aber meist älterer Kernel (Buster: 4.19, Bullseye
5.10), Unterstützung aktueller HW nicht immer vorhanden

BTS - Sasshofer 24
Debian Paketanzahl

BTS - Sasshofer 25
Debian Veröffentlichungen

BTS - Sasshofer 26
Debian Architekturen

▶ 64-Bit-PC (AMD64)
▶ 32-Bit-PC (i386)
▶ EABI ARM (inkl. aarch64)
▶ PowerPC
▶ Hard Float ABI ARM
▶ SPARC
▶ Intel Itanium IA-64
▶ MIPS (Little endian)

BTS - Sasshofer 27
Debian Veröffentlichungen

stable zuletzt veröffentlichte Version - Pakete sehr gut getestet,


Updates schnell verfügbar
testing Kandidat für nächste Veröffentlichung - Programme relativ
aktuell (geeignet für Desktopeinsatz)
unstable neue Versionen von Paketen und auch Programme, die
neu in Debian aufgenommen wurden - werden geprüft
experimental “packages from here […] can be dangerous and harmful
even for the most experienced people”
oldstable stabile Version, nicht Letztstand aber noch innerhalb der
5-jährigen Supportperiode

BTS - Sasshofer 28
Debian Lebenszyklen

BTS - Sasshofer 29
Distribution: Fedora / RHEL

▶ Version 1: September 2003


▶ Trennung:
▶ Kommerziell: Red Hat Enterprise Linux
▶ Community Projekt: Fedora
▶ Aktuelle Version: RHEL 8.3 (3.11.2019), Fedora 34
▶ Gnome sowie → “Spins”
▶ enthält nur Programme, die vollständig unter freier Lizenz stehen
▶ „fortschrittliche Software und inhaltliche Freiheit“
▶ Veröffentlichung 6-monatig
▶ Support 13 Monate, keine Long Term Version

BTS - Sasshofer 30
RHEL Releases

BTS - Sasshofer 31
Fedora

▶ “Stabile” Distribution mit aktuellen Programmen und


Hardware-Unterstützung
▶ Fedora Workstation, Fedora Server, Fedora Cloud
▶ Updates
▶ zumeist nur kurz
▶ aber: nicht nur Bugfixes (so viel zu “stabil”)
▶ Installationssoftware: Anaconda – umfangreich, einfach und
langsam
▶ Paketmanagement RPM (Ursprung: RedHat)
▶ DNF (“Dandified YUM”) ersetzt YUM (“Yellowdog Update Manager“)

BTS - Sasshofer 32
Fedora Einsatzgebiete

▶ Vor allem im Serverbereich und Cloud


▶ Caveat emptor: Releasezyklen und -policy
▶ Sehr gute Unterstützung von Community
▶ Gut dokumentiert
▶ Wikipedia Server (ex – jetzt Ubuntu Server)
▶ Für Clientbereich (Workstation)
▶ Evtl. beschränkt durch 100% freie Software
▶ Aber Alternativquellen für SW vorhanden → RPM Fusion
▶ Sehr große Paketauswahl, daher für Neueinsteiger unübersichtlich
(graphische Software-Verwaltung rudimentär)
▶ Gnome/KDE + Spins
▶ Unterstützt aktuelle Hardware
▶ Eher weniger für absolute Einsteiger

BTS - Sasshofer 33
RHEL Derivate

Weitere auf Red Hat (Enterprise Linux) basierende


Distros:
▶ CentOS (aktuell: 7.9.2009 [3.10] bzw. 8.3.2011
[4.18])
▶ Sourcecode “ident”
▶ Enge Mitarbeit von RH in der Community
▶ Hohe Stabilität
▶ Langer Support - 10 Jahre
▶ 7 bis 2024, 6 (aus 2011) bis 2020
▶ Problem: CentOS 8 endet 2021, wird ”Stream!
(rolling Distro)
▶ “CentOS Ersatz”: Rocky Linux (Originalteam),
Alma Linux
▶ Oracle Linux

BTS - Sasshofer 34
Distribution: Gentoo Linux

▶ Keine vorkompilierten Programmpakete


▶ Installation (klassisch):
▶ Bootvorgang durch eine Net-Bootdisk
▶ Kompilieren des Kernel
▶ Auswahl der Programmpakete und
Kompilierung dieser
▶ Kompilierung erfolgt durch ein
distributionseigenes Paketmanagement
▶ Extrem gut angepasst an Umgebung, auch
bei schwächerer Hardware

BTS - Sasshofer 35
Paketmanager Portage

▶ Steuerprogramm emerge
▶ Sucht Abhängigkeiten
▶ Lädt Quellcode
▶ Kontrolliert Vollständigkeit des Quellcodes
▶ Lädt patches
▶ Kompiliert
▶ Installiert (incl. Man-Pages)
▶ Anpassung mittels USE-Flags
▶ Nicht versionsorientiert (versionless)

BTS - Sasshofer 36
Distribution: Kali Linux

▶ Die Distro für


Penetration Testing
▶ Enthält über 300
wesentliche Tools
▶ „Traum eines
Netzwerk-Hackers“
▶ Basiert auf Debian
▶ Herausgegeben von
Offensive Security
▶ Vorgänger:
BackTrack

BTS - Sasshofer 37
Distribution: Damn Small Linux

▶ Sehr kleine Distribution (< 50 MB)


▶ Funktioniert auf älteren Rechnern
▶ Integrierte Software
▶ Firefox
▶ Sylpheed
▶ xmms
▶ Naim (Instant Messenger)
▶ Netzwerkclients
▶ Texteditor
▶ Kann über Mini-USB-Stick
gebootet werden

BTS - Sasshofer 38
Distribution: Alpine Linux

▶ Kleine Distribution mit musl libc


und Busybox
▶ Security enhanced (PaX,
grsecurity)
▶ Eigene Paketverwaltung
(apk-tools)
▶ Besonders geeignet für Server in
Containern (min. 8MB!)
▶ Kann komplett im RAM laufen
▶ OpenRC Startup-System
▶ Viele Programme vorhanden
▶ Gnome, XFce, Firefox,…

BTS - Sasshofer 39
Nützliche Links

www.ubuntu.com openbook.rheinwerk-verlag.de/ubuntu
www.xubuntu.com www.rheinwerk-verlag.de/openbook
www.kubuntu.org www.fsf.org bzw. www.gnu.org
www.edubuntu.org www.wikipedia.org
www.opensuse.org www.opensource.org
www.redhat.com www.stallman.org
www.knoppix.org lwn.net/Gallery
www.gentoo.org www.debian.org
shop.linupfront.de/product/lxes/ www.damnsmalllinux.org
www.distrowatch.org

BTS - Sasshofer 40
BTS 14 - Shell 1

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Die Kommandozeile unter Linux

▶ Wird als „Shell“ bezeichnet


▶ Die Shell ist eines der vielen Programme einer Linux-Distribution
▶ Der „Prompt“ zeigt an, dass die Shell auf Befehle wartet
▶ benutzer@rechner:~#

BTS - Sasshofer 2
Befehle in der Shell

▶ Werden eingegeben und mit Enter bestätigt


benutzer@rechner:~#ls ← Befehl
Arbeitsfläche Dokumente Musik Vorlagen
Bilder Downloads Videos

▶ Können Optionen und Argumente haben


benutzer@rechner:~# ls -lh Dokumente/ ← Argument
insgesamt 12K Optionen
-rwxr-xr-x 1 benutzer gruppe 4K Nov 6 Linux.txt
-rwxr-xr-x 1 benutzer gruppe 4K Nov 6 ist.odt
-rwxr-xr-x 1 benutzer gruppe 4K Nov 6 toll.ods

BTS - Sasshofer 3
Optionen und Argumente

▶ Sind nicht immer notwendig


▶ Mehrere Optionen können zusammengefasst werden
▶ ls -l -h wird zu ls -lh
▶ Optionen verändern WIE das Programm etwas macht
▶ Vergleiche ls und ls -lh
▶ Die Option -lh zeigt erweiterte Informationen an
▶ Argumente verändern WOMIT das Programm etwas macht
▶ Vergleiche ls und ls Dokumente
▶ ls zeigt den Inhalt des aktuellen Verzeichnisses an
▶ ls Dokumente zeigt den Inhalt des Verzeichnisses „Dokumente“ an

BTS - Sasshofer 4
Allgemeines zu Befehlen

▶ Groß- und Kleinschreibung ist wichtig


▶ Tab-Completion nutzen, um Tippfehler zu vermeiden
▶ Viele Befehle dienen der Dateiverwaltung
▶ Argumente sind häufig Dateien oder Verzeichnisse

BTS - Sasshofer 5
History

▶ History: speichert ausgeführte Kommandos


▶ mit ↑ und ↓ können Kommandos erneut ausgeführt werden, ohne
sie wieder einzugeben

▶ Einträge in der History können auch verändert werden: nützlich bei


Tippfehlern

▶ mit Strg-R kann man die History rückwärts durchsuchen

BTS - Sasshofer 6
Wichtige Steuerungszeichen

▶ Strg-D beendet die Shell/Ende der Eingabe bei manchen


Programmen
▶ Strg-C beendet lang laufende Programme
▶ Strg-W löscht das Wort vor dem Cursor
▶ Strg-U löscht alles vor dem Cursor
▶ Strg-V ermöglicht es, ein Steuerungszeichen oder Tab einzugeben

BTS - Sasshofer 7
Die Unix-Philosophie

▶ Es gibt viele kleine Programme


▶ Können die jeweiligen Aufgaben gut lösen
▶ Komplexe Aufgaben werden durch Verknüpfen dieser gelöst
▶ Wichtiges Paradigma: „Everything is a File“
▶ Alles ist eine Datei, auch Verzeichnisse
▶ Keine Registry, Systemsteuerung, etc.

BTS - Sasshofer 8
Absolute und relative Pfade

▶ Pfade zu Dateien und Verzeichnissen können auf verschiedene


Arten angegeben werden

▶ Absoluter Pfad: vom Wurzelverzeichnis / ausgehend


▶ /home/linux-kurs/Bilder/tux.png

▶ Relativer Pfad: relativ zum aktuellen Verzeichnis


▶ aktuelles Verzeichnis: /home/linux-kurs
▶ Dann relativ dazu:
▶ Bilder/tux.png
▶ ergibt auch /home/linux-kurs/Bilder/tux.png

BTS - Sasshofer 9
Verzeichnisse

▶ Absoluten Pfad des aktuellen Verzeichnisses ausgeben: pwd („Print


Working Directory“)

▶ Aktuelles Verzeichnis: .
▶ Eltern-Verzeichnis des aktuellen Verzeichnisses: ..
▶ Home-Verzeichnis: ~
▶ Kombination mit relativen Pfaden:
▶ ~/Bilder/tux.png
▶ ../irgend/wo/anders/notizen.txt

BTS - Sasshofer 10
Übersicht

▶ ls : Verzeichnisinhalt auflisten
▶ cd : Verzeichnis wechseln
▶ mkdir und rmdir : Verzeichnisse anlegen und löschen
▶ rm : Dateien löschen
▶ mv : Dateien und Verzeichnisse verschieben
▶ cp : Dateien und Verzeichnisse kopieren

BTS - Sasshofer 11
Sonderzeichen in Dateinamen

▶ bestimmte Zeichen haben für die Shell eine Sonderbedeutung (z. B.


Globs oder das Leerzeichen)
▶ können nicht einfach so als Dateinamen verwendet werden
▶ müssen „escaped“ werden: \ vor das Sonderzeichen stellen
▶ oder: den Dateinamen in Anführungszeichen setzen
▶ ls Komischer\ Date\*name oder
ls "Komischer Date*name"
▶ Verwendung in Dateinamen nicht zu empfehlen!

BTS - Sasshofer 12
Globs

▶ Wildcard/Platzhalter, z.B. ? , * , […]


▶ spezielle Zeichen, die mit mehreren Zeichen übereinstimmen
▶ nützlich, um mehrere Dateien gleichzeitig zu verarbeiten (kopieren,
löschen, etc.)
▶ ?: genau ein beliebiges Zeichen (außer . als erstes Zeichen)
▶ *: beliebig viele Zeichen, auch keins (außer . als erstes Zeichen)
▶ [...]: eines der angegebenen Zeichen
(z. B. [avx] oder [a-z] )
▶ [!...]: ein nicht angegebenes Zeichen
(z. B. [!a] - alles außer a, A schon! - bzw.
[!a-x] - also y, z, A, B, etc., Ziffern, Satzzeichen,…)

BTS - Sasshofer 13
Beispiele zu Globs

▶ a?c: passt z. B. auf abc, a.c, a?c, a0c, aDc aber nicht auf
adec
▶ a*c: passt z. B. auf abc, a?c, a0c, adec, aaaaaac
▶ a[xyz]c: passt nur auf axc, ayc und azc
▶ a[a-z]c: passt z. B. auf aac, axc, je nach Spracheinstellung
auch Großbuchstaben
▶ a[0-9]c: passt z. B. auf a0c, a3c, a9c
▶ Kombination mehrerer Globs auch möglich:
▶ a[bc][de]f: passt auf abdf, acdf, abef,acef

BTS - Sasshofer 14
ls

▶ ls („list“) listet den Verzeichnisinhalt auf


▶ wichtige Optionen:
▶ -a : Versteckte Dateien anzeigen
▶ -l : Weitere Informationen ausgeben
▶ -h : Dateigröße in lesbaren Einheiten anzeigen
▶ Argumente:
▶ Optional ein oder mehrere Verzeichnisse, standardmäßig wird das
aktuelle Verzeichnis verwendet

BTS - Sasshofer 15
ls

▶ Versteckte Dateien/Verzeichnisse beginnen mit einem .


▶ Die Option -l zeigt zusätzlich Dateirechte, Besitzer, Größe und
Änderungsdatum an
▶ Dateigrößen werden normalerweise in Bytes angezeigt
▶ Weitere Optionen: Siehe Manpage (man ls)

BTS - Sasshofer 16
cd

▶ cd („change directory“): in ein anderes Verzeichnis wechseln


▶ keine wichtigen Optionen
▶ Argument: Verzeichnis, in das gewechselt werden soll
▶ Angabe als relativer oder absoluter Pfad
▶ ~ , . und .. können im Pfad benutzt werden
▶ cd - wechselt in das vorherige Verzeichnis
▶ Wird kein Argument angegeben, wechselt cd ins Home-Verzeichnis
(entspricht cd ~ )

BTS - Sasshofer 17
mkdir und rmdir

▶ mkdir („make directory“): legt Verzeichnisse an


▶ rmdir („remove directory“): löscht leere Verzeichnisse
▶ wichtige Option:
▶ -p legt Elternverzeichnisse automatisch an/löscht diese, falls leer
▶ Argumente:
▶ Verzeichnisse, die angelegt/gelöscht werden sollen

BTS - Sasshofer 18
mkdir und rmdir

▶ Beispiele:
▶ mkdir Dokumente/Studium/Linuxkurs1
▶ Das Verzeichnis „Dokumente/Studium/“ muss existieren
▶ mkdir -p Dokumente/Studium/Linuxkurs1
▶ „Dokumente/Studium/Linuxkurs1“ wird angelegt, existieren seine
Elternverzeichnisse noch nicht werden diese ebenfalls angelegt
▶ rmdir Dokumente/Studium/Linuxkurs1
▶ Verzeichnis „Linuxkurs1“ aus dem Verzeichnis
„Dokumente/Studium/“ löschen

BTS - Sasshofer 19
rm

▶ rm („remove“): löscht Dateien und Verzeichnisse


▶ wichtige Optionen:
▶ -r oder -R : löscht Verzeichnisse mit Inhalt rekursiv
▶ -f : überhaupt keine Fragen stellen (z. B. bei schreibgeschützten
Dateien)
▶ -i : vor dem Löschen jeder einzelnen Datei nachfragen
▶ Argumente: beliebig viele Dateien und/oder Verzeichnisse

BTS - Sasshofer 20
rm

▶ Achtung: rm löscht Dateien unwiederbringlich ohne Nachfrage!


▶ Verzeichnisse können nur mit der Option -r gelöscht werden
▶ Löscht zuerst alle Dateien im angegebenen Verzeichnis und dessen
Unterverzeichnisse
▶ Anschließend werden leere Verzeichnisse gelöscht
▶ rm -rf ist besonders gefährlich
▶ Löscht das Verzeichnis samt Inhalt ohne Nachfrage

BTS - Sasshofer 21
Dateien anlegen

▶ normalerweise werden Dateien angelegt, wenn man etwas darin


speichert
▶ zu Testzwecken kann auch touch verwendet werden
▶ touch setzt eigentlich das Änderungsdatum der Datei auf das
aktuelle Datum
▶ nicht existente Dateien werden leer angelegt

BTS - Sasshofer 22
mv

▶ mv („move“) verschiebt Dateien und Verzeichnisse


▶ wichtige Optionen:
▶ -b : legt Sicherungskopien an, wenn Dateien überschrieben werden
▶ -i : fragt vor dem Überschreiben nach
▶ Argumente:
▶ zwei Dateiennamen: Datei wird umbenannt
▶ beliebig viele Dateien/Verzeichnisse und Verzeichnis als letztes
Argument: Dateien werden in das Verzeichnis verschoben

BTS - Sasshofer 23
mv

▶ Beispiele:
▶ mv geheim unwichtig
▶ Datei „geheim“ in „unwichtig“ umbenennen
▶ mv shell1/ shell2/ Teilnehmer.txt VL/
▶ Verzeichnisse „shell1“ und „shell2“, sowie „Teilnehmer.txt“ in das
Verzeichnis „VL“ verschieben

BTS - Sasshofer 24
cp

▶ cp („copy“) kopiert Dateien und Verzeichnisse


▶ wichtige Optionen:
▶ -r oder -R : kopiert Verzeichnisse rekursiv
▶ Argumente:
▶ zwei Dateinamen: Kopie der Datei wird angelegt
▶ beliebig viele Dateien/Verzeichnisse und Verzeichnis als letztes
Argument: Dateien werden in das Verzeichnis kopiert
▶ Verzeichnisse mit Inhalt müssen rekursiv kopiert werden weitere
Optionen: siehe Manpage (man cp)

BTS - Sasshofer 25
nano

▶ sehr einfach zu bedienender Komandozeilen-Texteditor


▶ optionales Argument: Dateiname
▶ wenn die Datei nicht existiert, wird sie angelegt
▶ vorhandene Datei wird geladen
▶ Speichern mit Strg-O, Beenden mit Strg-X
(^ entspricht Strg)

BTS - Sasshofer 26
vi / vim

▶ Der “klassische” Unix/Linux-Editor


▶ Viele Kommandos
▶ 3 Modi
▶ Normalmodus (beim Start)
▶ Tasten als Kommandos, kein Einfügen
▶ #G gehe zu Zeile #, G ans Ende
▶ dd löscht Zeile
▶ Kommandomodus
▶ Start mit : Kommandos mit «Enter» abschließen
▶ :q! Panikausgang ohne Speichern
▶ :x Beenden mit Speichern
▶ Einfügemodus
▶ Starten mit i, a, I, “
▶ Verlassen mit «ESC»
▶ Cheat Sheet

BTS - Sasshofer 27
Spickzettel

Befehl Optionen Funktion

pwd Gibt aktuelles Verzeichnis aus


ls -a , -l , -h Verzeichnisinhalte auflisten
cd Verzeichnis wechseln
mkdir -p Verzeichnisse anlegen
rmdir -p Leere Verzeichnisse löschen
rm -r / -R , -f Dateien/Verzeichnisse löschen
touch Leerer Dateien anlegen
mv -b , -i Dateien/Verzeichnisse verschieben
cp -r / -R Dateien/Verzeichnisse kopieren
nano Ein Texteditor
vi Ein besserer Texteditor

BTS - Sasshofer 28
BTS 15 - Shell 2

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Übersicht - Dateiinhalte anzeigen

▶ cat : Dateiinhalte auf die Shell ausgeben


▶ less : Dateiinhalte seitenweise anzeigen
▶ head und tail : Anfang/Ende einer Datei ausgeben

BTS - Sasshofer 2
cat

▶ cat („concatenate“): gibt den Inhalt von Dateien direkt auf die
Shell aus
▶ Wichtige Optionen:
▶ -A: nicht darstellbare Zeichen (Tabs, Zeilenumbrüche, etc.) werden
durch Ersatzzeichen dargestellt
▶ Argumente: eine oder mehrere Dateien
▶ Mehrere Dateien werden zusammenhängend ausgegeben

BTS - Sasshofer 3
less

▶ less: zeigt den Inhalt einer Datei passend auf


Bildschirm-/Terminalgröße an
▶ Ermöglicht zeilenweises Scrollen mit den Pfeiltasten und
seitenweises mit Bild-Auf/-Ab oder b/Leertaste
▶ Pos1 und Ende springt zum Anfang bzw. zum Ende
▶ Suchen mit /muster (nach unten) oder ?muster (nach oben)
▶ Weitersuchen mit n (gleiche Richtung) oder N (andere Richtung)
▶ Beenden mit q

BTS - Sasshofer 4
head

▶ head : gibt den Anfang einer Datei aus


▶ Wichtige Optionen:
▶ -n Zahl : gibt soviele Zeilen aus wie angegeben, standardmäßig 10
Zeilen
▶ Argumente: eine oder mehrere Dateien

BTS - Sasshofer 5
tail

▶ tail : gibt das Ende einer Datei aus


▶ Wichtige Optionen:
▶ -n Zahl : gibt soviele Zeilen aus wie angegeben, standardmäßig 10
Zeilen
▶ -f : wartet darauf, dass neue Zeilen in die Datei geschrieben werden
und gibt diese dann fortlaufend aus
▶ Abbruch mit Strg-C
▶ Argumente: eine oder mehrere Dateien

BTS - Sasshofer 6
Pipes

▶ Unix-Philosphie: Viele kleine Programme, die eine Aufgabe gut


erfüllen
▶ Komplexere Aufgaben durch Kombination mehrerer Programme
▶ Pipes (engl. für Rohre) ermöglichen Umleitung der Ausgabe eines
Programms in ein anderes Programm
▶ „Pipelines“

BTS - Sasshofer 7
Pipes – Beispiele

▶ ls -lha | less
▶ Zeigt alle Dateien, Verzeichnisse und deren Unterverzeichnisse mit
Zusatzinformationen an
▶ Die Ausgabe kann mit less seitenweise betrachtet und durchsucht
werden
▶ tail -n 42 /var/log/syslog | head -n 12 | less
▶ Zeigt von den letzten 42 Zeilen der Datei „/var/log/syslog“ nur die
ersten 12 an
▶ Die Ausgabe kann mit less betrachtet werden

BTS - Sasshofer 8
Ein-/Ausgabe in Dateien

▶ Ausgabe von Befehlen kann in Dateien umgeleitet werden


▶ Eingabe für Befehle kann aus Dateien gelesen werden
▶ „Trichter“: „ < “ und „ > “ bzw. „ >> “
▶ „ < “ liest die Eingabe aus einer Datei
▶ „ <<< “ nimmt den folgenden Text als Eingabe
(statt echo xxx | cmd)
▶ „ > “ überschreibt den Inhalt einer Datei mit der Ausgabe
▶ „ >> “ hängt die Ausgabe an den Inhalt einer Datei an

BTS - Sasshofer 9
Ein-/Ausgabe in Dateien

▶ Beispiele
▶ ls -la > liste
▶ Datei liste enthält Auflistung des Inhalts des aktuellen
Verzeichnisses
▶ Wenn die Datei bereits existiert, wird sie überschrieben
▶ ls -la / >> rootliste
▶ Datei rootliste enthält Auflistung des Inhalts des Verzeichnisses
/
▶ Wenn die Datei bereits existiert: Auflistung wird an das Ende der
Datei angefügt
▶ Wenn nicht wird sie angelegt

BTS - Sasshofer 10
Standard-Kanäle

▶ Verschiedene Kanäle für Ein- und Ausgabe


▶ Standardausgabe (stdout): Normale Ausgabe
▶ Standardfehlerausgabe (stderr): Fehlermeldungen
▶ Standardeingabe (stdin): Eingabe
▶ Normalerweise: stdout und stderr werden beide auf die Shell
ausgegeben
▶ Normale Ausgabe und Fehlermeldungen können getrennt werden
▶ Nützlich bei Programmen mit sehr viel Ausgabe

BTS - Sasshofer 11
Standard-Kanäle – Umleitungen

▶ programm > /dev/null


▶ Leitet normale Ausgabe nach /dev/null um (wird verworfen)
▶ nur Fehler werden ausgegeben
▶ „Normale“ Umleitungen ( > , >> , | ) leiten nur
Standardausgabe um
▶ Fehlerausgabe in Datei umleiten: 2>
▶ Fehlerausgabe in Standardausgabe umleiten: 2>&1
▶ Notwendig, um Fehlerausgabe in Pipelines umzuleiten: 2>&1 |

BTS - Sasshofer 12
Umleitungen – Reihenfolge

▶ Standard- und Fehlerausgabe in Datei umleiten: Erst stdout in


Datei, dann stderr in stdout
▶ Beispiel: ls /etc /root > liste 2>&1
▶ ls /etc /root 2>&1 > liste gibt im Gegensatz dazu Fehler
im Terminal aus
▶ Fehlerausgabe mit in Pipe: Erst stderr in stdout umleiten, dann
Pipe
▶ Beispiel: cat /etc/shadow /etc/passwd 2>&1 | grep root

BTS - Sasshofer 13
Übersicht - Text verarbeiten

▶ sort : Text sortieren


▶ cut : Spalten aus Text ausschneiden
▶ wc : Zählt Wörter oder Zeilen

BTS - Sasshofer 14
sort

▶ sort : sortiert Text abhängig von der Spracheinstellung des


Systems
▶ Wichtige Optionen:
▶ -u („unique“): vereint mehrfach vorkommende Zeilen
▶ -r („reverse“): dreht die Sortierreihenfolge um
▶ Argumente: eine oder mehrere Dateien
▶ Bei mehreren Dateien werden diese zusammen sortiert

BTS - Sasshofer 15
cut

▶ cut : Schneidet Spalten aus Texten heraus


▶ Wichtige Optionen:
▶ -c <LISTE> („character“): schneidet die in LISTE angegebenen
Zeichen heraus
▶ -f <LISTE> („field“): schneidet die in LISTE angegebenen Felder
heraus
▶ -d <TRENN> („delimiter“): TRENN gibt das Trennzeichen zwischen
den Spalten an
▶ LISTE: kann eine Zahl oder ein Zahlenbereich sein
▶ Argumente: eine oder mehrere Dateien

BTS - Sasshofer 16
cut

▶ Beispiele
▶ cut -d : -f 5 /etc/passwd
▶ Gibt die langen Namen aller Benutzer des Systems aus
▶ ls -lh | cut -c 55I
▶ Gibt alles ab dem 55. Zeichen von ls -lh aus

BTS - Sasshofer 17
wc

▶ wc („word count“) zählt Zeilen, Worte und Bytes


▶ Wichtige Optionen:
▶ -m („characters“): zählt nur Zeichen
▶ -l („lines“): zählt nur Zeilen
▶ -w („words“): zählt nur Worte
▶ Argumente: eine oder mehrere Dateien

BTS - Sasshofer 18
wc

▶ Beispiele
▶ ls -A | wc -l
▶ Gibt die Anzahl der Dateien und Verzeichnisse im aktuellen
Verzeichnis an
▶ wc -w /usr/share/common-licenses/GPL-3
▶ Gibt die Anzahl der Wörter der GPLv3-Lizenz aus

BTS - Sasshofer 19
Spickzettel

Befehl Optionen Funktion

cat -A Dateiinhalte ausgeben


less (/muster, n, N, q) Dateiinhalte seitenweise anzeigen
head -n Anfang einer Datei ausgeben
tail -n, -f Ende einer Datei ausgeben
sort -u, -r Text sortieren
cut -c, -f, -d Spalten aus Text ausschneiden
wc -m, -l, -w Zählt Wörter od. Zeilen

BTS - Sasshofer 20
BTS 16 - Pipes Redirection and RegEx

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Command Line Pipes

▶ The pipe character ( | ) can be used between two commands to


send the output of the first as input to the second:
▶ ls /etc | head
▶ The output of ls /etc is sent to head as input.

BTS - Sasshofer 2
Command Line Pipelines

▶ Multiple commands can be combined to form pipelines. The order


in which commands are added to the pipeline can affect the output:

BTS - Sasshofer 3
I/O Redirection

▶ Three Input/Output (I/O) streams associated with every command:


▶ Standard Input (STDIN) is normally provided by the user via the
keyboard.
▶ Standard Output (STDOUT) is the output produced by the command
when operating correctly.
STDOUT normally appears in the same window as where command
executed.
▶ Standard Error (STERR) is the is the output produced by the
command when an error has occurred.
STDERR normally appears in the same window as where command
executed.

BTS - Sasshofer 4
I/O Redirection Symbols

▶ Summary of redirection possible with the bash shell:


▶ < /path/to/file (Redirect STDIN from file)
▶ > /path/to/file (Redirect STDOUT overwriting file)
▶ >> /path/to/file (Redirect STDOUT appending file)
▶ 2> /path/to/file (Redirect STDERR overwriting file)
▶ 2>> /path/to/file (Redirect STDERR appending file)
▶ &> /path/to/file (Redirect STDERR and STDOUT overwriting file)
▶ &>> /path/to/file (Redirect STDERR and STDOUT appending file)

BTS - Sasshofer 5
The null device

▶ The null device is represented by the /dev/null file. (Otherwise


known as the “Bit Bucket”)
▶ This file is very useful in redirection of input and output.
▶ This file serves two purposes:
▶ any output redirected to /dev/null is discarded.
▶ /dev/null can be used for input to provide a stream of null values.

BTS - Sasshofer 6
STDIN or 0

▶ Standard Input (STDIN) normally is provided by the keyboard but


can be redirected with the < symbol.
▶ STDIN can be read by programs to get data for them to process.
▶ To signal a program that you wish to stop providing data by the
keyboard via STDIN, type CTRL-D.
▶ The tr command reads its data from STDIN. It translates from one
set of characters to another.
▶ If you were the user typing the data to be translated by the tr
command, you would type CTRL-D when finished.

BTS - Sasshofer 7
STDIN from keyboard

▶ In the following example, the tr command translates from


lowercase to uppercase after the user typed the command and
pressed Enter.
▶ Then, “alpha” was typed and Enter pressed. Finally, the user typed
CTRL-D.

BTS - Sasshofer 8
Redirecting STDIN from file

▶ The tr command translates from lowercase to uppercase with


STDIN being redirected from the /etc/hosts file:

BTS - Sasshofer 9
STDOUT or 1

▶ Standard Out (STDOUT) is the output from the command when


operating correctly.
▶ It is usually displayed in the same window where the command is
executed.
▶ The echo command is used to print messages to STDOUT.
▶ It can be used to demonstrate how STDOUT can be redirected, as
shown on the following slide.

BTS - Sasshofer 10
Redirecting STDOUT

▶ In the example below, the echo Linux 1 command is executed


and the output appears on STDOUT.
▶ Then, the echo Linux 1 > a.txt command redirects the output
to the file a.txt.
▶ Finally, the command cat a.txt sends the file contents to
STDOUT, so the output is shown.

BTS - Sasshofer 11
Appending STDOUT redirection

▶ Using a single arrow > for STDOUT redirection will clobber, or


overwrite, the file specified.
▶ Using the double arrow >> for STDOUT redirection will either create
a new file or append an existing one:

BTS - Sasshofer 12
STDERR or 2

▶ Standard Error (STDERR) is the output of a command after an error


has occurred.
▶ It is normally sent to the console/terminal where the command is
executed.
▶ ls /fake is a command that will cause an error to be output to
STDERR because the /fake file does not exist.

BTS - Sasshofer 13
Redirecting STDERR

▶ ls /fake 2> /tmp/err.msg is a command that would cause an


error to be sent to STDERR which is then redirected to the
/tmp/err.msg file.
▶ The cat /tmp/err.msg command sends the contents of the file
to STDOUT to display the file:

BTS - Sasshofer 14
Disposing of STDERR

▶ ls /fake 2> /dev/null is a command that would cause


STDERR to be redirected to the /dev/null file, in effect disposing
of the error message.
▶ Notice cat /dev/null displays no visible output.

BTS - Sasshofer 15
Working with STDERR and STDOUT

▶ find is a command that searches the filesystem.


▶ It sends output to STDOUT when it successfully locates a file that
matches your criteria.
▶ It sends output to STDERR when it fails to access a directory.
▶ The find command will be used to demonstrate redirecting both
STDOUT and STDERR on the following slides.
▶ More detail about the find command appears later in this chapter.

BTS - Sasshofer 16
STDERR and STDOUT Example

▶ The following example demonstrates the find command searching


recursively the /etc/pki directory for any files matching ”*.crt”.
▶ Two lines of STDERR and two lines of STDOUT messages appear:

BTS - Sasshofer 17
Isolating STDERR

▶ In the next example, the STDOUT output is redirected to the


/dev/null file, so the STDERR output alone is sent to the terminal
window:

BTS - Sasshofer 18
Isolating STDOUT

▶ In the next example, the STDERR output is now redirected to


/dev/null file, so the STDOUT output alone is sent to the terminal
window:

BTS - Sasshofer 19
Redirecting Multiple Streams Separately

▶ In the next example, the STDERR output is sent to the crt.err file
and the STDOUT output is sent to the crt.txt file:

BTS - Sasshofer 20
Redirecting Multiple Streams Combined

▶ In this example, both STDOUT and STERR are redirected into the
same file, crt.all:

BTS - Sasshofer 21
Searching with find command

▶ The filesystem has hundreds of directories with thousands of files


making finding files challenging.
▶ The find command is a powerful tool to be able to search for files
in different ways including:
▶ name
▶ size
▶ date
▶ ownership

BTS - Sasshofer 22
Syntax of find command

▶ The find command has the following syntax:


▶ find [start_dir] [search_op] [criteria] [result]

▶ If the starting directory (start_dir) is not specified, then the current


directory is assumed.

▶ The search option (search_op) is how the search will be done. For
example, use the -name option to search by name.

BTS - Sasshofer 23
Syntax of find command (cont’d)

▶ The search criteria (criteria) is the data to be used with the search
option. So, if the search option was -name, then the search criteria
would be the name of the file to find.

▶ The result option (result) defaults to -print, which will output the
names of the files that are found. Other result options can perform
actions on the files that are found.

BTS - Sasshofer 24
Searching by file name

▶ Consider the following command:


▶ find /etc/pki -name "*.crt"
▶ Begins searching recursively from the /etc/pki directory
▶ Output any file names that match ”*.crt” (anything that ends in
”.crt“).

BTS - Sasshofer 25
Displaying file detail

▶ The option -ls will create output similar to the ls -l command.


(show both)
▶ The columns output are: inode, blocks used, permissions, link
count, user owner, group owner, size, date/time, and file name.

BTS - Sasshofer 26
Searching by file size

▶ The -size option can be used by find to search by its size.


▶ Large units can be specified as K, M, G, etc.
▶ Using +1M means more than one megabyte.
▶ Using -1M means less than one megabyte.

BTS - Sasshofer 27
Useful options for find command

BTS - Sasshofer 28
less Command

▶ Viewing files with less command


▶ The less command is a pager command designed to display only
one page of data at a time.
▶ The more command is another pager command that has less
features than the less command.
▶ Both commands allow the user to move back and forth with
movement commands to view one page at a time.

BTS - Sasshofer 29
The help screen in less

▶ Once in the less program, pressing the “h” key will display the help
screen:

BTS - Sasshofer 30
less movement commands

▶ As seen in the help screen, the less command has many


movement commands. The most common commands are:

BTS - Sasshofer 31
less searching commands

▶ Type / to search from cursor to end of file.


▶ Type ? to search from cursor to beginning of file.
▶ Type pattern to search and press Enter.
▶ If more than one match found, press n to go to next match or N to
go to previous match.

BTS - Sasshofer 32
Filtering with head

▶ The head command displays the first ten lines of a file by default.
▶ The -n option allows for the number of lines to be displayed to be
specified.

BTS - Sasshofer 33
head with negative lines

▶ Normally the head command displays the number of lines specified


from the top of the file.
▶ Using -n with a negative value, indicates how many lines from the
bottom to not show.
▶ This example shows all lines from /etc/passwd except the last
thirty-two.

BTS - Sasshofer 34
Filtering with tail

▶ The tail command displays the last ten lines of a file by default.
▶ The -n option allows for the number of lines to be displayed to be
specified:

BTS - Sasshofer 35
tail with positive lines
▶ If the -n option specifies the number of lines to be displayed with a
plus (+) prefix, then the tail command interprets that to mean to
display from that line number to the end of the file:

#Following with tail

▶ The tail command is able to monitor changes a file and print them
out as they occur by using -f option.
▶ System administrators frequently follow log files in order to
troubleshoot system problems.
▶ The user must terminate the tail command when following with
the –f option by using CTRL-C.
BTS - Sasshofer 36
Sorting files or input

▶ The sort command will rearrange its output lines according to one
or more fields you specify for sorting.
▶ Fields are separated by whitespace, although with the –t option,
you can specify the delimiter.
▶ The default fields (keys) to sort are all from the first, but you can use
the -k option to select specific fields
▶ The default sort is in ascending order, but you can use the -r option
to reverse the sorting of a field.
▶ The default sort is a dictionary sort, but you can use the -n option
to make it a numeric sort.

BTS - Sasshofer 37
Example of sort

▶ In the following example, the /etc/passwd file is sorted using a :


character as a delimiter, by the fourth field numerically and then the
third field numerically in reverse:

BTS - Sasshofer 38
File statistics with wc command

▶ The wc command outputs up to three statistics for each file it is


given as an argument.
▶ By default, wc displays the lines, words and bytes contained in each
file.
▶ If provided more than one file, then it also calculates the totals of all
files.
▶ To view individual statistics, specify -l for lines, -w for words or -c
for bytes.

BTS - Sasshofer 39
Example of wc command

▶ To analyze the number of lines, words and bytes in the /etc/passwd


and /etc/passwd- files, the following wc command could be
executed:

BTS - Sasshofer 40
Using wc with pipes

▶ The wc command is often used with pipes so that the output of a


command can be analyzed.
▶ Using wc -l as the final command in the pipe will count how many
lines of output was produced.
▶ For example, to determine how many files and directories are in the
/etc directory, you could execute: ls /etc | wc -l

BTS - Sasshofer 41
Filtering with cut command

▶ If you want to extract columns of text, then the cut command


provides two simple techniques:
▶ By delimiter, where whitespace is the default. The -d option can let
you specify other delimiters and -f is used to indicate which fields
to extract.
▶ By character position, using the -c option with the range of the
column to extract.

BTS - Sasshofer 42
Example of cut command

▶ The /etc/passwd file is delimited by colon with these fields:


account:password:UID:GID:GECOS:directory:shell
▶ To extract the first, and fifth through seventh fields:
▶ cut –d: -f1,5-7 /etc/passwd

BTS - Sasshofer 43
Filtering with grep command

▶ The grep command can be used to filter standard input or the


contents of a file for lines matching a specified pattern.
▶ If you want to see where a pattern, or perhaps a word, appears
within a file, then the grep command is useful for that purpose.

BTS - Sasshofer 44
Common grep options

BTS - Sasshofer 45
Basic Regular Expressions

▶ Basic Regular Expressions (BRE) are able to be used with the grep
command without requiring an option to use them (unlike Extended
Regular Expression show later).
▶ The simplest regular expressions are just alphabetic or numeric
characters that match themselves.
▶ The backslash \ can be used to escape the meaning of regular
expression meta-characters, including the backslash itself.

BTS - Sasshofer 46
BRE: the . example

▶ The . (period) character matches exactly one character.


▶ The example below shows the grep command matching the ‘a’
followed by two characters.
▶ The results show it matched ‘abc’.

BTS - Sasshofer 47
BRE: the [ ] example

▶ The [ ] (brackets) characters are used to match exactly one


character.
▶ The characters can be listed or given as a range.
▶ If the first character listed is ^ (caret), then it means not the
characters bracketed.

BTS - Sasshofer 48
BRE: the * example

▶ The * (asterisk) character will match zero or more of the previous


character.
▶ Matching ”a*” is not very useful because it might match zero a’s
(matches every line).
▶ Matching ”abcd*” would be more useful, since you would need an
“abc” followed by zero or more d’s.

BTS - Sasshofer 49
BRE: the ^ example

▶ The ^ (caret) character, when appearing at the beginning of the


pattern, means that pattern must appear at the beginning of the
line.
▶ The ^ not at the beginning of a pattern matches itself.

BTS - Sasshofer 50
BRE: the $ example

▶ The $ (dollar sign), when appearing at the end of the pattern, means
that pattern must appear at the end of the line.
▶ The $ not at the beginning of a pattern matches itself.

BTS - Sasshofer 51
BRE: Combining ^ and $

▶ Combining both the ^ and $ characters allows for two special


matches:
▶ ‘^$’ is a blank line match.
▶ ’^pattern$ matches if the whole line contains only the ”pattern“.

BTS - Sasshofer 52
Extended Regular Expressions

▶ The use of Extended Regular Expressions (ERE) requires the -E


option when using the grep command or using gthe egrep (fgrep
would ignore all regular expressions and match fixed strings).
▶ Extended Regular Expressions can be combined with Basic Regular
Expressions.
▶ The following are ERE characters: ?, +, and |

BTS - Sasshofer 53
ERE: the + example

▶ The + (plus) character will match one or more of the previous


character.
▶ Matching “a+” is useful because it can match one or more a’s,
ensuring only lines that have at least one “a” are matched.

BTS - Sasshofer 54
ERE: the ? example

▶ The ? (question mark) character will optionally match one of the


previous character.
▶ The ? character is useful for matching characters that only
occasionally appear in a word. The following example illustrates
this:

BTS - Sasshofer 55
ERE: the | example

▶ The | (vertical bar) character will act like an “or” operator between
two regular expressions.
▶ This alternation operator is useful to be able to match multiple
patterns:

BTS - Sasshofer 56
The xargs command

▶ The xargs command helps complex piped command sets execute


more efficiently
▶ It attempts to build the longest command line possible with as
many arguments as possible
▶ It tries to prevent executing the command each time for every
argument

BTS - Sasshofer 57
BTS 17 - File Locations and Links

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Filesystem Hierarchy Standard

▶ FHS is a set of rules or guidelines that are recommended to be


followed for how to organize the directories and files.
▶ Hosted at http://www.pathname.com/fhs
▶ Each system directory is categorized:
▶ Shareable on the network for use by multiple machines or not
▶ Having files that have content that changes (variable) or not (static)
▶ To classify the system directories, it is often necessary to use
directories below the top level.

BTS - Sasshofer 2
Filesystem Hierarchy Standard

▶ The Filesystem Hierarchy Standard defines four hierarchies:


▶ The root (/) filesystem or top level directories:
▶ Must be able to boot, recover, restore or repair the system
▶ Must be able to mount the other filesystems
▶ The /usr hierarchy:
▶ Contains most of the user commands under /usr/bin
▶ This static directory can be normally be shared
▶ The /usr/local hierarchy:
▶ The location for locally installed software
▶ The /var hierarchy:
▶ Contains variable data

BTS - Sasshofer 3
Filesystem Hierarchy Standard

BTS - Sasshofer 4
Filesystem Hierarchy Standard

BTS - Sasshofer 5
The root (/) hierarchy

BTS - Sasshofer 6
The root (/) hierarchy

BTS - Sasshofer 7
The root (/) hierarchy

BTS - Sasshofer 8
The root (/) hierarchy

BTS - Sasshofer 9
The /usr hierarchy

BTS - Sasshofer 10
The /usr hierarchy

BTS - Sasshofer 11
The /usr/local hierarchy

BTS - Sasshofer 12
The /usr/localhierarchy

BTS - Sasshofer 13
The /var hierarchy

BTS - Sasshofer 14
Organizing within the FHS

▶ Although the Filesystem Hierarchy Standard (FHS) is helpful for a


detailed understanding of the layout of the directories used by most
Linux distributions, the following describes the layout of directories
in more general terms:
▶ User home directories
▶ Binary directories
▶ Software application directories
▶ Library directories
▶ Variable data directories

BTS - Sasshofer 15
User Home Directories

▶ The /home directory typically contains a separate directory for each


user with an account on the system except for the root user
▶ The /root directory is the preferred optional location for the home
directory of the root user
▶ Without administrator intervention, users can only create files in
their home directory, the /tmp directory and the /var/tmp
directory .

BTS - Sasshofer 16
User Binary Directories

▶ Binary directories contain the programs (not necessarily actually all


binary files) that users and administrators execute to start
processes or applications running
▶ Those whose name is “bin” are intended for ordinary users and
include: /bin, /usr/bin and /usr/local/bin
▶ Third-party applications may also store their executables in
/usr/local/application/bin or /opt/application/bin
▶ Users may have their own “bin” in their home directory, like
/home/bob/bin

BTS - Sasshofer 17
System Binary Directories

▶ The system binary directories contain programs or applications that


are intended for the administrator (the root user).
▶ System binary directories will have a “sbin” name and include:
/sbin, /usr/sbin and /usr/local/sbin
▶ Third-party administrative applications may also store their
executables in /usr/local/application/sbin or
/opt/application/sbin

BTS - Sasshofer 18
PATH and Binary Directories

▶ In order to be able to execute a command contained in one of the


“bin” or “sbin” directories by typing the command name only, the
directory containing the command needs to be contained in the list
of directories set in the PATH variable.
▶ The PATH variable contents can be viewed by using the echo
$PATH command.
▶ The PATH variable is usually customized by modifying the
~/.bash_profile file.
▶ To execute a command in a directory not in PATH, type the absolute
or relative path to the command.
▶ . ist usually not part of PATH!

BTS - Sasshofer 19
Software Application Directories

▶ Unlike Windows, applications are not usually installed in a single


directory like C:\Program Files
▶ By querying the software application package, the file locations will
be listed:
▶ dpkg -L application (Debian-derived distributions)
▶ rpm -ql application (RPM based distributions)
▶ The executable program files may go in /usr/bin if they originated
from the distribution, otherwise they may go in /usr/local/bin
or /opt/application/bin

BTS - Sasshofer 20
Software Application Directories

▶ The application’s data may go into a subdirectory of /usr/share,


/usr/lib, /opt/application or /var/lib
▶ The documentation for the application will normally go in a
subdirectory of /usr/share/doc, /usr/share/man, or
/usr/share/info if it originated from the distribution or else in
/usr/local/share/man, /usr/local/share/doc,
/usr/local/share/info or a subdirectory of
/opt/application

BTS - Sasshofer 21
Library Directories

▶ Libraries are files that contain code with is shared between multiple
programs.
▶ Using libraries saves disk space and memory as multiple programs
can share them and don’t need a separate copy.
▶ Library file names typically end in “.so” to indicate that they are
”shared objects“.
▶ It is common for a 64 bit system to have both 64 bit and 32 bit
versions of libraries.

BTS - Sasshofer 22
Library Directories

▶ Library directories will normally have a path that ends in ”lib“.


▶ The libraries to support the essential binaries found in /bin and
/sbin are located in /lib in /lib64
▶ To support the /usr/bin and /usr/sbin executables, the
/usr/lib and /usr/lib64 libraries are used.
▶ For supporting applications not part of the of the distribution the
/usr/local/lib and /opt/application/lib libraries are
used.

BTS - Sasshofer 23
Variable Data Directories

▶ The /var directory and many of its subdirectories contain files


whose contents change frequently.
▶ If your system is used as a mail server, then /var/mail or
/var/spool/mail will hold the messages.
▶ If your system is used as a print server, the the /var/spool/cups
directory is used to hold the print jobs.
▶ Depending on the activity of your system and what level of detail it
is logging, then the log files in the /var/log directory might hold a
large amount of data.

BTS - Sasshofer 24
Variable Data Directories

▶ While the log files found in /var/log may be extremely helpful for
troubleshooting problems, they might become a problem
themselves if they fill up the filesystem.
▶ Having services like mail and printing available may be useful, but if
they cause your system to crash, then that can be a problem.
▶ Mounting /var on a separate partition is often done as a precaution
to prevent activity under /var from filling up the root filesystem
and crashing the system.

BTS - Sasshofer 25
Hard Links and Symbolic Links

▶ Both hard and soft (also called symbolic) links are useful for
providing alternative names for files and directories.

▶ Instead of having to type a long and difficult path to a file like:


/usr/share/doc/package/data/2013/october/10/valuable-
information.txt

▶ …a link name for the same file may be simply:


~/valuable.txt

▶ Each technique of linking (hard and soft) has advantages and


disadvantages

BTS - Sasshofer 26
Hard Links vs. Symbolic Links

BTS - Sasshofer 27
Understanding the Filesystem

▶ To understand how links work, it is helpful to understand how the


filesystem keeps track of files.

▶ For every file that is created, there is one block of data called an
inode table that stores the meta-information of the file, such as
permissions, ownerships, timestamps and pointers to where the
file’s contents are stored.

▶ The inode table includes almost all information about a file except
the file name.

BTS - Sasshofer 28
Understanding the Filesystem(cont)

▶ Each inode table is associated with a unique inode number.


▶ The ls -i command will display the inode number for each file.
▶ The directory stores the names of all the files within the directory
and their associated inode number.
▶ When access is attempted on a file, the system reads the directory
data to find the file name and then retrieves its data by looking up
the data blocks referenced in its inode.

BTS - Sasshofer 29
Hard Link Example

▶ Suppose that the /etc/passwd file has an inode number of 123


▶ The /etc directory would store a table with file names and inode
numbers like:

passwd 123
shadow 175
group 144
gshadow 897

BTS - Sasshofer 30
Hard Link Example(cont)

▶ A file called /etc/mypasswd that is hard linked to /etc/passwd


would also reference inode 123:

passwd 123
mypasswd 123
shadow 175
group 144
gshadow 897

BTS - Sasshofer 31
Hard Links

▶ Every file has at least one hard link to it (for the original file name).
▶ The link count number appears between the permissions and the
user owner in a detailed listing:
$ echo data > file.original
$ ls -li file.*
278 -rw-rw-r--. 1 root root 5 Oct 25 15:42 file.original

▶ The link count will increase by one for each hard link that is added
and decrease by one for each hard link that is removed.

BTS - Sasshofer 32
Creating Hard Links

▶ To create hard links, the ln command is used with the first argument
being an existing file name and the second argument being the new
file name to link to it:
$ ln file.original file.hard.1
$ ls -li file.*
278 -rw-rw-r--. 2 root root 5 Oct 25 15:53 file.hard.1
278 -rw-rw-r--. 2 root root 5 Oct 25 15:53 file.original

▶ Notice that the inode is the same for both files and they both have a
link count of 2.

BTS - Sasshofer 33
Soft Links

▶ A soft (symbolic) link is a file that points to another file name.


▶ Soft links have a file type of ”l“.
▶ Soft links are similar to shortcuts in Windows.
▶ Several soft links already exist on the system including
/etc/grub.conf:
$ ls -l /etc/grub.conf
lrwxrwxrwx. 1 root root 22 Feb 15 2011 /etc/grub.conf ->
../boot/grub/grub.conf

BTS - Sasshofer 34
Creating Soft Links

▶ Creating a soft link involves using then ln command with the -s


option with the existing file as the first argument and the link file
name as the second argument:
$ ln -s /etc/passwd mypasswd
$ ls -l mypasswd
lrwxrwxrwx. 1 root root 11 Oct 31 13:17 mypasswd -> /etc/passwd

▶ Creating a soft link does not increment the link count on the existing
file.

BTS - Sasshofer 35
Comparing Hard and Soft Links

▶ Hard links have no single point of failure:


▶ Every file name linked to the inode is equivalent.
▶ As long as one hard link remains, then the inode is still accessible.
▶ Soft links have a single point of failure:
▶ If the original file is deleted or moved, then the soft link file will no
longer be valid.
▶ An invalid symbolic link is said to be ”dangling“.

Advantage: Hard Link

BTS - Sasshofer 36
Comparing Hard and Soft Links

▶ Hard links are difficult to see:


▶ A file with a link count greater than one
▶ Can be found with find / -inum 123
▶ Soft links are easy to see:
▶ A link (type l) file
▶ The file name points to what it is linked to

Advantage: Soft Link

BTS - Sasshofer 37
Comparing Hard and Soft Links

▶ Hard links:
▶ Can not link to a directory
▶ Can not link a file on one device or partition to a file on another
device or partition
▶ Soft links:
▶ Can link to directory files
▶ Can cross from one device or partition to another

Advantage: Soft Link

BTS - Sasshofer 38
BTS 18 - User Accounts and Security

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
User accounts

▶ Files in the /etc directory contain account data.


▶ The /etc/passwd file defines some of the account information for
user accounts.

BTS - Sasshofer 2
The /etc/passwd file

▶ Each line of the /etc/passwd file relates to a user account.


▶ Each line is separated into fields by colon characters. The fields
from left to right are as follows:
name:password placeholder:user id:
primary group id:comment:home directory:shell

BTS - Sasshofer 3
The /etc/passwd file

BTS - Sasshofer 4
The /etc/shadow file

▶ Contains account information related to the user’s password.


▶ The fields of the /etc/shadow file are:
name:password:lastchange:min:max:
warn:inactive:expire:reserved

BTS - Sasshofer 5
The /etc/shadow file

BTS - Sasshofer 6
Viewing Account Information

▶ To see the account information for the user name named


“sysadmin”, use the grep sysadmin /etc/passwd command:

▶ Another technique is the getent passwd command:

BTS - Sasshofer 7
Viewing login information

▶ To verify your identity you can execute the id command:

BTS - Sasshofer 8
System Accounts

▶ System accounts are designed to provide accounts for services that


are running on the system.
▶ Have UIDs between 1-499
▶ Have non-login shells in /etc/passwd
▶ Have * in password field of /etc/shadow
▶ Most are critical for system operation.
▶ Only delete a system account when 100% certain it is not needed.

BTS - Sasshofer 9
Group accounts

▶ Each user can be a member of one or more groups.


▶ The /etc/passwd file defines the primary group membership for a
user.
▶ Supplemental group membership is defined in the /etc/group
file.
▶ Either the grep or getent commands can be used to display group
information.

BTS - Sasshofer 10
The /etc/group file

▶ Each group is defined by this file.


▶ A colon delimited file with the following fields:
group_name:password_placeholder:GID:user_list

BTS - Sasshofer 11
Changing groups

▶ Create a file that owned by one of your secondary groups by using:


newgrp group_name
▶ Opens a new shell with new primary group.
▶ Use id command to verify new primary group.
▶ Use exit command to return to previous shell.
▶ May be disabled due to group passwords.

BTS - Sasshofer 12
Changing the group ownership of an existing file

▶ Change group ownership of existing file by using:


chgrp group_name file_name
▶ Only allowed to change group ownership of files you own.
▶ Must also be a member of the new group.

BTS - Sasshofer 13
Logging in as root

▶ Logging in directly to root account poses a security risk.


▶ Instead, use the su or sudo command.

BTS - Sasshofer 14
Using the su command

▶ The su command opens a new shell as a different user.


(UID changes, but doesn’t assume all env.)
Example: su user1

▶ To sign in as if the user had executed a login session


Example: su - user1

▶ Often used to run commands as the root user.


▶ Use the –l option for a full login shell.
▶ The root user is the default user.
▶ Use exit command to return to original shell.

BTS - Sasshofer 15
Using the sudo command

▶ The sudo command allows you to execute a single command as a


different user.
▶ Must be set up by installation program or manually after install.
▶ Prompts user for their own password.

BTS - Sasshofer 16
Setting up the sudo command

▶ Configuration is in the /etc/sudoers file.


▶ Modify this file with the visudo command.
▶ Uses vi/vim editors by default.
▶ Use the following to modify default editor:
export EDITOR=gedit
▶ Entry to provide user bob rights to run commands as root user:
Bob ALL=(ALL) ALL

BTS - Sasshofer 17
Using the who command

▶ Displays a list of users who are currently logged in:


[sysadmin@localhost ~]$ who
root tty2 2013-10-11 10:00
sysadmin tty1 2013-10-11 09:58 (:0)
sysadmin pts/0 2013-10-11 09:59 (:0.0)
sysadmin pts/1 2013-10-11 10:00 (example.com)

BTS - Sasshofer 18
Using the w command

▶ Displays detailed user and system information:


[sysadmin@localhost ~]$ w
10:44:03 up 50 min, 4 users, load average: 0.78, 0.44, 0.19
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 - 10:00 43:44 0.01s 0.01s -bash
sysadmin tty1 :0 09:58 50:02 5.68s 0.16s id
sysadmin pts/0 :0.0 09:59 0.00s 0.14s 0.13s who
sysadmin pts/1 example.com 10:00 0.00s 0.03s 0.01s w

BTS - Sasshofer 19
Using the w command

BTS - Sasshofer 20
Creating a Group

▶ The most common reason to create a group is to provide a way for


users to share files. After creating or modifying a group, you can
verify the changes by viewing the /etc/group file or running the
getent group command.

BTS - Sasshofer 21
The groupadd Command

▶ The groupadd command creates a new group.


▶ The -g option can be used to specify a group id:
groupadd -g 506 research
▶ If the -g option is not provided, the groupadd command will
automatically provide a GID for the new group.

BTS - Sasshofer 22
Group ID Considerations

▶ Avoid creating GIDs in the same numeric ranges where you expect
to create user IDs if your system uses UPG (User Private Groups).
▶ Recall that GIDs of under 500 are reserved for system use.
▶ The -r option will assign the new group a GID that will be less than
the lowest standard UID.

BTS - Sasshofer 23
Group Naming Considerations

▶ The first character of the name should be either an underscore (_)


or a lower-case alphabetic character (a-z).
▶ Up to 32 characters are allowed on most Linux distributions, but
using more than 16 can be problematic as some distributions may
not accept more than 16.
▶ After the first character, the remaining characters can be
alphanumeric, dash (-) and underscore(_).
▶ The last character should not be a hyphen (-).

BTS - Sasshofer 24
Modifying a Group

▶ The groupmod –n command changes a group’s name.


▶ The groupmod –g command changes a group’s ID.
▶ If you change the GID for a group, then all files that were associated
with that group will no longer be associated with that group.

▶ These are called “orphaned” files.


▶ To find “orphaned” files: find / -nogroup

BTS - Sasshofer 25
Deleting a Group

▶ Delete a group with the groupdel command.


▶ This may result in “orphaned” files.
▶ Only supplemental groups can be deleted.

BTS - Sasshofer 26
The /etc/default/useradd File

▶ The /etc/default/useradd file is used to define default settings


when creating user accounts.
▶ Default settings can be viewed of modified with the useradd -D
command.
▶ Editing this file required root access.

BTS - Sasshofer 27
The /etc/default/useradd File

BTS - Sasshofer 28
The /etc/login.defs File

▶ The /etc/login.defs file is used to define default settings when


creating user accounts.

▶ These default settings can be viewed only by viewing the contents


of this file.

▶ These settings can also only be modified by editing the file directly.
▶ Editing this file required root access.

BTS - Sasshofer 29
The /etc/login.defs File

BTS - Sasshofer 30
Working with Account Information

▶ Accounts can be used to grant selective access to files or services.


▶ The sudo command can be configured to grant the ability to specify
individuals to permit execution of select administrative commands.

▶ Each account can have group memberships and rights associated


with it allowing for greater management flexibility.

BTS - Sasshofer 31
Account Considerations

▶ Before creating a user account, consider what values you want to


set for the following:
▶ User name (login name)
▶ UID
▶ Primary Group
▶ Supplementary group(s)
▶ Home Directory
▶ Skeleton Directory
▶ Shell
▶ Comment (full name)

BTS - Sasshofer 32
The useradd Command

▶ The useradd command will allow you to create new users. Example:
useradd -u 1000 -c 'Jane Doe' jane

▶ Modifies the following files:


▶ /etc/passwd
▶ /etc/shadow
▶ /etc/group
▶ /etc/gshadow

▶ Creates mail spool (/var/spool/mail/jane) and user’s home


directory (/home/jane).

BTS - Sasshofer 33
Picking a Password

▶ Avoid using personal information in passwords.


▶ Encourage complex passwords.
▶ Encourage longer passwords, but not too long as to make them hard
to remember.

▶ Consider how often users will be required to reset their passwords.

BTS - Sasshofer 34
Setting a Password

▶ The passwd command will allow you to change a password.


▶ The root user can change any user password:
passwd user_name
▶ The root user can break password rules besides “no empty
passwords”.
▶ A user can change their own password by running the passwd
command with no argument.
▶ Regular users can not break password rules.
▶ Password rules vary from one distribution to another.

BTS - Sasshofer 35
Using the chage Command

▶ Used to change password aging settings for a user.

BTS - Sasshofer 36
Modifying a User Account

▶ The user may need to be logged off to modify the account.


▶ Use the who, w or last commands to determine if a user is
currently logged in to the system.

BTS - Sasshofer 37
The usermod Command

▶ Used to modify a user account.

BTS - Sasshofer 38
Delete a User

▶ Use the userdel command to delete a user account.


▶ By default, only the account is deleted, not any of the files owned by
the user.
▶ To find “orphaned” files: find / -nouser
▶ By using the –r option, files in the user’s home directory and the
user’s mail spool are deleted.

BTS - Sasshofer 39
BTS 19 - Ownership and Permissions

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Viewing Ownership (ls -l)

▶ To view the ownerships of a regular file, you can use the


ls –l command:
[root@localhost ~]$ ls -l /etc/named.conf
-rw-r-----. 1 root named 1163 May 13 10:27 /etc/named.conf
user owner_↑ ↑
group owner_/

▶ To view the ownerships of a directory file, you can use the


ls -ld command:
[root@localhost ~]$ ls -ld /etc/named
drwxr-x---. 2 root named 4096 Mar 28 2013 /etc/named

BTS - Sasshofer 2
Viewing Ownership (stat)

▶ Another command that allows you to view ownership information in


a more detailed way is the stat command:
[root@localhost ~]$ stat /etc/named
File: /etc/named
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 153995 Links: 2
Access: (0750/drwxr-x---) Uid: ( 0/ root) Gid: ( 25/ named)
Access: 2013-10-28 16:21:34.949997291 -0700 ↑_user owner ↑
Modify: 2013-03-28 15:18:54.000000000 -0700 group owner_/
Change: 2013-05-13 09:56:53.831158705 -0700

BTS - Sasshofer 3
File Ownership

▶ Every file is owned by a user and a group.


▶ If a user creates a file, they will be the user owner of that file.
▶ The chown command can change user ownership of a file, but it can
only be used by the root user.
▶ Although most commands will show the user’s account name as the
owner, the operating system is actually associating that user’s UID
as the file owner.

BTS - Sasshofer 4
Group Ownership

▶ When a file is created, the user’s primary group is the group owner
of the file.
▶ The user can use the chgrp command to change the group owner
of a file the user owns, to a group that the user is a member.
▶ The root user can use the chgrp command to change the group
owner of any file to any group.
▶ While most commands will show a group name as the group owner,
the system actually tracks group ownership by the GID of the group.

BTS - Sasshofer 5
Orphaned Files

▶ If a user is deleted, or has their UID changed, their former UID will
show as the owner of their files.
▶ If a group is deleted, or has its GID changed, the former GID will
shown as the group owner of that group’s files.

BTS - Sasshofer 6
Finding Your Identity

▶ To see the identity of your current account, and the your group
memberships, execute the id command:
[root@localhost ~]$ id
uid=500(root) gid=500(root) groups=500(root),10001(research),10002(develo

▶ Also try the whoami command.

BTS - Sasshofer 7
Viewing Group Membership

▶ To list the names of the groups that you have memberships, run the
groups command:
[root@localhost ~]$ groups
root research development

▶ If you are added to a group while logged in, you will have to logout
and back in again in order to see your new group membership

BTS - Sasshofer 8
The newgrp Command

▶ The newgrp command changes your effective primary group by


opening a new shell with a different primary group.
▶ Users can use the newgrp command to set the primary group to a
group they belong before they create a file
▶ The user can return to their original primary group by using the
exit command
▶ To permanently change the primary group of the user requires root
execute the following command:
usermod -g groupname username

BTS - Sasshofer 9
chgrp

▶ A user can change the group that owns the user’s files to a group
that they belong by using the chgrp command.
▶ The root user can use the chgrp command to change the group
owner of any file to any group or GID.
▶ If the -R option is used with the chgrp command, it will be
recursive, acting upon subdirectories and their contents, as well.

BTS - Sasshofer 10
chown

▶ The chown command can be used by the root user to change the
user owner, the group owner, or both.
▶ Ordinary users can use chown to change the group owner of their
files, but since there is chgrp, there is no need for it.

Examples:
chown user:group <file|directory>
chown user <file|directory>
chown :group <file|directory>

BTS - Sasshofer 11
Permissions

▶ When you execute the ls -l command, the first ten characters of


each line are related to file type and permissions:
▶ The first character indicates the file type.
▶ Characters 2-4 are permissions for the user owner.
▶ Characters 5-7 are permissions for the group owner.
▶ Characters 8-10 are permissions for “others” or what is sometimes
referred to as the world’s permissions. This would be all users who
are not the file owner or a member of the file’s group.

BTS - Sasshofer 12
Viewing Permissions

[root@localhost ~]# ls -l /etc/passwd


-rw-r--r--. 1 root root 4135 May 27 21:08 /etc/passwd

▶ Based on the above command output, the first ten characters could
be described by the following table:

BTS - Sasshofer 13
Types of Files

BTS - Sasshofer 14
Meaning of Permissions

BTS - Sasshofer 15
Understanding Permissions

▶ Only one of the three sets of permissions will apply when a user
attempts some kind of access on a file:
▶ If you are the user that owns the file, then only the user owner (first
3) permissions apply.
▶ If you are not the user owner, but are a member of the group that
owns the file, the group owner (second 3) permissions apply.
▶ If you are not the user owner and you are a not a member of the
group that owns the file, then the permissions for the “others” (last
3) will apply.

BTS - Sasshofer 16
Importance of Directory Access

▶ Question: What level of access does bob have to/data/abc.txt?

BTS - Sasshofer 17
Importance of Directory Access

▶ Question: What level of access does bob have to/data/abc.txt?

▶ Answer: None, because in the execute permission on /data there


is no way for bob to access /data/abc.txt

BTS - Sasshofer 18
chmod Command

▶ The chmod (change mode) command is used to set or modify


permissions.
▶ To change permissions on a file, you must either be the user owner
or root.
▶ There are two distinct techniques for changing permissions with
chmod:
▶ symbolic
▶ numeric

BTS - Sasshofer 19
Using chmod symbolically

▶ With this technique, you specify who, an operator, and what:

BTS - Sasshofer 20
chmod symbolic (alter) examples

▶ chmod u+x abc.txt


will alter the execute permission for the user owner.
▶ chmod go-rx abc.txt
will alter/remove read and execute for the group owner and others
owner.
▶ chmod u+wx,g=rx,o-r abc.txt
will alter the write and execute permissions for the user owner (no
change to read), will set r-x for group owner and alters/removes
read permission for “others”.

BTS - Sasshofer 21
Using chmod (set) numerically

▶ When using the numeric technique with chmod, a three digit


number is used to represent the permissions of the user, group and
others.
▶ It is also called the octal method after the octal values that are used
to calculate the permissions:
▶ 4 = read
▶ 2 = write
▶ 1 = execute

BTS - Sasshofer 22
Using chmod numerically

▶ By combining the permissions the values range from 0 to 7:


▶ 7 = rwx
▶ 6 = rw-
▶ 5 = r-x
▶ 4 = r--
▶ 3 = -wx
▶ 2 = -w-
▶ 1 = --x
▶ 0 = ---

BTS - Sasshofer 23
chmod numeric examples

▶ chmod 755 abc.sh - for rwxr-xr-x


▶ chmod 660 abc.txt - for rw-rw----
▶ chmod 771 somedir - for rwxrwx--x
▶ chmod 400 my.txt - for r--------
▶ chmod 700 userdir - for rwx------

BTS - Sasshofer 24
Understanding umask

▶ The umask value is used to determine the default permissions that


are set when a new file or directory is created.
▶ Default permissions are determined by removing permissions in the
umask from the maximum allowable permissions.
▶ The maximum allowable permissions for:
▶ a new file is rw-rw-rw- or 666
▶ a new directory is rwxrwxrwx or 777

BTS - Sasshofer 25
User umask example

▶ With a typical user umask value of 002, the others set of


permissions has write permission removed.

BTS - Sasshofer 26
Root umask example

▶ With a root user umask value of 022, the group and others sets of
permissions have write permission removed.

BTS - Sasshofer 27
Private umask example

▶ With umask value of 077, the group and others sets of permissions
have all permissions removed.

BTS - Sasshofer 28
Using umask

▶ To display the current umask value, execute umask with no


arguments.
▶ To set umask to a value of 027, type umask 027
▶ The new umask value will only apply during a login session.
▶ When a new shell is started, your default umask will be in effect
again.
▶ To set a new default umask, modify ~/.bashrc
▶ The umask value has no effect on existing files or directories, but
applies to new files or directories.

BTS - Sasshofer 29
The setuid Permission

▶ The setuid permission is set on certain system utilities so that an


ordinary user can execute the program as if it was run by the root
user. This allows an a normal user to perform common system
administration tasks without having to do gain direct access to the
root account.

▶ An excellent example of the setuid permission in action is the


/usr/bin/passwd command. When a user executes the passwd
command successfully, the command is able to update the
/etc/shadow file to set a new password for the user. This file can’t
be accessed normally by no-root users.

BTS - Sasshofer 30
Files with setuid

▶ A file that has setuid permission properly set will have a lowercase
“s” in the “user owner” execute position, indicating both setuid and
execute permission for the user owner are set:
-rwsr-xr-x

▶ A file which has setuid permission, but lacks execute permission for
the user owner will show an uppercase “S” to highlight that the
permission is not effective:
-rwSr-xr-x

BTS - Sasshofer 31
Using chmod with setuid

▶ The chmod command can be used to set or remove the setuid


permission, using either a symbolic or numeric method
▶ Setting setuid where nnn is original permission mode:
▶ chmod u+s file or chmod 4nnn file
▶ Removing setuid where original mode is 4nnn:
▶ chmod u-s file or chmod 0nnn file

BTS - Sasshofer 32
The setgid Permission on a File

▶ The setgid permission used on a file is similar to setuid except that


it uses group permissions. When a user executes a file that is setgid,
the system runs the command as if the user were a member of the
group that owns the executable, usually granting access to
additional files.

▶ An example of setgid permission on a file is the /usr/bin/wall


command. The wall command sends messages to other user’s
terminals. Since this executable is owned by the “tty” group, when
it is run it grants the user access to the files owned by the “tty”
group, which effectively allows the user to write a message to any
“tty” or terminal on the system.

BTS - Sasshofer 33
The setgid Permission on a Directory

▶ Using setgid permission on a directory is used by administrators to


make it easier for users who are in a group to be able to share files
with other users in the same group.
▶ When setgid permission is set on a directory, any files created in
that directory are automatically group owned by the group that
owns the directory.
▶ When a new subdirectory are created in a directory that has setgid,
the new subdirectory will also have setgid permission and be group
owned by the group that owns the parent directory.

BTS - Sasshofer 34
Files with setgid

▶ A file that has setuid permission properly set will have a lowercase
“s” in the group owner execute column, indicating both setgid and
execute permission for the user owner is set:
-r-xr-sr-x

▶ A file which has setgid permission, but lacks execute permission for
the group owner will show as an uppercase “S” to highlight that the
permission is not effective:
-r-xr-Sr-x

BTS - Sasshofer 35
Using chmod with setgid

▶ The chmod command can be used to set or remove the setgid


permission using either a symbolic or numeric method
▶ Setting setgid where nnn is original permission mode:
▶ chmod g+s file or chmod 2nnn file
▶ Removing setgid where original mode is 2nnn:
▶ chmod g-s file or chmod 0nnn file

BTS - Sasshofer 36
The sticky bit Permission

▶ The sticky bit permission is used to prevent others from deleting


files that they do not own in a directory that is shared with others.
▶ Normally, if a user has write permission on a directory, then that
user can delete any file in that directory, including files that user
does not own, regardless of the permissions of the file.
▶ The classic example of a directory that normally has the sticky bit
permission is the /tmp directory. This directory is standard on all
Linux systems and provides a place were all users can store files.
With sticky bit set, one user can’t delete another user’s /tmp files.

BTS - Sasshofer 37
Directories with the sticky bit set

▶ When the sticky bit permission is set, the letter “t” will appear in
the execute column for the others: drwxrwxrwt *Unlike setuid and
setgid, where a capital letter indicated a problem that would
prevent those permissions from working, the presence of an
uppercase letter “T” does not always mean that the sticky bit
permission is not set correctly: drwxrwx--T
▶ If either the group owner or others have execute permission, then it
is possible for the sticky bit permission to work for those accounts.
▶ If only the user owner has execute permission, then it is not
possible for the sticky bit permission to work: drwx------T

BTS - Sasshofer 38
Using chmod with sticky bit

▶ The chmod command can be used to set or remove the sticky bit
permission using either a symbolic or numeric method.
▶ Setting sticky bit where nnn is original permission mode:
▶ chmod o+t dir or chmod 1nnn dir
▶ Removing sticky bit where original mode is 1nnn:
▶ chmod o-t dir or chmod 0nnn dir

BTS - Sasshofer 39
BTS 20 - Jobs and Processes

H. Sasshofer

BWI4 Betriebssysteme - 2020/21

BTS - Sasshofer 1
Topics

▶ Processes
▶ Definition of a process
▶ Different kinds of processes to manage on a running system
▶ Process Management
▶ process management utilities / commands
▶ managing foreground & background processes
▶ Managed processes
▶ cron daemon
▶ crontab - both file and command
▶ cron system processes
▶ at / atq / atrm
▶ nohup
▶ managing process nice levels

BTS - Sasshofer 2
Process Management

▶ In several situations, it is necessary to control current processes.


Some examples include:
▶ running a process in the background
▶ running other commands/processes while the first one executes in
the background
▶ executing process at a specified time and date
▶ running daily updates, weekly patches, and monthly backups
▶ killing / restarting processes
▶ cleaning up deadlocked processes, stopping, starting, or restarting a
process currently running on the system
▶ It is important to remember that most processes submitted by a
user will only run as long as the user remains logged in.

BTS - Sasshofer 3
Processes in Linux

▶ In order to do anything in Linux, you must:


▶ start an application
▶ use/run a command or script
▶ point & click to an icon
▶ do something to get the system to work for you
▶ As far as Linux is concerned, all of the above and anything and
everything that is happening at any point in time causes a process to
execute or activate.
▶ Upon logging in to the system, you actually end up starting several
processes:
▶ login process (X or otherwise)
▶ authentication process (may include PAM)
▶ shell process once authenticated (usually BASH)
▶ login scripts (/etc/profile scripts, ~/.bash_profile, etc)

BTS - Sasshofer 4
Processes in Linux

▶ Even thought there might not be any users logged into the system,
no connection the outside world, and no one at the console, there
are ALWAYS processes running in Linux, even if it is only the kernel
and the init or systemd daemon

▶ A Linux process consists of:


▶ a single running program
▶ a unique process identification number (PID)
▶ an environment in which to run
(current shell environment or sub-shell)

▶ Linux keeps track of processes using the PID, as well as the


relationship between them (child / parent), not by the command
names or user who started it, although it tracks that info as well

BTS - Sasshofer 5
Processes in Linux

▶ It also maintains information as to the relationship between


processes, if any (child / parent process)
▶ A parent process is simply a process that starts a new child process.
▶ A new or child process inherits the exported environment of its parent
process
▶ A child process receives an exported copy of the parent’s
environment.
▶ Thus, any changes the child makes to its environment does not
automatically affect the parent process
▶ Many commands allow for viewing or listing the process currently
running, and allow for examining the process current state and
relationship to other processes.
▶ Managing these processes is one of the most important tasks given
any administrator.

BTS - Sasshofer 6
Process States

A process can exist in one of many states:

▶ Runnable
▶ on run queue, in effect one of currently executing processes
▶ Sleeping
▶ waiting for event to occur to wake up and react/start up
▶ Stopped
▶ not currently executing, waiting to be killed or restarted
▶ Uninterruptable sleep
▶ cannot be woken until specific expected event
▶ Defunct (zombie) process
▶ just before a process dies, it notifies its parent and waits for an
acknowledgment.
▶ If it never receives it, its PID is not freed up but all other resources
are freed.
▶ Zombies can usually be cleared by rebooting/restarting the system.

BTS - Sasshofer 7
Process Display Commands

▶ ps
▶ displays processes currently running on the system
▶ Many options are available (see man pages, SysV and BSD)
▶ Examples: ps -ef | less or ps aux | less
▶ top / htop
▶ displays processes currently running and some information about
resource usage for each process
▶ free
▶ Displays memory (RAM) and swap usage and by what
▶ vmstat
▶ Displays virtual memory usage and by what
▶ pstree
▶ generates a tree-like structure of process parent/child relationships

BTS - Sasshofer 8
Process Management

▶ Processes can be managed


▶ Foreground processes are interactive.
▶ Processes require you to wait until they are done before using the
prompt again.
▶ Background processes are non-interactive.
▶ Processes run in the background, while you do other things; user
generally cannot send information to the process directly
▶ A system process designed to execute in the background ist called
daemon (systemd, firewalld, httpd, sshd, named,…)

BTS - Sasshofer 9
Process Management

▶ A System Administrator may:


▶ stop or restart execution of a process
▶ Linux allows for direct control of a process status
▶ suspend a foreground process to background
▶ A suspended process can be restarted or stopped
▶ move a process to background or foreground
▶ N.B.: output from background processes may show up on the screen,
but does not affect the current information you are using
▶ terminate any process
▶ Linux allows for hard termination of any process and its children.
▶ Terminating a child process does not directly affect the parent, but
terminating a parent process might cause some grief to the child
process(es)

BTS - Sasshofer 10
Process control

▶ Ctrl-C (also seen as ^C)


▶ will terminate the process running in the foreground - the process
the keyboard can access. This is not the same as ^Z! (see kill
-sigint)
▶ kill -signal <PID>
▶ allows for stopping/killing/restarting any process or daemon by
sending its process ID (PID) a signal
▶ kill -l
▶ List all the signals available
▶ killall -signal <processname>
▶ allows for stopping/killing/restarting of all processes or daemons
matching the name given

Note: Killing a parent process may or may not also kill all of its child
processes. Killing a child process is not likely to also terminate its parent
process.

BTS - Sasshofer 11
Foreground / Background

▶ command [options] &


▶ runs command as background process
▶ Ctrl-Z
▶ suspends a foreground process to background (note that other OSes
may use this as end-of-file on stdin, but Linux uses ^D for that
purpose)
▶ Don’t use ^Z to terminate a process!
▶ jobs [jobid]
▶ lists all background or suspended processes
▶ bg jobid
▶ Resume the suspended process jobid in the background as if an &
had been used to start it
▶ fg jobid
▶ moves process jobid to the foreground

BTS - Sasshofer 12
Background processing

▶ By using a & at the end of a command, the command(s) in the line


will be executed in the background, returning the user immediately
to the prompt.
▶ All output to stdout and stderr (usually the screen) will be
displayed normally, possibly interleaved with output from other
processes.
▶ Any requests from the background from stdin (usually the
keyboard) will blocked from reading and the process placed in a
stopped state.
▶ It is important to structure commands to be run in the background
to avoid these limitations and ensure the proper execution of
unattended commands.

BTS - Sasshofer 13
The cron and anacron daemons

▶ System scheduling is done by the cron daemon, which searches


/var/spool/cron for crontab files named after accounts in
/etc/passwd; cron also searches for /etc/anacrontab and the
files in the /etc/cron.d directory.
▶ cron examines all stored crontabs, checking each command to see
if it should be run in the current minute.
▶ Users can have their own crontab file, but it is often restricted to
the root account (see cron.allow and cron.deny in crontab(1)).
▶ anacron runs commands with a frequency specified in days.
▶ Unlike cron, it does not assume that the machine is running
continuously. Hence, it can be used on machines that aren’t running
24 hours a day, to control regular jobs as daily, weekly, and monthly
jobs.

BTS - Sasshofer 14
anacron

▶ anacron reads a list of jobs from a configuration file,


/etc/anacrontab (see anacrontab(5)). This file contains the list
of jobs that anacron controls. Each job entry specifies a period in
days, a delay in minutes, a unique job identifier, and a shell
command. It uses a very different format from crontab(5).

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
RANDOM_DELAY=45
START_HOURS_RANGE=3-22

#days delay job-id command


1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

BTS - Sasshofer 15
The crontab File

The crontab file has a specific format (_ means space):


Minute_Hour_Day_Month_DayofWeek_[username]_command
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#m h dom mon dow user command


17 * * * * root cd / && run-parts --report /etc/cron.hourly
1/7 9-17 * * * hms i-run-mondays-between-9and5-every-7-
minutes

▶ Both 0 and 7 represent Sunday


▶ Ranges of values can be specified using the dash (-).
▶ Comments can be placed in the crontab file by putting the # symbol in front of
them.
▶ Blank lines are allowed.
▶ All fields must contain a value of some valid kind
▶ Field are separated by one or more spaces
▶ Continuous periods are indicated with the asterisk (*).

BTS - Sasshofer 16
The crontab File

▶ The main crontab file /etc/crontab should NEVER be edited


manually; you don’t want crond to fail.
▶ Construct a crontab: as root, in /etc/cron.d; as a user, in
/var/spool/cron
▶ A user crontab file can be created by using the standard editor (vi)
to create a plain text file with proper crontab fields as above, or
using the crontab command
▶ It is recommended to name the file something distinctive
(e.g. cleanup-cms.cron) and for it to be stored in your home
directory.
▶ The crontab file can then be submitted to the cron daemon using
the crontab command.
▶ The crontab command can also be used to add, edit, list, and
remove individual crontab files submitted previously.

BTS - Sasshofer 17
The crontab command

▶ crontab [-u username] -e | -l | -r | file


▶ -u user is the user login name; used only by root
▶ -e edits the crontab file; created if needed
▶ -l lists the crontab file content
▶ -r deletes the crontab file
▶ file submits the crontab file to the cron daemon for placement in
/var/spool/cron/username
▶ crontab -l
▶ lists contents of the current user’s crontab file
▶ crontab -u allisor -e
▶ edits the crontab file for user allisor in vi
▶ crontab allisor.cron
▶ submits the crontab file allisor.cron to cron
▶ crontab -r
▶ remove the crontab file for the current user

BTS - Sasshofer 18
Scheduling Processes

System processes use the cron and anacron capabilities to invokes


processes and scripts maintained in periodic directories:

/etc/cron.hourly (not used by anacron)


/etc/cron.daily }
/etc/cron.weekly } anacron
/etc/cron.monthly }

Access to the cron and at systems can be managed

▶ /etc/cron.allow and /etc/cron.deny control access to the


cron system
▶ Also control access to the at commands at, batch, atq, and
atrm

BTS - Sasshofer 19
Running Processes after logout
▶ Processes running in the background by shell are usually allowed to
continue after logout. Non-redirected output is lost, however.

▶ nohup command
▶ allows for saving this output by appending it to the nohup.out file
in the user’s home directory.
▶ terminals need to shutdown with exit

▶ at time
▶ specifies a time for a set of commands (read from stdin with an
at>prompt; ^D to end) to be run as the user, whether the user is
online or not.

▶ atq
▶ lists pending at jobs for the user (root gets everyone)

▶ atrm at-jobid
▶ removes specific at jobs by job number if owner or root
BTS - Sasshofer 20
The at command

▶ The at command can be used to submit single-run jobs, scripts, or


commands to the cron daemon to be executed at a later time
(anywhere from 10 minutes to a few days). Anything having a more
frequent requirement than that or to be done on a regular basis
should be done through crontab.
▶ at time
▶ specifies the time for commands to be run as the user, whether the
user is online or not.
▶ commands are read from stdin at an at> prompt
▶ non-redirected output is automatically mailed to user’s local mail
account
▶ used for one time run scenario only
▶ provides job number given when queued.

BTS - Sasshofer 21
The at command

▶ at [-f script] [-m -l -r] [time] [date]


▶ -f script actual script name to submit
▶ -l lists jobs waiting to run (same as atq)
▶ -r jobno removes a job (same as atrm)
▶ -m mails the user when job is finished
▶ time H, HH.MM, HH:MM, H:M format
▶ date MonthDay format, day name, or today or tomorrow
▶ at 3.00pm tomorrow -f /apps/bin/db_table.sh
▶ runs db_table.sh tomorrow afternoon at 3
▶ at -l or atq
▶ lists pending at jobs for user
▶ at -r at-jobid or atrm at-jobid
▶ removes specific at jobs from user’s queue

BTS - Sasshofer 22
The nohup command

▶ The nohup command can be used to submit jobs you don’t think
can be completed by the time you log out. The process will continue
processing even after you log out.
▶ This can be particularly useful for a long-running tasks and/or when
you can’t wait around while the command executes.
▶ nohup command &is the command structure to accomplish this.
▶ If you DO log out of the terminal, any output from the job will be
redirected to a file called nohup.out in your current directory by
default.
▶ Terminals need to be closed with exit command.

BTS - Sasshofer 23
Process Priority

▶ Processes are scheduled with a 0 (zero) priority by default, unless


the process itself is coded to select a higher priority.
▶ Priority range from -20 (highest) to 19 (lowest)
▶ nice [-n adjustment] command
▶ allows for fine tuning the priority when starting a process or daemon
on the system
▶ only root can decrease a process priority
▶ default value of 10 for -n if omitted
▶ renice [-n pri] [-p pids] [-g pgrp] [-u user]
▶ Allows for altering current process priority
▶ -n pri priority value as above
▶ -p pids alter only listed processes priority, not any child processes
▶ -g pgrp alter the priority of an entire process group

BTS - Sasshofer 24
The /proc directory

▶ The /proc directory contains a pseudo-filesystem which contains


several types of information:
▶ directories that have names matching the PID of processes on the
system which contain numerous files with information about the
process.
▶ files like cmdline, meminfo and modules which contain
information about the system.
▶ files in /proc/sys that are writable by the root user and can
immediately change the way that the kernel operates.
▶ to make kernel changes permanent, add entries to the
/etc/sysctl.conf file or into a file in the /etc/sysctl.d/
directory.

BTS - Sasshofer 25
Process Hierarchy

▶ After the kernel finishes loading, it starts the first process (typically
/sbin/init od systemd) and assigns it the PID of 1.
▶ Each additional process that gets started is assigned a PID in
sequential order.
▶ As /sbin/init or systedm starts up other processes (or other
processes start up processe) they are considered parent processes
and
▶ The processes that were started by the parent processes are called
child processes.

BTS - Sasshofer 26
Process Hierarchy

▶ When the system has been running long enough, it may eventually
reach the maximum PID value, which can be viewed and configured
through /proc/sys/kernel/pid_max.
▶ Once the largest PID is used, the system will “roll over” and resume
by assigning PID values that are available at the bottom of the range.

BTS - Sasshofer 27
Viewing the Process Hierarchy

▶ The pstree command can show the process hierarchy with “text
art”:

BTS - Sasshofer 28
An Example of Process Hierarchy

▶ If you were to look at the parent-child relationships involved in


executing the pstree command, it would look something like this:
▶ In moderne Linux systems, init ist replaced by systemd

BTS - Sasshofer 29
The Process (ps) Command

▶ By default, the process (ps) command will only show the processes
running in the current shell.
▶ The ps --forest option will display lines to indicate parent and
child relationships, similar to the pstree command.
▶ The ps command accepts three kinds of options:
▶ Traditional Unix options given with a single dash
▶ BSD Unix options given without any dash
▶ GNU long options given with two dashes

BTS - Sasshofer 30
Viewing All Processes

▶ To view all processes execute ps aux or ps -ef.


▶ Since hundreds of processes are normally present, piping the
output to grep can be useful to find the information about a
particular process:

$ ps -ef | grep firefox


sysadmin 4048 2380 10 16:37 pts/0 00:00:01 /usr/lib/firefox
sysadmin 4096 2380 0 16:38 pts/0 00:00:00 grep firefox

BTS - Sasshofer 31
The top Command

▶ The top command is very useful for real-time monitoring of


processes, system load, CPU usage and memory usage.
▶ By default, top sorts processes by the CPU utilization

BTS - Sasshofer 32
Controlling top

BTS - Sasshofer 33
Load Averages

▶ Similar to the output of the uptime command, the first line of output
from the top command shows the current time, the amount of time
the system has been running and three averages of the load on the
system.

▶ The one, five and fifteen minute load averages give the
administrator an idea of the current load and how it has been
trending over recent time.

BTS - Sasshofer 34
Load Averages

▶ The number shown for the load averages is proportional to the


number of CPU cores in the system:
▶ A load average of zero is no load.
▶ A load average equal to the number of CPU cores indicates a fully
loaded system.
▶ A number higher than the total CPU cores indicates a system which
is over-loaded.

BTS - Sasshofer 35

Das könnte Ihnen auch gefallen