General Flashcards

1
Q

In welcher Programmiersprache ist der Linux Kernel geschrieben und warum?

A

Hauptsächlich in C. Weil C hardwarenah & effizient ist.

Wenige Zeilen Assembler für:

  • Hardware Initialisierung
  • Interrupts
  • Zeitkritische Funktionen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Warum muss zum Compilieren des Linux Kernels ein GNU Compiler verwendet werden?

A

Weil der Kernel auf besondere Funktionen des GNU Compilers angewiesen ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie arbeitet der Kernel mit Gleitkommazahlen?

A

Gar nicht! Mehr Aufwand durch Speichern der Floating-Point-Register.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welche Dateien sind für die Konfiguration des Linux Kernels wichtig?

A

Das Makefile des Kernels und die .config-Datei die durch das Makefile erstellt wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Tools stehen Ihnen für die Konfiguration des Kernels zur Verfügung?

A

Das Makefile des Kernels:

  • make config
  • make menuconfig
  • make xconfig
  • make gconfig
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Nennen Sie drei wesentliche Unterschiede zwischen einem Embedded Device und einem Standard System.

A

Im Gegesatz zu einem PC hat ein Embedded System
… meist nur eine einzige Aufgabe (1)
… neben technischer auch zeitliche Anforderung (2)

… eine beschränkte Größe und Leistung (3)
… einen bregrenzten Speicher und Preis (3)
….eine hohe Langlebigkeit (3)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Nennen Sie drei Nachteile bei der Verwendung eines Linux auf einem Embedded Device.

A
  • Hat eine lange Bootzeit (im Vergleich zu Microcontrollern)
  • Mindestanforderungen an die Hardware: 32Bit, >4MB RAM
  • (Noch) Einschränkungen im Safety-Critical und Realtime Bereich.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Erklären Sie den Unterschied zwischen der uClibc, glibc. Gehen Sie auch kurz auf die Vor- und Nachteile ein.

A
  • glibc ist der Standard (wichtigste Funktijnen)

- uClibc ist kleiner und für die Embedded-Umgebung gedacht

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie läuft der Kernel BUILD Prozess im Detail ab?

A

.config auslesen und die Abhängigkeiten der Module auflösen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Warum benutzt man ‘static’ in Kernelmodulen?

A

Um im Namensraum Konflikte zu vermeiden.

Stichwort: Namespace Pollution

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wozu benutzt man ‘make oldconfig’?

A
  • Nützlich um die .config Datei einer früheren Kernel-Version upzudaten.
  • Gibt Warnung aus, für nicht mehr enthaltene Optionen.
    Fragt nach Werten für neue Optionen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was macht ‘make allnoconfig’?

A
  • Generiert minimale Kernel Konfiguration.
  • Idealer Startpunkt für Embedded Systems!
  • Setzt nur die unbedingt benötigten Optionen zum Kompilieren.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Über welche Technologien lassen sich kritische Abschnitte schützen?

A
  • Mutex
  • Semaphor
  • Spinlock
  • Test and Set
  • Interruptsperre (1-Kern-Prozessor)
  • Monitor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Nennen Sie zwei Ausprägungen von Kernel-Threads.

A
  • Workqueue

- Event-Workqueue

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Nennen sie die drei Systemkomponenten eines Embedded Linux!

A
  • Firmware (+ 1.Bootloader)
  • Bootloader
  • Kernel & RootFS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist ein Tasklet?

A

Eine Art Kernel-Timer der eine Funktion zu einer Zeit die der Kernel aussucht als SoftIRQ ausführt.

17
Q

Was gibt der Kernel Build für Dateien aus?

A
  • System.map Symboltabelle für die Zuordnung Objekt -> Adresse (wichtig beim Debuggen)
  • vmlinux komplettes ELF Binary (’kernel proper’), wird
    unabhängig von der Zielarchitektur erstellt.
  • vmlinux.bin (Image im compressed Ordner) Kernel Binary ohne Symbole, Bemerkungen und Kommentare (’stripped’)
  • Target Objects head.o, misc.o Startup-Code und Kernel
    Entpack-Code
  • piggy.gz/piggy.o ’Image’ komprimiert, bzw. als linkbares Objekt (.o)
  • zImage/bzImage komprimiertes Kernel Image für Bootlader
18
Q

Zeichnen Sie das Diagramm des Unterbrechungsmodells!

A

|≡Applikation≡|↔|≡Applikation≡|
———–↓——————————-↓——————
|≡Kernelfunktion≡|↔|≡Kernelfunktion≡|
↓↓
|≡≡≡≡≡≡≡≡≡≡Soft-IRQ≡≡≡≡≡≡≡≡≡≡|
↓↓
|≡≡≡HardIRQ≡≡≡|←|≡ HardIRQ ≡|
|”IRQF_SHARED”|

19
Q

Welche Bedeutung hat die globale Variable JIFFIES im Linux-Kernel?

A

Anzahl an Timer-Interrupts die seit dem Systemboot ausgelöst wurden.

20
Q

[ Masterfrage ;) ]

Was ist der Unterschied zwischen ‘register_chrdev_region(…)’ und ‘alloc_chrdev_region(…)’?

A

register_chrdev_region(dev_t first, unsigned int count, char *name) ist STATISCH.
Man gibt Major number selbst vor.

alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name) ist DYNAMISCH.
Findet freie Major number für dich.

21
Q

Welche Aufgabe hat die Majornumber? Was ist die Minornumber? Worin liegt die zu Character-Devices unterschiedliche Bedeutung der Minornumber bei Blockgeräten?

A
  • Majornumber: zur Identifikation des Treibers
  • Minornumber: zur Unterscheidung zwischen einzelnen logischen Geräten (des Treibers)

Bei Character-Devices kann man sich die Minornumber frei wählen, bei Block-Devices wird die Minornumber vorgegeben.

22
Q

Wie lautet das Unix Kommando (inkl. der Parameter) um Gerätedateien anzulegen?

A

mknod c MyDeviceName c Major Minor

23
Q

Was für Operationen hat ein Linux Gerätetreiber normalerweise?

A

Characterdevices
open(), close(), read(), write()

Blockdevices
ioctl(), select()/poll(), fcntl(), seek()
24
Q

Wie lässt sich der Kernel BUILD Prozess beschleunigen?

A
  • ccache
  • distcc (distributed compiler)
  • make -jx (um x Prozessoren zu benutzen)
25
Q

Was ist das Early Userland?

A

Das RootFS wird beim Booten in die Ramdisk geladen und dort als ‘Early-Userland’ gemountet.

26
Q

Wann ist ein Kernelmodul im Prozess-Kontext und was ist besonders in diesem Kontext?

A

Wenn aus dem Userspace ein Systemcall ausgeführt wird.
z.B. bei Charcterdevices: open(), close(), read(), write()

Aus dem Prozess-Kontext hat man Zugriff auf den Userspace Speicherberich.

27
Q

Was ist der Unterschied zwichen MINOR() und iminor()?

A

MINOR() ist ein Makro und verlangt ein ‘struct device’

iminor ist ein Funktion und verlangt ein ‘struct inode’

28
Q

Was ist der Unterschied zwischen initrd und initramfs?

A

initrd

  • benötigt einen Filesystemtreiber/Blockgerätetreiber
  • Speicherineffizient (caching durch FS-Treiber obwohl schon im RAM) [pagecache und dentry cache]
  • nicht vergrößerbar

initramfs

  • Gemounted als tmpfs
  • Kein FS-Treiber notwendig
  • vergrößerbar
29
Q

Was ist der Unterschied zwischen ramfs und tmpfs?

A

ramfs
- kann ‘Überlaufen’ -> Systemabsturz

tmpfs (verbessertes ramfs)

  • kann swap space benutzen
  • kann nicht überlaufen
30
Q

Welche Kontextarten gibt es und was ist der Unterschied ?

A
  • Prozess-Kontext
  • Kernel-Kontext
  • Interrupt-Kontext

Interrupt-Kontext: Limitierte Funktionsauswahl, insbesondere
kein „Schlafen legen“ und kein Zugriff auf
Applikations-Speicherbereiche.

Kernel-Kontext: Zugriff auf sämtliche Funktionen des Kernels,
inklusive „Schlafen legen“.

Prozess-Kontext: Wie Kernel-Kontext, zusätzlich noch Zugriff auf
die Datenbereiche des gerade aktiven Rechenprozesses.

31
Q

Wann sollte der return-Wert “-ERESTARTSYS” angegeben werden ?

A

Wenn blockierende Funktionen durch ein Signal unterbrochen werden.

Bsp: 
#define READ_POSSIBLE (atomic_read(&bytes_available) != 0)

if ( wait_event_interruptible( wq_read, READ_POSSIBLE ) ) {
return -ERESTARTSYS;
}

32
Q

Welche Verzeichnisse müssen bei einem minimalen RootFS vorhanden sein ?

A
  • /
  • /usr
  • /etc
  • /lib
  • /bin
  • /tmp
  • /var
  • /dev