Wywłaszczenie (informatyka)
| Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi: zweryfikować treść i dodać źródła, Skąd pewność, że wymienione systemy wspierają wywłaszczanie?. Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się na stronie dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
Wywłaszczenie – technika używana w środowiskach wielozadaniowych, w której algorytm szeregujący (scheduler) może wstrzymać aktualnie wykonywane zadanie (np. proces lub wątek), aby umożliwić działanie innemu. Dzięki temu rozwiązaniu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego. W systemach bez wywłaszczenia zadania jawnie informują scheduler, 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 konstrukcje ale wymusza też zadbanie o to, żeby szybko się kończyły umożliwiając działanie innym 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.
Spis treści |
Popularne wielozadaniowe systemy operacyjne z możliwością wywłaszczania procesów [edytuj]
- większość systemów uniksowych
- Microsoft Windows (95, ME, NT, 2000, XP, Vista, Windows 7)
- AmigaOS (Wszystkie wersje, wbudowane w exec.library)
- MorphOS
- MagiC
Popularne wielozadaniowe systemy operacyjne bez możliwości wywłaszczania procesów [edytuj]
- MS-DOS z nakładką Microsoft Windows 3.x i wcześniejsze
- Mac OS 9 i wcześniejsze
Przypisy
- ↑ sched_setscheduler(2) – Linux manual page (ang.). [dostęp 2010-10-1].