2014-05-16 12 views
9

Will der Linux-Scheduler den untergeordneten Prozess nach fork() lieber zum vater-Prozess ausführen?Liefert der Linux-Scheduler den untergeordneten Prozess nach fork()?

Normalerweise wird der gegabelte Prozess exec irgendeiner Art so ausgeführt, es ist besser, Kindprozess vor Vaterprozess laufen zu lassen (um Kopie beim Schreiben zu verhindern).

Ich nehme an, dass das Kind exec als erste Operation ausführen wird, nachdem es erstellt wird.

Ist meine Annahme (dass der Scheduler Kindprozess bevorzugen) korrekt. Wenn nicht, warum? Wenn ja, gibt es mehr Gründe, das Kind zuerst zu führen?

Antwort

6

The Linux Programming Interface (pg. 525) für eine allgemeine Antwort zu zitieren:

Nach einem fork() ist es unbestimmt, welcher Prozess - die Eltern oder das Kind - neben Zugriff auf die CPU hat. (Auf einem Multi-Prozessor-System, können sie beide gleichzeitig Zugriff auf eine CPU.)

Das Buch geht auf die Unterschiede in der Kernel-Versionen und erwähnt auch CFS/Linux 2.6.32:

[ ...] seit Linux 2.6.32 ist es wieder das übergeordnete Element, das standardmäßig nach einem fork() ausgeführt wird. Dieser Standardwert kann geändert werden, indem der Linux-spezifischen Datei /proc/sys/kernel/sched_child_runs_first ein Wert ungleich null zugewiesen wird.

This behaviour is still present with CFS obwohl es some concerns für die Zukunft dieser Funktion gibt. Betrachtet man die CFS-Implementierung, so wird das Kind vor dem Kind seems to schedule.

Der Weg für Sie wäre, /proc/sys/kernel/sched_child_runs_first auf einen Wert ungleich Null zu setzen.

Bearbeiten:This answer analysiert das Standardverhalten und vergleicht es mit sched_child_runs_first.

3

Für den Fall, dass das Kind bei der ersten Gelegenheit exec aufruft, können Sie statt Gabel verwenden. vfork unterbricht den Elternteil, bis das Kind _exit oder exec * aufruft. Sobald es jedoch exec aufruft, wird das Kind gesperrt, wenn der Code von der Festplatte geladen werden muss. In diesem Fall hat der Elternteil eine gute Chance, fortzufahren, bevor das Kind es tut.

+0

Ok, danke, aber was ist mit normalen Fall. Will Scheduler Kind zu Vater bevorzugen? – Farseer

+3

Mit Vfork meine Lesung ist, dass das Kind bevorzugt wird, mit Gabel, es ist nicht spezifiziert. –

Verwandte Themen