Systemsoftware Fragen1
Fragen aus wiki
Fragen aus wiki
-
- 1 / 51
-
Cartes-fiches
In welcher Programmiersprache ist der Linux Kernel geschrieben und warum?
C Weil C auf vielen Plattformen etabliert ist
Warum muss zum Compilieren des Linux Kernels ein GNU Compiler verwendet werden?
Da der Linux Kernel meist in Kombination mit dem GNU System verwendet wird
Wie arbeitet der Kernel mit Gleitkommazahlen?
Gleitkommazahlen klönnen nicht verwendet werden, da floating point register während systemcalls zu effizienz nicht gespeichert werden.
Welche Dateien sind für die Konfiguration des Linux Kernels wichtig?
/usr/src/linux/.config
Welche Tools stehen Ihnen für die Konfiguration des Kernels zur Verfügung?
make config: abfrage
make menuconfig: menu
make xconfig: x basiertes tool
Wie läuft der Kernel BUILD Prozess im Detail ab?
make clean: räumt auf
make depend: erzeugt dependencies
make bzImage: erzeugt haupt part
make modules: erzeugt module
Wie lässt sich der Kernel BUILD Prozess beschleunigen?
make -j 8 bei 8 CPUs parallel
Welchen Output erzeugt der Kernel BUILD Prozess (Name der Output Dateien + Funktion)?
bzImage kernel Image
Was bedeuten die Bootparameter root= initrd=?
root device mit root file system
initrd initramdisk image
Welche RAM Filesysteme gibt es?
ramfs
tmpfs
Was bedeutet 'Early User Land'?
Sammlung von Librarys und Programmen die verschiedene Funktionen bieten die wichtig genug sind um bereit zu stehen wenn der kernel bootet, aber nicht innerhalb des kernels laufen müssen.
Was ist der Unterschied zwischen initramfs und initrd?
initramdisk behandelt teil von RAM wie Festplatte.
initramdisk beansprucht immer bestimmte Bytezahl und kann nicht wachsen.
Initramfs beansprucht soviel speicher wie die Dateien die vorhanden sind.
Initramfs wächst mit veränderungen im Filesystem.
Was ist ein CPIO Archiv?
File-Archiv das Dateien hinein oder heraus kopiert. (copy in copy out)
Was ist das RootFS? Wozu benötigt man ein RootFS?
Filesystem das auf Speicher abgelegt ist und dem Kernel übergeben wird.
Auf dem RootFS sind die notwendigen Komponenten vorhanden die nicht im Kernel sind.
z.B. init, Gerätedateien. Das RootFs wird benötigt um das system zu booten und in
einen zustand zu bringen in dem andere Filesysteme eingehängt werden können.
meist /boot, /dev, /etc, /bin, /sbin manchmal /tmp
Wie arbeiten Systeme ohne RootFS?
booten direkt mit ramdisk image.
Welche verschiedene Arten von Programmen befinden sich im RootFS?
init startprogramm dass mit pid 1 startet
treiber module
System demonen z.B. Für Logging
Wie wird ein RootFS erzeugt?
CPIO archiv
make uImage
Was ist eine RAM Disk?
nimmt einen teil des Arbeistspeichers und behandelt ihn wie eine Festplatte.
Wie funktioniert das Booten mit einer RAM-Disk?
Disk Image wird beim booten in bestimmten bereich des RAms geladen und dem kernel
übergeben.
Was sind die Vor- und Nachteile einer RAM-Disk?
vorteile:
- kurze zugriffszeit
- bei Flash Anzahl schreibzugriffe begrenzt
- Große Ramdisk frei wählbar
- Daten in Ramdisk temporär
- vereinfacht Systemaktuallisierung
nachteile
- verbraucht Ram
- Daten doppelt
- Änderungen an oot-Filesystem werden nicht gespeichert
Wie lässt sich der Speicherbedarf im RootFS minimieren?
komprimierte bibliotheken wie klibc
oder Multi-call-binarys wie busybox.
Was ist ein Cross-Compiler?
kan exekutierbaren code copilieren für eine andere Plattform als die auf der der
compiler ausgeführt wird.
Wozu wird ein Cross-Compiler eingesetzt?
Compilieren von binarys für embedded Systems da diese oft nicht die leistung haben
um zum compilieren genutzt zu werden.
Aus welchen Funktionen besteht ein Linux-Kernelmodul mindestens? Welche Aufgabe haben die Funktionen?
init_module und cleanup_module.
init:
- Mudul bei Kernel-Subsysteme anmelden
- Initialisierung von Objekten
- Reservieren von Ressourcen
cleanup:
- freigeben der allozierten Systemressourcen
- Abmelden bei System
Was ist ein Gerätetreiber?
Ein Gerätetreiber ist eine Sammlung von Funktionen, die den Zugriff auf ein Peripheriegerät über ein einheitliches Applikations-Interface ermöglichen
Erläutern Sie die Aufgaben eines Gerätetreibers.
Zugriff auf Hardware abstrahieren
unabhängigkeit von Betriebsystem von der Hardware gewährleisten.
Unterschied Kernelmodul - Gerätetreiber?
Modultreiber können im Laufendem System geladen und entladen werden.
Grundsätzlicher Aufbau eines Gerätetreibers?
init_module
cleanup_module
open_driver
read_driver
write_driver
close_driver
Welche Aufgabe hat die Funktion driver_open()?
ist die datei vorhanden ist der treiber geladen?
stimmen die zugriffsrechte
welcher zugriff auf das gerät wird verlangt
ruckgabewert filedeskriptor
Was repräsentieren die Parameter struct inode und struct file?
In a Unix-style file system, the inode is a data structure used to represent a filesystem object, which can be one of various things including a file or a directory. Each inode stores the attributes and disk block location(s) of the filesystem object's data.
Was gibt die Funktion driver_read() zurück?
anzahl der gelesenen bytes
fehlercode
Welche Datentransfers müssen in einer Funktion driver_read() typischerweise realisiert werden?
lesen von daten aus einer datei oder aus der hardware in den speicherbereich der applikation
Die Funktionen, die zusammen einen Gerätetreiber bilden, lassen sich in drei Kategorien einteilen.
Beschreiben Sie diese Kategorien.
Geben Sie für jede Kategorie Beispiele an.
Modul : init_module
Eingabe / Ausgabe: write
Zugriffskontrolle: open
Schreiben Sie eine kurze Applikation, die auf die parallele Schnittstelle (/dev/lp0) ein Byte mit dem Wert 0xa5 ausgibt.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char* argv[])
{
FILE* file = fopen("/dev/lp0", "w");
if (file == NULL)
exit(EXIT_FAILURE);
int data = 0xa5;
int written = fwrite(&data, 1, file);
int err = fclose(file);
if (written == 1 && err == 0)
exit(EXIT_SUCCESS);
else
exit(EXIT_FAILURE);
}
Welche speziellen Werkzeuge benötigt man unter Linux zur Treibererstellung?
Kernel version
Make tool
Was ist der Unterschied zwischen einem Character-Device und einem Blockdevice?
Ein / Ausgabe characterweise bei character-Devices.
Daten-Blockweise bei Block-Devices.
Wie lautet das Unix Kommando (inkl. der Parameter) um Gerätedateien anzulegen?
mknod [-m MODE] NAME TYPE [MAJOR MINOR]
Welche Aufgabe hat die Majornumber? Was ist die Minornumber? Worin liegt die zu Character-Devices unterschiedliche Bedeutung der Minornumber bei Blockgeräten?
Majornumber identifiziert den treiber zu gerät.
die Minornumber wird vom treiber interpretiert bei character device.
bei blockgeräten sind sie nicht frei.
Erklären Sie den Unterschied zwischen Interrupt Level und Kernel Level.
in interruptkontext:
- beschränkte funktionsauswahl
- kein schlafen legen
- kein zugriff auf applikations speicherbereiche
in kernel-level
- sämpliche funktionen des kernels
- schlafenlegen
Skizzieren Sie ein Beispiel für einen kritischen Abschnitt innerhalb eines Treibers.
if(ressource nicht vorhanden)
schlafen legen
ISR -> schlafende threads aufwecken
evtl thread legt sich schlafen nach dem aufweckcall