Wielozadaniowość kooperacyjna - Cooperative multitasking

Wielozadaniowość kooperacyjna , znana również jako wielozadaniowość bez wywłaszczania , to styl komputerowej wielozadaniowości, w której system operacyjny nigdy nie inicjuje przełączania kontekstu z uruchomionego procesu do innego procesu. Zamiast tego, w celu jednoczesnego uruchamiania wielu aplikacji, procesy dobrowolnie przekazują kontrolę okresowo lub gdy są bezczynne lub logicznie zablokowane . Ten rodzaj wielozadaniowości nazywany jest kooperacją, ponieważ wszystkie programy muszą ze sobą współpracować, aby schemat planowania działał.

W tym schemacie planista procesów systemu operacyjnego jest znany jako planista kooperacyjny, którego rola ogranicza się do uruchamiania procesów i umożliwienia im dobrowolnego zwrócenia mu kontroli.

Stosowanie

Chociaż jest rzadko używany w nowoczesnych większych systemach, jest szeroko stosowany w systemach osadzonych z ograniczoną pamięcią , a także w określonych aplikacjach, takich jak CICS lub podsystem JES2 . Wielozadaniowość kooperacyjna była podstawowym schematem planowania dla 16-bitowych aplikacji stosowanych przez Microsoft Windows przed Windows 95 i Windows NT oraz przez klasyczny Mac OS . Windows 9x używał wielozadaniowości bez wywłaszczania dla 16-bitowych starszych aplikacji, a wersje PowerPC systemu Mac OS X przed Leopardem używały go do klasycznych aplikacji. NetWare , który jest systemem operacyjnym zorientowanym na sieć, wykorzystywał kooperacyjną wielozadaniowość aż do NetWare 6.5. Wielozadaniowość kooperacyjna jest nadal używana w systemach RISC OS .

Wielozadaniowość kooperacyjna jest używana z await w językach, takich jak JavaScript lub Python , które zawierają jednowątkową pętlę zdarzeń w swoim środowisku wykonawczym.

Problemy

Ponieważ wielozadaniowy system oparty na współpracy polega na tym, że każdy proces regularnie oddaje czas innym procesom w systemie, jeden źle zaprojektowany program może zużywać dla siebie cały czas procesora, wykonując obszerne obliczenia lub zajęty oczekiwaniem ; oba spowodowały zawieszenie całego systemu . W środowisku serwerowym jest to zagrożenie, które sprawia, że ​​całe środowisko jest niedopuszczalnie kruche.

W przeciwieństwie do tego, wielozadaniowość z wywłaszczaniem przerywa działanie aplikacji i daje kontrolę nad innymi procesami znajdującymi się poza kontrolą aplikacji.

Potencjał zawieszania się systemu można złagodzić za pomocą timera watchdog , często implementowanego sprzętowo; to zazwyczaj wywołuje reset sprzętowy .

Wielozadaniowość kooperacyjna pozwala na znacznie prostszą implementację aplikacji, ponieważ ich wykonywanie nigdy nie jest nieoczekiwanie przerywane przez harmonogram procesów; na przykład różne funkcje wewnątrz aplikacji nie muszą być ponownie wprowadzane .

Zobacz też

Bibliografia