Treiberenwicklung in C HW 5 Flashcards
Which is the more accurate time source: jiffies or CPU cycles?
Jiffies sind in der Zeitmessung genauer als die CPU Zyklen.
How can you identify the kernel thread’s PID using the ps utility?
You can identify kernel threads from their name. Processes that are written with [] are kernel threads
Can your kernel thread receive and handle signals that were sent from userspace using kill?
If the Thread is programmed to handle signals
How do the time measurements of the workqueue compare to the one from the timer?
Der Timer wird bei einem Interrupt direkt nach Beendigung des Interrupts ausgeführt und ist damit genauer als die workqueue.
What problems can occur on module unload?
Die Arbeit die in der workqueue gerade bearbeitet wird muss beendet werden bevor das Modul entladen wird, sonst kann der Thread, der die Arbeit
ausführt nicht zu seinem Ursprung zurückkehren.
How would the design of mutual exclusion look like using a spinclock?
Es gibt ein Flag, dass den kritischen Bereich überwacht. Möchte ein Prozess auf diesen Bereich zugreifen und er ist belegt, wartet der Prozess aktiv mit
einem Spinlock und prüft regelmäßig das Flag.
Which implementation would you prefer, and why?
Wir würde den Spinlock anderen Locks vorzeihen, weil man diese auch im Interruptkontext verwenden kann. Würde man passives Warten im
Interruptkontext verwednen, könnte man das System komplett lahmlegen.
Can close and unload unconditionally clean up the resources?
Nein, da es niemandne gibt der für uns aufräumen würde, weil wir uns dierekt im Kernelspace befinden
Welche Linux System Errors wurden in den Übungen verwendet?
EBUSY /* Device or resource busy /
EAGAIN / Try again /
ERESTARTSYS / is connected to the concept of a restartable system call. A restartable system call is one that can be transparently re-executed by the kernel when there is some interruption.
For instance the user space process which is sleeping in a system call can get a signal, execute a handler, and then when the handler returns, it appears to go back into the kernel and keeps sleeping on the original system call. */
EIO /* I/O error */