Auf diese Weise arbeiten GNU / Linux und andere Multitasking-Systeme, sie teilen den Prozessor unter den laufenden Prozessen, dot
haben nicht 99%, sondern 100% in 99% der Zeit. Jeder Prozess beherrscht den Prozessor für einen bestimmten Zeitraum.
Dies wird von Schedulern erledigt (Linux hat mehrere Scheduler, einige verwenden nur die übliche Strategie, andere versuchen, den Benutzeroberflächen mehr Zeit zu geben und so weiter).
In Ihrem Fall war das Problem - wahrscheinlich -, dass dot
nicht viel Prozessorzeit, sondern viel Speicher benötigt wurde. Und wenn ein Programm zu viel Speicher benötigt, kommt es zu Thrashing , was genau ein Prozess ist, der das System zum Stillstand bringt, nicht weil dot
es viel tut, sondern weil der Kernel Speicherseiten zwischen den Festplatten hin und her verschieben muss (Swap-Partition). und den Systemspeicher.
Selbst wenn dot
nur 99% der CPU-Zeit in Anspruch genommen würden, wäre der Wechsel zu einem Textterminal wahrscheinlich fast unmittelbar. Der Kernel muss jedoch dot
Daten aus dem Arbeitsspeicher verschieben, damit die Schlüssel X
wieder angezeigt werden X
können Wenn Sie nur auf das Textterminal drücken und zum Textterminal wechseln, muss der Kernel X
aus dot
dem noch laufenden Speicher heraus und dann auch dot
aus dem Speicher heraus, um die Textterminalprozesse (möglicherweise nur login
?) zurück in den Speicher zu verschieben. (Wenn dies chaotisch aussieht, liegt es nicht nur daran, dass das Beispiel chaotisch ist - die Realität ist dies chaotisch.)
Ein Beispiel: Wenn Sie sich im Text-Terminal anmelden, können Sie möglicherweise nur die Tasten drücken und die Rücktaste drücken, und dies geschieht in Echtzeit. Wenn Sie jedoch nur ein kleines Tool ausführen ps
, kommt es zum "Einfrieren" "für eine Weile, weil es Speicher zum Laden freigeben muss ps
(und es muss auch in der Festplatten-E / A-Warteschlange warten, die häufig zum Verschieben von Daten in und aus dem Speicher verwendet wird, bis es in der Lage ist, ps
vom Dateisystem anzufordern ) .