KWALIFIKACJA INF2 + INF3 - CZERWIEC 2008

PYTANIE NR 40.
W trybie wielozadaniowości z wywłaszczeniem zawieszony program
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W wielozadaniowości z wywłaszczeniem to jądro i planista procesów kontrolują przydział CPU (m.in. przez przerwania zegarowe). Zawieszony program działa w trybie użytkownika i nie ma uprawnień, by przejąć sterowanie nad jądrem, więc nie powinien zawiesić systemu operacyjnego.

Pełne wyjaśnienie:

Wielozadaniowość z wywłaszczeniem (preemptive multitasking) oznacza, że system operacyjny ma pełną kontrolę nad tym, który proces i jak długo korzysta z procesora. Kluczowym mechanizmem są przerwania zegarowe (timer interrupts): po upływie kwantu czasu jądro odzyskuje sterowanie i planista może przełączyć wykonanie na inny proces.

Dlatego odpowiedź "nie może zawiesić systemu operacyjnego" jest poprawna: zawieszony program (proces użytkownika) działa w trybie użytkownika, bez bezpośredniego dostępu do operacji jądra. Izolacja pamięci i poziomy uprawnień sprawiają, że proces nie powinien sam z siebie zablokować pracy jądra ani zatrzymać mechanizmów planowania.

Pozostałe odpowiedzi opisują typowe intuicje z systemów kooperatywnych lub z sytuacji, gdy problem dotyczy nie aplikacji, lecz sterownika/jądra:

  • "zawiesić cały system operacyjny" – w modelu wywłaszczającym aplikacja nie powinna mieć możliwości zatrzymania jądra. Jeśli cały system "staje", częściej przyczyną jest błąd w jądrze, sterowniku lub krytycznym komponencie uprzywilejowanym, a nie zwykły proces użytkownika.
  • "zablokuje pracę wszystkich innych programów" – to charakterystyczne dla wielozadaniowości kooperatywnej, gdzie proces musiał oddać sterowanie. Przy wywłaszczeniu planista nadal przydziela czas innym procesom, więc pojedyncza zawieszona aplikacja nie powinna blokować wszystkich.
  • "nie pozwoli usunąć się z pamięci operacyjnej" – zarządzanie pamięcią jest kontrolowane przez OS; system może proces zakończyć i zwolnić zasoby. Aplikacja nie "zabezpiecza" się samodzielnie przed usunięciem z RAM na poziomie mechanizmów jądra.

W praktyce, gdy program przestaje odpowiadać, można go zakończyć narzędziami administracyjnymi, ponieważ to OS zachowuje kontrolę nad planowaniem i zasobami.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To model, w którym system operacyjny (jądro) decyduje, który proces dostaje czas CPU i może go przerwać w dowolnym momencie. Dzięki temu nawet gdy aplikacja "zawiesi się", planista nadal może przełączać inne procesy i utrzymać działanie systemu.
Bo proces użytkownika działa w trybie użytkownika i nie ma uprawnień do bezpośredniego sterowania jądrem. Jądro odzyskuje kontrolę m.in. przez przerwania zegarowe i może przełączyć kontekst lub zakończyć proces, więc pojedyncza aplikacja nie powinna zatrzymać OS.
Planista (scheduler) wybiera, który proces ma być uruchomiony i na jak długo. W systemie wywłaszczającym nie polega na "dobrym zachowaniu" aplikacji, tylko na mechanizmach jądra. To on sprawia, że inne programy mogą działać mimo błędów jednego procesu.
Przerwania zegarowe pozwalają jądrze cyklicznie odzyskiwać sterowanie po upływie kwantu czasu. Dzięki temu można przerwać działający proces i uruchomić inny. Bez tego łatwo o sytuację, w której jeden proces "trzyma CPU" i reszta nie ma szansy na wykonanie.
W preemptive multitasking typowo nie: planista przydziela CPU niezależnie od stanu jednej aplikacji. Zawieszony program może co najwyżej blokować zasób, z którego korzystają inne (np. plik lub urządzenie), ale nie powinien uniemożliwić planowania i uruchamiania pozostałych procesów.
Tryb użytkownika ma ograniczone uprawnienia i nie może wykonywać instrukcji uprzywilejowanych ani bezpośrednio modyfikować pamięci jądra. Tryb jądra ma pełne uprawnienia do sprzętu i zasobów. To rozdzielenie zwiększa stabilność i ogranicza skutki błędów aplikacji.
Gdy przestaje reagować cały system (np. nie działa przełączanie okien, mysz/klawiatura, nie da się uruchomić menedżera zadań) i sytuacja się utrzymuje. Wtedy częściej winny jest sterownik, błąd jądra albo problem sprzętowy, a nie zwykły proces użytkownika.
Najczęściej używa się narzędzi administracyjnych do zarządzania procesami (np. menedżera zadań lub poleceń systemowych), aby wysłać sygnał zakończenia procesu. To działa, bo OS kontroluje procesy i zasoby; aplikacja nie ma "prawa" zablokować mechanizmów jądra.
Bo intuicyjnie "zawieszenie programu" kojarzy się z sytuacją, gdy wszystko staje. W starszych systemach kooperatywnych aplikacja musiała oddać sterowanie, więc jej błąd mógł zatrzymać całość. W preempcji sterowanie odzyskuje jądro, więc skutki są zwykle lokalne.
Warto umieć wyjaśnić: proces i wątek, stany procesu, kwant czasu, przełączanie kontekstu, planista (scheduler), przerwania zegarowe, tryb użytkownika/jądra oraz izolację pamięci. Te pojęcia łączą teorię z praktycznym diagnozowaniem zawieszeń aplikacji.
info

To pytanie poprawnie rozwiązuje 51% zdających egzamin. trudne

Według specjalistów z branży: "W wielozadaniowości z wywłaszczeniem to jądro i planista procesów kontrolują przydział CPU (m.in. przez przerwania zegarowe)."

Źródła:

  • Wikipedia: https://en.wikipedia.org/wiki/Preemptive_multitasking - accessed 2026-03-01
  • Wikipedia: https://en.wikipedia.org/wiki/Preemption_(computing) - accessed 2026-03-01
  • OSDev Wiki: https://wiki.osdev.org/Preemption - accessed 2026-03-01

Materiały:

  • Dokumentacja systemów operacyjnych: rozdziały o procesach, planowaniu i trybach CPU
  • Materiały dydaktyczne z podstaw systemów operacyjnych (proces, wątek, planista, przerwania)
  • Ćwiczenia praktyczne: obserwacja procesów i ich stanów w narzędziach administracyjnych (Windows/Linux)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego