Der Themenkomplex âBetriebssystemeâ ist sehr groĂ
Nicht mit einer Vorlesung abzudecken
Empfehlung: Besuch der Veranstaltung âBetriebssystemeâ
(oder selbststÀndig Themengebiet erarbeiten)
Bereitstellung von Abstraktionen der Betriebsmittel
Verwaltung der Hardwareressourcen, die der Computer besitzt
Daraus folgt:
Alles eine Anwendung, die auf dem Betriebssystem aufsetzt
Dies alles ist nicht Teil eines Betriebssystems:
Beispiel GNU/Linux
Wir schauen jetzt mal unter die Haube!
Monolithisches System
Mikrokern-System
read() â âLese etwas aus einer DateiâSystemebene ist das eigentliche Betriebssystem
Direkter Zugriff auf die Hardware
Stellt Treiber und Abstraktionen fĂŒr Interaktion bereit
Darf alles privilegiert ausfĂŒhren
â GroĂe Verantwortung
Erweiterungen betreffen gesamten Kern
â Neukompilierung notwendig
Sicherheit: Eine Komponente âreiĂt kompletten Kern in den Todâ
Existieren ebenfalls schon lange
Bekannteste Beispiele: MacOS
Ziel: Möglichst kleine Systemebene
â Nur absolut notwendige Komponenten
Treiber auf Anwendungsebene verschieben
Viel Kommunikation zwischen den Anwendungen: Inter-Process Communication (IPC)
â Interaktion mit der jeweiligen System-Komponente auf Nutzerebene
Was fĂŒr Abstraktionen gibt es in einem Betriebssystem?
(Dies ist keine abschlieĂende Liste)
Prozessor ist zentrale Recheneinheit eines Computers
(Central Processing Unit, CPU)
Sind ein wichtiger Bestandteil der Performance moderner CPUs
Zugriff auf RAM (statt L1)
â Latenz ca. 100-fach höher
Performance eines Programms abhÀngig von Cacheinhalt
Daten in CPU werden in Registern abgelegt
Beispiel:
i + 4; wird zu add eax, 4 (C â Assembly)
Einige interessante Register sind:
eax â per Konvention Ergebnisrsp/rbp â Stackpointer/BasepointerDurch erweiterte BefehlssĂ€tze im Laufe der Zeit weitere Register eingefĂŒhrt
x86-Register (Auszug)
| eax |
| ebx |
| ecx |
| edx |
| esi |
| edi |
| esp |
| ebp |
Dateisysteme strukturieren Inhalt von GerÀten in Verzeichnisse(/Ordner) und Dateien
Schaffen Abbildung von Dateien zu Sektoren (und Spuren)
Beispiele: EXT4, NTFS, FAT32, âŠ
Kennt Dateien (und Verzeichnisse)
Zugriff erfolgt Byte-weise:
âLese 30 Bytes an Stelle 42â
/dev)/dev)/proc)Zwei wesentliche GerÀteklassen aus Sicht des Betriebssystems [1, 2]
(Nicht alle GerÀte passen in diese Klassen.)
*Bei einigen Architekturen (insbesondere amd64) sind es in der Praxis ânurâ 48 Bits (256 Terabytes). Die CPU-Hersteller sparen so (noch) nicht benötigte Bits ein
(Wenn der Arbeitsspeicher voll ist, wird auf die Festplatte ausgelagert. Siehe swap unter Linux oder page file unter Windows.)
malloc()/free() allozieren / geben Speicher frei
Betriebssystem versucht einen Speicherbereich bereitzustellen
Bei Erfolg neuen Speicher im virtuellen Adressraum des Prozesses einblenden
â âEs wird ein neuer Pfeil gezogen.â (siehe Abbildung)
(In Wirklichkeit geschieht die Anfordung mit mmap()-Syscall an das Betriebssystem. Die Funktionsaufrufe werden durch die libc bzw. libstdcpp verwaltet.)
#include <stdio.h>
#define OFFSET0 0
#define OFFSET1 512 * 1
#define OFFSET2 512 * 8
int main() {
int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
int* ptr = arr;
printf("Adr0: %p\n", ptr + OFFSET0);
printf("Adr1: %p\n", ptr + OFFSET1);
printf("Adr2: %p\n", ptr + OFFSET2);
printf("Val0: %d\n", ptr[OFFSET0]);
printf("Val1: %d\n", ptr[OFFSET1]);
// printf("Val2: %d\n", ptr[OFFSET2]);
}
eax ist RĂŒckgabewert einer Funktion/Ergebnis einer Berechnungopen(), mkdir()ls, touch (Gnu Core Utils)man man (Man Page fĂŒr man)man 1 writeAbschnitte
fbdev)AuĂerdem: Eigenheiten von Linux
0 fĂŒr Header Files)1p fĂŒr POSIX-Programme)Auszug aus man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuâ
vSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
Auszug aus man 3 printf
printf(3) Library Functions Manual printf(3)
NAME
printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf - formatted output conâ
version
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <stdio.h>
int printf(const char *restrict format, ...);
[...]
DESCRIPTION
The functions in the printf() family produce output according to a format as described below. The functions printf()
and vprintf() write output to stdout, the standard output stream; fprintf() and vfprintf() write output to the given
output stream; sprintf(), snprintf(), vsprintf(), and vsnprintf() write to the character string str.
[...]
Conversion specifiers
A character that specifies the type of conversion to be applied. The conversion specifiers and their meanings are:
d, i The int argument is converted to signed decimal notation. The precision, if any, gives the minimum number of
digits that must appear; if the converted value requires fewer digits, it is padded on the left with zeros.
The default precision is 1. When 0 is printed with an explicit precision 0, the output is empty.
[...]