Översikt
I databehandling syftar termen kontext på den samling av tillstånd och data som krävs för att en uppgift — till exempel en process, tråd eller avbrottsrutin — ska kunna avbrytas och senare återupptas utan fel. Kontexten motsvarar uppgiftens "arbetsläge": instruktionens adress, processorns registerinnehåll, och ofta annan systeminformation som gör att utförandet kan fortsätta exakt där det slutade.
Vad ingår i en kontext?
- Processorregister: programräknare (PC), stackpekare (SP), status- och flaggregister samt allmänna register som innehåller mellanresultat.
- Arkitekturspecifika register: kontrollregister, segment- eller sidtabellspekare, och specialregister för minneshantering.
- FPU/SIMD-tillstånd: flyttals- och vektorregister som ofta är stora och kan hanteras separat för att minska overhead.
- Stack och heappekare: pekare till uppgiftens minnesområden så att anrop och lokala variabler bevaras.
Notera att filinnehåll på disk och permanenta data normalt inte räknas till den omedelbara kontexten vid en kort kontextväxling, även om operativsystemet håller metadata (som filbeskrivningar) kopplade till processen.
Kontextväxling och prestanda
En kontextväxling innebär att spara aktuell uppgifts tillstånd och ladda en annan uppgifts tillstånd. Detta är en nödvändig operation i multitaskingmiljöer och vid hantering av avbrott. Tidskostnaden för en växling beror på hur mycket tillstånd som måste sparas/återställas: ju större kontext, desto högre latens. Av den anledningen används tekniker som "latinsk sparning" av stora registeruppsättningar (till exempel FPU) först när de behövs.
Särskilda situationer
- Trådar vs processer: trådar inom samma process delar ofta adressrymden och filtabeller, vilket gör trådbyten lättare än fullständiga processväxlingar.
- Interrupt- och avbrottskontext: när hårdvara triggar ett avbrott sparas endast det som behövs för att hantera avbrottet, och återställs snabbt för att minimera störningar i löpande uppgifter.
- Realtidsoperativsystem: i RTOS optimeras kontexten för att hålla växlingslatens så liten och förutsägbar som möjligt.
Tillämpningar och betydelse
Kontextbegreppet är centralt för multitasking, samt för felsökning och felåterställning. I distribuerade system och för checkpointing kompletteras den kortlivade kontexten med mer omfattande processbilder för att möjliggöra återupptagande efter fel eller migrering mellan noder. För optimering av systemprestanda och energiförbrukning är förståelsen av vad som ingår i kontexten och hur ofta växlingar sker viktig.
Skillnad mot checkpointing
En kontextväxling är normalt en snabb, kortvarig operation för att växla CPU-tid mellan uppgifter. Checkpointing är däremot en mer omfattande lagringsåtgärd där hela processens tillstånd (minne, öppna resurser och ibland filsystemets status) skrivs ut för långsiktig återställning eller migrering. Checkpointing används för felhantering och underhåll, inte för rutinmässig multitasking.
Sammanfattningsvis är kontext i databehandling den minimala mängd tillstånd som måste bevaras för korrekt avbrott och återupptagande av arbete. Hur detta hanteras påverkar operativsystemets design, prestanda och förmåga att uppfylla krav på determinism och låg latens.