Kooperativ multitasking - Cooperative multitasking

Kooperativ multitasking , også kjent som ikke-preemptive multitasking , er en stil for datamaskin multitasking der operativsystemet aldri starter en kontekstbytte fra en kjørende prosess til en annen prosess. I stedet, for å kjøre flere applikasjoner samtidig, gir prosesser frivillig kontroll periodisk eller når den er inaktiv eller logisk blokkert . Denne typen multitasking kalles kooperativ fordi alle programmer må samarbeide for at planleggingsordningen skal fungere.

I denne ordningen er prosessplanleggeren for et operativsystem kjent som en kooperativ planlegger hvis rolle er begrenset til å starte prosessene og la dem returnere kontrollen tilbake til det frivillig.

Bruk

Selv om det sjelden brukes i moderne større systemer, er det mye brukt i minnebegrensede innebygde systemer og også i spesifikke applikasjoner som CICS eller JES2- delsystemet. Kooperativ multitasking var det primære planleggingsopplegget for 16-biters applikasjoner som ble brukt av Microsoft Windows før Windows 95 og Windows NT , og med det klassiske Mac OS . Windows 9x brukte ikke- forebyggende multitasking for 16-biters eldre programmer, og PowerPC- versjonene av Mac OS X før Leopard brukte den for klassiske applikasjoner. NetWare , som er et nettverksorientert operativsystem, brukte kooperativ multitasking opp til NetWare 6.5. Kooperativ multitasking brukes fortsatt på RISC OS -systemer.

Kooperativ multitasking brukes med vente på språk, for eksempel JavaScript eller Python , som har en enkelttrådet hendelsesløyfe i løpetiden.

Problemer

Ettersom et kooperativt fleroppgavebasert system er avhengig av at hver prosess regelmessig gir opp tid til andre prosesser på systemet, kan et dårlig utformet program forbruke all CPU -tiden for seg selv, enten ved å utføre omfattende beregninger eller ved opptatt ventetid ; begge ville få hele systemet til å henge . I et servermiljø er dette en fare som gjør hele miljøet uakseptabelt skjørt.

I kontrast avbryter forebyggende multitasking applikasjoner og gir kontroll til andre prosesser utenfor applikasjonens kontroll.

Potensialet for systemhenging kan lindres ved å bruke en vekterhundtimer , ofte implementert i maskinvare; Dette påkaller vanligvis en maskinvaretilbakestilling .

Kooperativ multitasking tillater mye enklere implementering av applikasjoner fordi utførelsen deres aldri blir uventet avbrutt av prosessplanleggeren; for eksempel ulike funksjoner gjør inne i programmet ikke trenger å være innadgående .

Se også

Referanser