Wywłaszczenie – technika używana w środowiskach wielozadaniowych, w której algorytm szeregujący zwany planistą lub dyspozytorem może wstrzymać aktualnie wykonywane zadanie (np. proces lub wątek), aby umożliwić działanie innemu zadaniu. Dzięki temu rozwiązaniu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego. W systemach bez wywłaszczenia zadania jawnie informują planistę, w którym momencie chcą umożliwić przejście do innych zadań. Jeżeli nie zrobią tego w odpowiednim czasie, system zaczyna działać bardzo wolno. Oprócz tego wywłaszczanie umożliwia szczegółowe określanie czasu, w jakim dany proces może korzystać z procesora. Wywłaszczanie w niektórych systemach operacyjnych może dotyczyć nie tylko programów, ale także samego jądra – przykładem takiego systemu jest Linux[1].
Wywłaszczanie jest często ograniczane, na przykład procedury odpowiedzialne za obsługę przerwań sprzętowych są zwykle niewywłaszczalne, co znacznie upraszcza ich konstrukcję, ale wymusza też zadbanie o to, żeby szybko ulegały zakończeniu, umożliwiając działanie innym uruchomionym procesom. W jądrze Linuksa przed wersją 2.6 niemożliwe było wywłaszczenie procesu, który znajdował się w trybie jądra, co w pewnych sytuacjach mogło być powodem bardzo wolnej reakcji na działania użytkownika.
Systemy operacyjne z możliwością wywłaszczania procesów
[edytuj | edytuj kod]- większość systemów uniksowych[2]
- Microsoft Windows (95, ME, NT, 2000, XP, Vista, 7, 8, 8.1, 10)
- AmigaOS (wszystkie wersje wbudowane w exec.library)
- MorphOS
- MagiC
Systemy operacyjne bez możliwości wywłaszczania procesów
[edytuj | edytuj kod]- Windows 3.x i wcześniejsze
- Mac OS 9 i wcześniejsze
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ sched_setscheduler(2) – Linux manual page. [dostęp 2010-10-01]. (ang.).
- ↑ 4. W: Robert Love: Linux Kernel Development 3rd edition. Addison Wesley, 2010, s. 62–63. ISBN 978-0-672-32946-3.