środa,
Wywłaszczanie procesów
Wywłaszczanie procesów w systemach operacyjnych odnosi się do mechanizmu, dzięki któremu system może przerwać bieżący proces (lub wątek) i uruchomić inny proces. Ta funkcja jest bardzo ważna w systemach wielozadaniowych, gdzie wiele procesów lub wątków musi być wykonanych równolegle, a system operacyjny może zarządzać, które procesy są uruchamiane w danym momencie, aby zapewnić sprawiedliwy i efektywny podział zasobów. Wywłaszczanie jest podstawowym mechanizmem w nowoczesnych systemach operacyjnych, umożliwiającym efektywne i sprawiedliwe zarządzanie zasobami procesora w środowisku wielozadaniowym. Bez wywłaszczania, procesy mogłyby zawłaszczać procesor na nieokreślony czas, powodując opóźnienia lub brak reakcji systemu na inne zadania.
Systemy bez wywłaszczania to takie, które polegają na kooperacyjnej wielozadaniowości, gdzie procesy muszą aktywnie oddawać kontrolę systemowi operacyjnemu, aby umożliwić wykonanie innych procesów. W systemach tych, procesy nie są przymusowo przerywane i zastępowane przez inne procesy – zamiast tego, każdy proces musi samodzielnie zdecydować o zwolnieniu procesora. Z tego powodu współczesne systemy operacyjne zazwyczaj preferują wielozadaniowość z wywłaszczaniem, która pozwala systemowi operacyjnemu na bardziej efektywne i sprawiedliwe zarządzanie zasobami.
Wielozadaniowość z wywłaszczaniem
Wielozadaniowość z wywłaszczaniem to zaawansowana forma wielozadaniowości, którą stosują nowoczesne systemy operacyjne, aby umożliwić jednoczesne wykonywanie wielu procesów. Ta technika jest fundamentalna dla efektywnego i sprawiedliwego zarządzania zasobami systemowymi, szczególnie procesorem.
System operacyjny automatycznie przełącza kontekst między procesami, używając mechanizmu zwanego planistą (scheduler). Planista decyduje, który proces ma być wykonany, na podstawie różnych kryteriów, takich jak priorytet, czas wykonywania, i inne. Przerwania od zegara systemowego lub inne przerwania sprzętowe pozwalają systemowi operacyjnemu na przerwanie bieżącego procesu i uruchomienie innego, wyższego priorytetu. To zapewnia, że ważne procesy otrzymują odpowiedni czas procesora. Systemy z wielozadaniowością z wywłaszczaniem są bardziej reaktywne na działania użytkownika i zdarzenia systemowe, ponieważ mogą szybko przerwać obecnie wykonywane procesy, aby zająć się ważniejszymi zadaniami.
Główne aspekty wywłaszczania
Sprawiedliwość
Wywłaszczanie zapewnia, że każdy proces otrzyma odpowiednią ilość czasu procesora, co zapobiega sytuacji, w której jeden proces monopolizuje zasoby na długi czas.
Reaktywność
W systemach interaktywnych, takich jak systemy czasu rzeczywistego lub systemy operacyjne komputerów osobistych, wywłaszczanie pozwala systemowi szybko reagować na wejścia użytkownika lub krytyczne zdarzenia systemowe, przerywając bieżące procesy, aby uruchomić te o wyższym priorytecie.
Wydajność
Przez optymalne przydzielanie czasu procesora różnym procesom, wywłaszczanie może pomóc w maksymalizacji wykorzystania CPU, zmniejszając czas bezczynności i zwiększając ogólną przepustowość systemu.
Jak działa wywłaszczanie?
Timer Interrupts
Najczęściej systemy używają przerwań timera do regularnego przerywania bieżącego procesu, pozwalając systemowi operacyjnemu na podjęcie decyzji, czy kontynuować z bieżącym procesem, czy przełączyć się na inny proces.
Priorytety procesów
Systemy operacyjne często przydzielają procesom priorytety, które są brane pod uwagę podczas decydowania, który proces wykonać jako następny. Procesy o wyższym priorytecie mogą wywłaszczać procesy o niższym priorytecie.
Obsługa zdarzeń
Wywłaszczanie umożliwia systemowi szybką reakcję na ważne zdarzenia systemowe lub aktywność użytkownika, nawet jeśli inne procesy są aktualnie wykonywane.
Wspieranie mechanizmu wywłaszczania w systemach
Obecnie prawie wszystkie systemy operacyjne obsługują wielozadaniowość z wywłaszczaniem, w tym współczesne wersje systemów Windows, macOS, Linux (także Android), iOS i iPadOS. Ten mechanizm był od zawsze wspierany przez Windows NT i większość systemów uniksowych.
Przykłady systemów bez wywłaszczania
Wczesne wersje systemu operacyjnego Windows, aż do Windows 3.11, używały kooperacyjnej wielozadaniowości. Procesy (lub aplikacje) musiały regularnie wywoływać systemowe punkty przerwania, aby umożliwić systemowi zarządzanie czasem procesora. Jeśli aplikacja tego nie robiła, mogła zawłaszczyć cały system.
Klasyczny system operacyjny Macintosh, przed wprowadzeniem Mac OS X, również opierał się na kooperacyjnej wielozadaniowości. Aplikacje musiały periodycznie oddawać kontrolę systemowi, aby umożliwić innym aplikacjom działanie. Jeżeli aplikacja się „zawiesiła” lub nie oddawała kontroli, mogła zablokować cały system.