...


Henry Kingston
Diese Lernkarten bieten einen umfassenden Überblick über die Systemsoftware, insbesondere auf Universitätsniveau. Sie konzentrieren sich auf den Kernel, seine Funktionen und Interaktionen mit Hardware wie CPU, RAM und Geräten. Themen wie Threads, Kontextwechsel, Zugriffssteuerung und Synchronisationsmechanismen werden behandelt. Zudem werden spezifische Konzepte wie Journaling, Root-FS, Bootparameter und Embedded-Systeme erklärt. Diese Karteikarten sind ideal für Studierende und Entwickler, die ein tiefes Verständnis der Systemsoftware und deren Implementierung in Betriebssystemen wie Linux erlangen möchten.
Karten
36
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
09.10.2014 / 03.07.2015

Cartes-fiches

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

Étudier