SySo HTWG
Vorbereitung auf die Klausur
Vorbereitung auf die Klausur
-
- 1 / 52
-
Cartes-fiches
Eine integrierte, mikroelektronische Steuerung, die meistens für eine spezifische Aufgabe verwendet wird
- Geringe Ressourcen- Kurze Bootzeit- 24/7 Betrieb- System muss ohne Herunterfahren funktionieren -> stromlos ohne Vorwarnung- Lange Lebenszeit
- Firmware (Bios)- Bootloader- Kernel- Rootfilesystem
User-Code darf nicht im Kernel ausgeführt werden -> Security! Keine library wäre einfach austauschbar
- Character-Devices- Block-Devices- Netzwerk- SCSI- USB- Irda- Cardbus u. PCMCIA- Parallelport- I2C- I2O
- Überprüfung, ob es sich um den richtigen Prozessor/Architektur handelt- Aufsetzen der Page Tables für die Speicherverwaltung- Initialisieren und Aktivierung der MMU- Aufsetzen eines einfachen Error Handlings- Sprung zur start_kernel() Funktion des Kernels: main.c
- Architektur Setup (setup_arch())- Verarbeitung der Kernel Command Line- Initialisierung der Subsysteme- init Thread starten- start_kernel() wird zum idle Thread
Prozessmanagement, Memory Management, IO-Managment, Gerätetreiber, Systemcall-Interface
- Verteilung der Ressource CPU- Single/Multi-Core-Scheduling(vgl. 1_3_LinuxKernel, Folie 5)
- Adressumsetzung- Speicherschutz- Virtueller Speicher (Swap-Space)- Extended Memory(vgl. 1_3_LinuxKernel, Folie 5)
- Einheitliches Programmierinterface (API) für Zugriff auf Dateien und Geräte- Systemkonforme Integration von Hardware in Kernel (Treiberinterface)- Performanter Zugriff auf E/A (Page-Cache, E/A-Scheduling)- Filesysteme(vgl. 1_3_LinuxKernel, Folie 6)
- Standardisierter Zugriff auf Hardware- Pro Peripheriegerät, das aus der User-Ebene angesprochen werden soll, muss ein Gerätetreiber existieren- Alle Kernel-Komponenten, somit auch die Gerätetreiber, haben Zugriff auf den Kernel-Adressraum(vgl. 1_3_LinuxKernel, Folie 6)
Kernel-Image:- Einbinden der notwendigen Treiber- Compilieren für den entsprechenden Prozessor- Herausnehmen aller nicht benötigten Komponenten- Module: ja oder nein?RootFS-Image:- Systemprogramme- Konfigurationssoftware- Applikationen
Vorteile:- Konsistentes Filesystem bei jedem Neustart- Booten ohne Filesystemcheck- Einfache Systemaktualisierung- Eventuell Auswahl des Rootfilesystems (Debug/Test)- Schneller Zugriff- Auf RAM sind unbegrenzte Schreibzyklen möglichNachteile:- Modifikationen am RootFS gehen mit einem Neustart verloren, wenn diese nicht im Image durchgeführt werden- Für die Ramdisk wird Hauptspeicher (RAM) benötigt (2-8 MB)
1. BIOS2. Bootloader3. Kernel mit RootFS im Early-Userland4. /init (aus RootFS Early-Userland --> Enthält evtl. Treiber + Konfig)5. Falls Desktop/Server: Newmount der Ziel-Root Partition und Starten von /sbin/init (per exec!)
Vorteile:- Der Zugriff auf die Ramdisk ist schneller als der Zugriff auf den Flashspeicher.- Beim Flashspeicher ist die Anzahl der Schreibzugriffe limitiert.- Die Größe der Ramdisk ist frei wählbar.- Daten in Ramdisk 'temporär' -> System muss nicht runtergefahren werden.- Das Verfahren vereinfacht die Systemaktualisierung.Nachteile:- Ramdisk verbraucht Hauptspeicher- Die Daten sind doppelt vorhanden: Im Image selbst (z.B. auf Flashdisk) und in der Ramdisk- Modifikationen, die während des Betriebs im Root-Filesystem vorgenommen werden, sind nach dem Ausschalten des Systems verloren.
- Basisinitialisierung der Hardware- kopiert den Kernel mit dessen filesystem in den RAM- Initialisiert das System (init cpu um den start des OS zu ermöglichen) - Starte das system
First stage boot loader: Minimale Funktionalität: 2. Stage des Bootloaders laden (z.B. irgendwo auf der Platte)Second stage boot laoder: Volle Funktionalität: Keine Limits mehr für die Implementierung von Features. Kann selbst ein eigenes OS sein.
- /sbin: Kommandos für die Systemverwaltung- /sys: Virtuelles Dateisystem; Informationen über Geräte und Treiber- /tmp: Temporäre Dateien, werden mit jedem Reboot gelöscht; oft als tmpfs Dateisystem realisiert- /usr: Anwendungsprogramme; /usr/src: Linux Kernel Sourcen- /var: Logdateien, Spooldateien; temporäre Dateien (/var/tmp), PID Dateien
*.ko
- Mit [+] werden module ausgewählt die als "builtin" module gelten. Diese werden beim booten geladen.- Mit [M] werden modeule ausgewählt die als out of tree gelten bzw. loadable modules sind. Diese module werden während der Laufzeit vom user geladen
module-drivers: lib/modules/$(uname -r)/module_name. Nachdem laden in /devbuiltin-drivers: zu finden mit /lib/modules/$(uname -r)/modules.builtin (<- das ist ein Befehl). Nach dem laden in kernel/module_name
Annahme: Benötigter Speicher ist statisch allokiert:Allokiert: Aus sicht des Moduls: Während des compilevorgangs (static memory)Aus sicht des Kernels: Während dem load des ModulsFreigabe:Aus sicht des Moduls: Niemals (static memory)Aus sicht des Kernels: Während dem unloade des Moduls
- CPU aktivieren - power-on self test (POST) starten - CPU Caches aktivieren - Speicher initialisieren (rudimentäre Funktionen) - weitere CPUs aktivieren (falls vorhanden) - Liste angeschlosser E/A Geräte erstellen (z.B. PCI Devices proben) - Programme in den Boot ROMs dieser Geräte ausführen (z.B. Festplattencontroller) - Betriebssystemkernel starten
Master boot record nach der Partitionstabelle
depmod
system startup (BIOS / Bootmonitor) -> First stage bootloader (Master Boot Record) -> Second stage bootloader (LILO, GRUB, etc) -> Kernel (Linux) -> Init (User-space)
openpty()
- make config (Fragt nach jeder Kerneleinstellung über die konsole)- make menuconfig (ncurses menü)- make xconfig (QT Interface)-make gconfig (GTK Interface)
Ein Gerätetriber ist eine Softwarekomponente, die aus mehreren Funktionen besteht. Aufgabe des Treibers is die Ansteuerung eines Gerätes
- Ansteuerung des Gerätes- Den technischen Prozeß in den sicheren Zustand überführen, falls die Applikation abstürzt
Characterdevice = zeichenorientiertBlockdevice = blockorientiert
- Kernelspace = Speicherbereich, der dem Kernel zur Verfügung steht.- Userpace = Speicherbereich, der den Applikationen zu Verfügung steht.
- Abbildung von Funktionalität bzw. semantischer Bedeutung auf logische Geräte.- Festlegung der logischen Geräte und deren Funktionalität.- Festlegung der Zugriffsart (z.B. non-blocking, blocking).- Festlegung der unterstützten Systemcalls (lesen, schreiben, ioctl, poll).- Festlegung der Zugriffsrechte (wie viele Threads, Applikationen dürfen zu welchen Zeitpunkten wie auf das Gerät zugreifen).- Festlegung von IO-Controls.
Ein Thread kann mehrfach einen Treiber öffnen. Jedes Öffnen stellt eine Treiberinstanz dar.
Eine Treiberinstanz wird druch das Objekt "struct file" im Treiber representiert.
- Verwendung anderer Datenstrukturen- Interrupt Sperre- Semaphore und Atomic-Operations
- Memory Mapped IO- Zugriff über eigenen IO-Befehle (Ports)
Zugriff auf IO-Ports:- "in[bwl]" und "out[bwl]"Zugriff auf Hardware im Adreßbereich des Mikroprozessors (Memory Mapped IO):- "read[bwl]" und "write[bwl]"bwl = Zusammensetzung byte, word, longword, in[bwl] ist ein makro, das von einem Port(=bwl) jeweil ein, zwei, oder vier Bytel einließt
ber die Majornumber wird der Treiber identifiziert