Systemsoftware
...
...
-
- 1 / 36
-
Flashcards
Was ist ein Bootloader? Was sind seine Aufgaben
- initialisiert prozessor um betriebssystem zu starten
- copiert Speicherblock mit Kernel oder Programm in RAM
- Startet geladenen Code
- Basisinitialisierung der Hardware
- Kopieren des Kernelcode von einer Quelle in den Haupspeicher
- Starten des Embedded Systems
- Übergabe von notwendigen Start-Parametern
- Übergabe der Programmkontrolle
Was ist der Kernel?
- Managed Tasks, isolieren der Tasks vom Kernel und von anderen Tsks
- einheitliches Interface für Hardware Ressourcen bereitstellen
- Vermittler der Ressourcen wenn Konkurrenz existiert
Was sind System Calls?
In addition to file semantics, the kernel also uses the idea of syscalls to expose functionality. Syscalls are a simple concept: when you’re working on the kernel and want to expose some functionality, you create an entry in a vector that points to an entry point of for the routine. The data from the application’s memory space is copied into the kernel’s memory space. All system calls for all processes are funneled through the same interface. When the kernel is finished with the syscall, it transfers the results back into the caller, returning the result into the application’s memory space. Using this interface, there’s no way for a program in user space to have access to data structures in the kernel. The kernel can also keep strict control over its data, eliminating any chance of data corruption caused by an errant caller.
was ist ein Root-Fs?
- Erstes beim booten vom Kernel gemountete Dateisystem unter /
- init-deamon: startet deamons, system-einstellungen u. login-programme
- beinhaltet shell-programme und deamons
- beinhaltet system-konfigurationen
- beinhaltet device-nodes
- beinhaltet bibliotheken und kernel-module
Wie Patch man in linux
patch erstellen
diff -Naur old-something new-something > patch-file
patchen
patch < patch-file
Was sind die unterschiede von Ramfs zu Tmpfs
Ramfs will grow dynamically. So, you need control the process that writes the data to make sure ramfs doesn’t go above the available RAM size in the system. Let us say you have 2GB of RAM on your system and created a 1 GB ramfs and mounted as /tmp/ram. When the total size of the /tmp/ram crosses 1GB, you can still write data to it. System will not stop you from writing data more than 1GB. However, when it goes above total RAM size of 2GB, the system may hang, as there is no place in the RAM to keep the data.
Tmpfs will not grow dynamically. It would not allow you to write more than the size you’ve specified while mounting the tmpfs. So, you don’t need to worry about controlling the process that writes the data to make sure tmpfs doesn’t go above the specified limit. It may give errors similar to “No space left on device”.
Tmpfs uses swap.
Ramfs does not use swap
Was bedeutet journaling?
- filesystem
- write to jurnal -> write to file -> delete journal entry
- Boot -> remove uncomplete journal entrys -> execute journal -> filesystem ok
Was sind vorteile von journaling?
- Dateisystem bleibt in einem korrekten Zustand nach Systemcrash
- alle Schreibvorgänge werden im journal gesichert bevor die Daten commitet werden
- Daten können verloren gehen wenn sie nicht commitet sind
- ext 4, ext 3, ext 2 mit journaling erweiterung
Was ist ein Datenkompressions filesystem
- System dass daten direkt beim speichern komprimiert
- bsp: squashfs
Was ist das BIOS und was sind seine Aufgaben?
- CPU Aktiviaeren
- PPOST starten
- CPU Caches aktivieren
- Speicher initialisieren
- Weitere CPUs aktivieren wenn vorhanden
- Liste angeschlossener E/A Geräte erstellen
- Programme in den Boot Roms dieser Geräte ausführen
- Betriebssystemkernel starten
Was sind die zwei Bootstufen der x86 Architektur?
- 1: minimale funktionalität, aufgabe ist nur den Stage 2 des Bootloaders zu laden
- 2: Volle funktionalität keine limits mehr für die implementierung von Features. Kann selbst ein eigenes Betriebssystem sein!
Nennen sie zwei Punkte in denen sich Embedded-Systems unterscheiden?
- Ressourceneinschränkung
- wenig platz
- kein oder eingeschränktes GUI
- Oftmals stehen weder Bildschirm noch Tastatur zur verfühgung
- Systembesonderheiten
- möglichst kurze Bootzeiten
- Systeme werden ohne Vorwarnung stromlos geschaltet
- Systeme laufen non-stop
- lange lebensdauer
Embedded System architektur
- Anwendungen + bibliotheken -> Root-fs
- Systemcalls Betriebsysstem Device Drivers -> Kernel Bootloader
- Hardware -> BIOS / Firmware
Wie wird ein Patch erzeugt?
diff -urN orginaldatei neuedatai > patchfile
wie patcht man
patch -p1 < patchfile
Wozu dient das Kernel-Image
- Einbinden der Notwendigen Treiber
- Compilieren für den entsprechenden Prozessor
- Herausnehmen aller nicht benötigten Komponenten
- module ja nein ?
Wozu dient das RootFS-Image
?
- Systemprogramme
- Konfigurationssoftware
- Applikationen
Nennen sie wichtige Bootparameter?
- root= Angabe des Devices auf welchem das Rootfilesystem befindet
- ro/rw: Mounted das Root als read-only/read-write Gerät
- console= Angabe der Geräte, welche der Linux Kernel als Console benutzen soll
- mem= Wieviel Speicher der Kernel benutzen soll
- initrd= Initial RAM Disk Image (startet dort /linuxrc)
- init= Angabe eines alternativen Binaries statt 'sbin/init' (Block-Device default)
- rdinit= Angabe eines alternativen Binaries statt '/init' (initramfs Default)
- ip= Angaben zur Art und Weise der Netzkarten Konfiguration
Was ist ein Kthread
- Prozesse die im Kernel ablaufen.
- Kernel-Threads können schlafen.
- laufen bis beended oder schlafend.
- Race-condition falls code eines aktiven Threads entladen wird.
Was ist eine Workqueue?
- "vorgefertigte" Kernel-Threads
- funktionen einmal abarbeiten
- nutzt Wokqueue-Objekt und Work-Objekt
- WO wird einmal abgearbeitet
- ein Workqueue-Thread pro CPU falls gewünscht
- Race-condition, falls der Workuqeue-Code entladen wird
Was ist ein Spinlock?
- Aktives Warten in Schleife (Spin)
- Überprüft in Schleife ob lock freigegeben ist
- Lock wird gehalten bis es explizit freigegeben wird
- Effizient wenn Threads nur für kurze zeit blockiert werden
- sicherbar
- Gleichzeitiger Aufruf auf zwei CPU-Kernen
- Aufruf der ISR auf einem anderen Kern
- nicht sicherbar
- Gleichzeitiger Aufruf auf dem eigenen lokalen CPU-Kern (Preemption)
- Unterbrechung durch die ISR auf der lokalen CPU (Preemtion)
Was ist eine Preemtionsperre?
Verhindert das Scheduling (auf localem Prozessor)
Was ist eine Interruptsperre?
- Auftretende Interrupts werden zurückgehalten.
- Nur für Einprozessor-Systeme geeignet.
Atomare Operationen?
- zugiff ist sowohl im Kernel-, Prozess als auch im Interruptkontext möglich.
- Modifikation in 3 Schritten
- Variable in internes Register
- Registerinhalt modifizieren
- Register inhalt zurückschreiben
Was ist ein Mutex?
- nur im Prozesskontext möglich
- nicht im interrupt-kontext
- nicht mehrfach freigeben oder reservieren
- task nicht mit gehaltenem mutex beenden
Was ist ein Semaphor?
nur im Prozesskontext möglich
Was bedeutet Reordering?
- Lösbar durch
- mb()
- rmb()
- wmb()
- barrier()
- spinlocks/semaphore
Was ist ein Completion Objekt?
- Dient Synchronisation zwischen 2 jobs
- job2 wartet darauf, dass job1 eine aktion beendet ist
Was ist ein Sequenze Lock
- Basiert auf Spinlock
- Abwandlung R/W Locks
- Schreibender Zugriff wird sofort gewährt
- Lesender Zugriff muss überprüfen ob während des Lesevorgangs die daten geändert wurden
- -> solange im kritischen bereich lesen bis sichergestellt ist dass sich die daten nicht geändert haben.
Beschreiben sie den Interrupt-Kontext
- Interrupts gesperrt -> kein "Schlafen legen"
- ISRs, Soft-IRQs, Tasklets und Timer
- GFP_ATOMIC
Beschreiben Sie den Kernel-Kontext
- Zugriff auf sämtliche Funktionen des Kernels, inklusive "Schlafen legen".
- Kernel-Threads, Workqueues, Event-Workqueue
- GFP_KERNEL
Beschreiben Sie den Prozess-Kontext
- Wie Kernel-Kontext, zusätzlich noch Zugriff auf die Datenbereiche des aktiven Rechenprozesses
- Aplikationsgetriggerte Treiberfunktionen, Systemcalls
- GFP_USER
Was bedeutet initramfs
- (inital ram filesystem) (cpio)
- komprimiertes archiv
- beinhaltet Dateien für den Systemstart
- Kann vom Kernel beim booten als stammverzeichnis eingehängt werden
- anschließend wird (init) Programm in initramfs gestartet
- enthält bsp. busybox
- letzte aufgabe meist eigentliche Root-Device über (sbin/init) zu starten
In welcher Programmiersprache ist der Linux Kernel geschrieben und warum?
C, Die meisten Systeme werden mit C Compilern ausgeliefert
Warum muss zum Compilieren des Linux Kernels ein GNU Compiler verwendet werden?
Weil Linux ein GNU-System ist
Wie arbeitet der Kernel mit Gleitkommazahlen?
Er emuliert Gleitkommazahlen