🖥️ Szeregowanie procesów CPU — FCFS, SJF, Round Robin
Szereguj procesy na CPU według polityk FCFS, SJF, priorytetowej i rotacyjnej. Animowany wykres Gantta pokazuje przełączenia kontekstu, a średni czas oczekiwania i czas obrotu aktualizują się na żywo.
O szeregowaniu procesów CPU
Ta symulacja modeluje, jak system operacyjny współdzieli pojedynczy procesor między kilka rywalizujących procesów. Każdy proces ma czas nadejścia, długość porcji obliczeniowej (burst) i priorytet. Scheduler oblicza pełną oś czasu wykonania jednostka po jednostce czasu według wybranej polityki, a następnie renderuje ją jako animowany wykres Gantta. Na tej podstawie wylicza dla każdego procesu czasy zakończenia, cyklu (turnaround) i oczekiwania, wykorzystując standardowe zależności: turnaround = zakończenie − nadejście oraz oczekiwanie = turnaround − burst.
Selektor Policy przełącza między FCFS, SJF, SRTF, priorytetowym bez wywłaszczania i Round Robin, a suwak Quantum (1–6) ustala kwant czasu używany przez Round Robin. Suwak Count (2–7) ustala liczbę generowanych procesów, Randomise losuje na nowo ich wartości nadejścia, burst i priorytetu, a Speed kontroluje odtwarzanie, podczas gdy Step przesuwa symulację o jedną jednostkę. Szeregowanie procesów CPU jest fundamentalne dla systemów operacyjnych: te same kompromisy między przepustowością, sprawiedliwością i czasem odpowiedzi rządzą prawdziwymi schedulerami w Linuksie, Windows i wbudowanych jądrach czasu rzeczywistego.
Najczęściej zadawane pytania
Co dokładnie oblicza ta symulacja szeregowania CPU?
Buduje pełną oś czasu wykonania, wybierając jeden proces na jednostkę czasu zgodnie z wybraną polityką. Na podstawie czasów zakończenia wylicza dla każdego procesu zakończenie, turnaround (zakończenie minus nadejście) i oczekiwanie (turnaround minus burst), oraz liczy każde przełączenie kontekstu, przy którym zmienia się uruchomiony proces.
Jakie polityki szeregowania można wybrać?
Dostępnych jest pięć polityk: FCFS (First-Come First-Served — obsługa w kolejności zgłoszeń), SJF (Shortest Job First, bez wywłaszczania), SRTF (wywłaszczające szeregowanie najkrótszego pozostałego czasu), Priority (bez wywłaszczania, niższy numer oznacza wyższy priorytet) oraz Round Robin. Wybór polityki natychmiast przelicza oś czasu dla tego samego zbioru procesów, dzięki czemu można je porównywać.
Co robią kontrolki Quantum, Count i Speed?
Quantum (od 1 do 6) to stały kwant czasu, jaki każdy proces otrzymuje w Round Robin przed wywłaszczeniem; nie ma wpływu na pozostałe polityki. Count (od 2 do 7) ustala liczbę generowanych procesów, a Speed skaluje tempo odtwarzania animacji bez zmiany wyniku.
Jaka jest różnica między SJF a SRTF?
SJF jest bez wywłaszczania: gdy proces się rozpocznie, działa do końca, a scheduler dokonuje kolejnego wyboru dopiero, gdy CPU jest wolny. SRTF to forma wywłaszczająca: w każdej jednostce czasu wybiera dostępny proces z najmniejszym pozostałym czasem, więc nowo przybyłe krótsze zadanie może przerwać aktualnie działające.
Jak obliczane są czas cyklu (turnaround) i czas oczekiwania?
Dla każdego procesu czas turnaround jest równy czasowi zakończenia minus czas nadejścia, a czas oczekiwania jest równy turnaround minus czas burst. Pokazane średnie aktualizują się na żywo w miarę odsłaniania przez kursor ukończonych procesów, dzięki czemu można obserwować, jak wartości się ustalają wraz z zapełnianiem wykresu Gantta.
Dlaczego Round Robin generuje tak wiele przełączeń kontekstu?
Round Robin wywłaszcza działający proces za każdym razem, gdy upływa jego kwant czasu, i odsyła go na koniec kolejki cyklicznej. Przy małym kwancie CPU zmienia proces często, co poprawia czas odpowiedzi i sprawiedliwość dla obciążeń interaktywnych, ale zwiększa liczbę przełączeń kontekstu, z których każde niesie realny narzut w prawdziwym systemie.
Czym jest efekt konwoju i jak można go tu zobaczyć?
Efekt konwoju występuje w FCFS, gdy długi proces zależny od CPU przybywa jako pierwszy, a za nim ustawia się kilka krótkich procesów, co znacznie zwiększa ich czasy oczekiwania. Losuj (Randomise), aż wcześnie pojawi się długie zadanie, uruchom FCFS, a następnie przełącz na SJF dla tego samego zbioru: średni czas oczekiwania zwykle gwałtownie spada.
Czy symulacja modeluje wywłaszczanie i bezczynność CPU?
Tak. SRTF i Round Robin są w tym modelu rzeczywiście wywłaszczające, a gdy żaden proces jeszcze nie nadszedł, oś czasu zapisuje jednostkę bezczynności pokazaną jako blady blok. Te luki bezczynności nadal wliczają się do totalTime, więc poprawnie opóźniają zakończenie i turnaround późniejszych procesów.
Jak polityka Priority decyduje, co się wykonuje?
Każdemu procesowi przypisywany jest numer priorytetu, a scheduler uruchamia dostępny proces z najniższym numerem, traktując go jako najwyższy priorytet. Jest tu bez wywłaszczania, więc wybrany proces kończy się przed podjęciem kolejnej decyzji. Bez mechanizmu starzenia (aging) ten schemat może doprowadzić do zagłodzenia procesu o niskim priorytecie, jeśli wciąż napływają zadania o wyższym priorytecie.
Czy to dokładny model prawdziwego schedulera systemu operacyjnego?
Algorytmy odpowiadają podręcznikowym definicjom nauczanym na kursach systemów operacyjnych, z całkowitoliczbowymi jednostkami czasu i znanymi z góry długościami burst. Prawdziwe schedulery dodają komplikacje, takie jak nieznane przyszłe długości burst, blokowanie I/O, wiele rdzeni, starzenie priorytetów i narzut na każde przełączenie, więc jest to dokładny model dydaktyczny, a nie wierne odwzorowanie jądra produkcyjnego.