En mjukvarutimer, även känd som en mjukvarubaserad timer eller en programmerad timer, är en mekanism inom ett datorprogram som simulerar en timer med CPU:s bearbetningskraft snarare än att förlita sig på dedikerade hårdvarutimering. Den använder inte specialiserade hårdvaruchips, utan förlitar sig istället på programvarans förmåga att spåra tid och utlösa händelser baserat på förfluten tid.
Så här fungerar det:
* TimeKeeping: Programvarutimern håller reda på tid, vanligtvis genom att regelbundet kontrollera systemklockan (en högupplöst räknare som upprätthålls av operativsystemet). Detta kan innebära enkel subtraktion (jämföra aktuell tid med en måltid) eller mer sofistikerade metoder.
* evenemangsplanering: Programvarutimern är inställd på att utlösa en händelse eller köra en funktion efter ett specifikt tidsintervall eller vid en viss tidpunkt.
* Implementering: Implementeringen varierar beroende på programmeringsspråk och operativsystem. Vanliga tekniker inkluderar:
* polling: Programmet kontrollerar kontinuerligt den aktuella tiden mot måltiden. Detta är enkelt men förbrukar CPU -resurser, eftersom programmet aktivt måste övervaka tiden.
* Interrupt-driven (sällsynt i rena programvarutimerare): Även om det är mindre vanligt för rent mjukvarutimering, kan vissa använda systemavbrott med regelbundna intervall. Avbrottshanteraren skulle kontrollera om några programvarutimerare har gått ut. Detta är mer effektivt än omröstning men kräver interaktion på OS-nivå.
* Sov-/väntafunktioner: Programmet kan använda funktioner som `Sleep ()` (på språk som C/C ++) eller liknande konstruktioner för att pausa exekvering under en viss varaktighet innan du återupptar och kontrollerar för timerutgång. Detta är en kompromiss mellan omröstning och avbrottsdrivna tillvägagångssätt, med mindre CPU än omröstning men potentiellt mindre exakt.
Fördelar:
* Flexibilitet: Programvarutimerare kan enkelt programmeras och anpassas för att hantera komplexa tidsbehov.
* portabilitet (potentiellt): Väl utformade programvarutimers kan lättare portas över olika operativsystem än hårdvaru timerbaserade lösningar.
Nackdelar:
* cpu overhead: Pollingbaserade mjukvarutimerare kan konsumera betydande CPU-resurser, särskilt om många timers kör samtidigt.
* noggrannhet: Noggrannheten för en programvarutimer beror på frekvensen vid vilken systemklockan uppdateras och precisionen i systemets tidtagningsmekanism. Det är i allmänhet mindre exakt än hårdvarutimers.
* Blockering (potentiellt): Enkla implementeringar kan blockera andra delar av programmet medan du väntar på att timern ska löpa ut.
Användningsfall:
Programvarutimerare används ofta i:
* spelutveckling: För uppgifter som animering, kontroll av fiendens AI och utlösande händelser.
* inbäddade system: Där hårdvarutimering kan vara begränsade eller inte tillgängliga.
* Operativsystem: För schemaläggningsuppgifter och hanteringsprocesser.
* Nätverksapplikationer: För timeouts och tillbakadragningar.
I motsats till hårdvarutimers, som är dedikerade chips på moderkortet, är programvarutimering rent en mjukvarukonstruktion. De är ofta ett bra val för enklare applikationer eller situationer där hårdvaritiders inte är tillgängliga eller opraktiska att använda, men de är inte ett ersättare för högpråkision, realtidsapplikationer som kräver mycket noggrann tidpunkt.