Ich habe diese Frage online bei der Vorbereitung auf ein Vorstellungsgespräch gesehen:
Welcher Prozesstyp wird bei einem nicht präemptiven Kernel hinsichtlich der Leistung stärker beeinträchtigt und warum?
I\O-gebunden
CPU-gebunden
Ich weiß, dass:
Ein CPU-gebundener Prozess erhält lange Quanten, aber mit niedriger Priorität, während ein I/O-gebundener Prozess kurze Quanten mit hoher Priorität erhält.
Zuerst dachte ich, dass die E/A-Bindung stärker betroffen sein würde, da sie warten muss, bis das Lesen von der Festplatte abgeschlossen ist (und nicht nur das Betriebssystem auffordern muss, sie aufzuwecken, wenn etwas fertig ist). Aber ich glaube, das ist falsch, da selbst in einem nicht präemptiven Kernel ein Prozess selbst entscheiden kann, seine Arbeit zu beenden und einen anderen arbeiten zu lassen.
Ich suche nach einer detaillierten Antwort, um wirklich zu verstehen, was mir hier fehlt.
Antwort1
Es stimmt nicht, dass „ein CPU-gebundener Prozess lange Quanten, aber mit niedriger Priorität erhält, während ein I/O-gebundener Prozess kurze Quanten mit hoher Priorität erhält.“
Ideal wäre es, wenn das der Fall wäre – aber häufig ist es so, dass jeder Prozess ungefähr die gleiche Zeitscheibe bekommt. Ein I/O-gebundener Prozess würde die CPU ziemlich schnell freigeben.
Unterschiedliche Prioritäten festlegendynamischoder es wäre anderweitig sehr schwierig, dies zu tun, und da der Kernel nicht präemptiv vorgehen kann, ist nicht klar, wie diese Priorisierung umgesetzt werden würde.