Właśnie dot
uruchomiłem (program do rysowania grafów kierowanych) z plikiem wejściowym, który był tak duży, że nie można go było renderować w rozsądnym czasie.
Cały mój system zamarł. Ledwo mogłem dotrzeć do konsoli tekstowej z Ctrl+ Alt+, F1aby zabić dot
, ale zajęło to kilka minut.
Dlaczego system pozwala na coś takiego? Dlaczego daje niekrytyczny program, taki jak dot
99% systemu, i wykorzystuje pozostały 1% do pozostania w gotowości?
scheduling
Christoph Wurm
źródło
źródło
Odpowiedzi:
Tak działa GNU / Linux i inne systemy wielozadaniowe, dzielą procesor między uruchomionymi procesami,
dot
nie będą miały 99%, ale 100% przez 99% czasu. Każdy proces dominuje nad procesorem przez określony czas.Zajmują się to planistami (linux ma kilka harmonogramów, niektórzy po prostu stosują zwykłą strategię, inni próbują dać więcej czasu interfejsom użytkownika i tak dalej).
W twoim przypadku problemem było - prawdopodobnie -
dot
nie zajęło to dużo czasu procesora, ale dużo pamięci. A kiedy program zużywa zbyt dużo pamięci, następuje przeładowanie , co jest dokładnie procesem, który powoduje zawieszanie się systemu, nie dlatego, żedot
robi dużo, ale dlatego, że jądro musi przenosić strony pamięci tam iz powrotem między dyskiem (partycja wymiany) i pamięć systemową.Nawet jeśli
dot
zajmowałoby 99% czasu procesora, istnieje szansa, że przejście na terminal tekstowy byłoby prawie natychmiastowe, co się dzieje, że jądro musi przenieśćdot
rzeczy z pamięci, aby móc jeX
ponownie umieścić w pamięci, abyX
mogły zobaczyć klucze po prostu naciskasz i przesuwasz się do terminala tekstowego, a następnie jądro musiX
wyjść z pamięci, dladot
której wciąż działa, a następnie wyprowadzićdot
się, aby przenieść procesy terminala tekstowego (może po prostulogin
?) z powrotem do pamięci. (Jeśli wygląda to niechlujnie, to nie tylko dlatego, że przykład jest niechlujny - rzeczywistość jest taka niechlujna).Przykładem może być zalogowanie się w terminalu tekstowym, możesz po prostu naciskać klawisze, naciskać klawisz Backspace i na szczęście stanie się to w czasie rzeczywistym, ale jeśli zrobisz coś tak prostego, jak uruchomienie małego narzędzia
ps
, to „zamrozi się” „przez pewien czas, ponieważ musi zwolnić pamięć do załadowaniaps
(a także musi czekać w kolejce dyskowej we / wy, która jest intensywnie używana do przenoszenia danych do iz pamięci, aż będzie w stanie zażądaćps
od systemu plików) .źródło