Next Previous Contents

8. Kernel Daemons

Helaas bevat deze sectie meer vermoedens en vragen dan feiten. Misschien dat je kunt helpen?

Als je de opdracht ps aux aanroept, dan zul je iets te zien krijgen als het volgende:

USER       PID %CPU %MEM  SIZE   RSS ttY STAT START   TIME COMMAND
root         1  0.1  8.0  1284   536   ? S    07:37   0:04 init [2] 
root         2  0.0  0.0     0     0   ? SW   07:37   0:00 (kflushd)
root         3  0.0  0.0     0     0   ? SW   07:37   0:00 (kupdate)
root         4  0.0  0.0     0     0   ? SW   07:37   0:00 (kpiod)
root         5  0.0  0.0     0     0   ? SW   07:37   0:00 (kswapd)
root        52  0.0 10.7  1552   716   ? S    07:38   0:01 syslogd -m 0 
root        54  0.0  7.1  1276   480   ? S    07:38   0:00 klogd 
root        56  0.3 17.3  2232  1156   1 S    07:38   0:13 -bash 
root        57  0.0  7.1  1272   480   2 S    07:38   0:01 /sbin/agetty 38400 tt
root        64  0.1  7.2  1272   484  S1 S    08:16   0:01 /sbin/agetty -L ttyS1
root        70  0.0 10.6  1472   708   1 R   Sep 11   0:01 ps aux 

Dit is een lijst met de processen die op het systeem draaien. Hiervan is init procesnummer één. De processen 2, 3, 4 en 5 zijn kflushd, kupdate, kpiod en kswapd. Hier doet zich echter iets vreemds voor: merk op dat bij deze processen in de kolom met de virtuele opslagomvang (SIZE) als ook de werkelijke opslagomvang (RSS) een nul staat. Hoe kan een proces geen geheugen gebruiken? Deze processen maken werkelijk deel uit van de kernel. De kernel staat helemaal niet in de lijst met processen, en je kunt er alleen achter komen hoeveel geheugen het gebruikt door het beschikbare geheugen af te trekken van de hoeveelheid op je systeem. Zouden de haakjes rondom de opdrachtnaam kunnen betekenen dat dit kernelprocessen zijn (?).

kswapd verplaatst delen van programma's die thans niet worden gebruikt uit de echte opslag (dwz RAM) naar swapspace (dwz harddisk). kflushd schrijft data vanuit buffers naar disk. Hierdoor draait het sneller. Wat programma's schrijven kan in het geheugen worden bewaard, in een buffer, en dan naar disk worden geschreven en grotere efficiëntere brokken. Ik weet niet waar kupdate en kpiod voor dienen.

Hier eindigt mijn kennis. Wat doen die laatste twee daemons? Waarom krijgen kerneldaemons expliciete procesnummers in plaats van dat het gewoon anonieme bits met kernelcode zijn? Start init ze werkelijk op, of draaien ze al als init in beeld verschijnt?

Ik plaatste een script voor het mounten van /proc en uitvoeren van ps aux in /sbin/init. Proces 1 was het script zelf, en de processen 2, 3, 4 en 5 waren de kerneldaemons net als onder de echte init. De kernel moet deze processen daar plaatsen, omdat mijn script het beslist niet deed!

8.1 Configuratie

Ik ben niet bekend met enige configuratie voor deze kerneldaemons.

8.2 Oefeningen

Zoek uit waar deze processen voor zijn, en schrijf een nieuwe ``Kernel daemons'' sectie voor dit document, en stuur dat naar me op!

8.3 Meer informatie

De ``Linux Kernel'' van het Linux Documentatie Project (zie De Linux Kernel voor een url), en de broncode van de kernel is alles wat ik kan bedenken.


Next Previous Contents