Kontekstskift er en teknik eller metode, der bruges af operativsystemet til at skifte en proces fra en tilstand til en anden for at udføre dens funktion ved hjælp af CPU'er i systemet. Når du skifter udføre i systemet, gemmer den den gamle kørende process status i form af registre og tildeler CPU'en til en ny proces for at udføre sine opgaver. Mens en ny proces kører i systemet, skal den tidligere proces vente i en klar kø. Udførelsen af den gamle proces starter på det tidspunkt, hvor en anden proces stoppede den. Det definerer egenskaberne for et multitasking-operativsystem, hvor flere processer delte den samme CPU for at udføre flere opgaver uden behov for yderligere processorer i systemet.
Behovet for kontekstskift
Et kontekstskift hjælper med at dele en enkelt CPU på tværs af alle processer for at fuldføre dens eksekvering og gemme systemets opgavestatus. Når processen genindlæses i systemet, starter udførelsen af processen på samme punkt, hvor der er konflikt.
Følgende er årsagerne, der beskriver behovet for kontekstskift i operativsystemet.
bash læse fil
- Skiftet af en proces til en anden proces er ikke direkte i systemet. Et kontekstskift hjælper det operativsystem, der skifter mellem de mange processer, med at bruge CPU'ens ressource til at udføre sine opgaver og gemme dens kontekst. Vi kan genoptage servicen af processen på samme tidspunkt senere. Hvis vi ikke gemmer den aktuelt kørende process data eller kontekst, kan de lagrede data gå tabt, mens der skiftes mellem processer.
- Hvis en højprioritet proces falder ind i klarkøen, vil den aktuelt kørende proces blive lukket ned eller stoppet af en højprioritet proces for at fuldføre sine opgaver i systemet.
- Hvis en kørende proces kræver I/O-ressourcer i systemet, vil den aktuelle proces blive skiftet af en anden proces til at bruge CPU'erne. Og når I/O-kravet er opfyldt, går den gamle proces i en klar tilstand for at vente på dens udførelse i CPU'en. Kontekstskift lagrer processens tilstand for at genoptage dens opgaver i et operativsystem. Ellers skal processen genstartes fra initialniveauet.
- Hvis der opstår afbrydelser, mens en proces køres i operativsystemet, gemmes processtatus som registre ved hjælp af kontekstskift. Efter at have løst afbrydelserne skifter processen fra en ventetilstand til en klartilstand for at genoptage dens udførelse på samme tidspunkt senere, hvor det afbrudte operativsystem opstår.
- Et kontekstskifte gør det muligt for en enkelt CPU at håndtere flere procesanmodninger samtidigt uden behov for yderligere processorer.
Eksempel på kontekstskift
Antag, at flere processer er lagret i en proceskontrolblok (PCB). En proces kører tilstand for at udføre sin opgave med brug af CPU'er. Mens processen kører, ankommer en anden proces i klarkøen, som har høj prioritet til at fuldføre sin opgave ved hjælp af CPU. Her brugte vi kontekstskift, der skifter den aktuelle proces med den nye proces, der kræver, at CPU'en afslutter sine opgaver. Mens du skifter processen, gemmer en kontekstswitch status for den gamle proces i registre. Når processen genindlæses i CPU'en, starter den udførelsen af processen, når den nye proces stopper den gamle proces. Hvis vi ikke gemmer processens tilstand, er vi nødt til at starte dens eksekvering på det indledende niveau. På denne måde hjælper kontekstskift operativsystemet med at skifte mellem processerne, gemme eller genindlæse processen, når det kræver at udføre sine opgaver.
Kontekstskift udløses
Følgende er de tre typer af kontekstskifte-triggere som følger.
- Afbryder
- Multitasking
- Kerne/bruger switch
Afbryder : En CPU anmoder om, at dataene skal læses fra en disk, og hvis der er nogen afbrydelser, skifter kontekstskiftet automatisk en del af hardwaren, der kræver mindre tid til at håndtere afbrydelserne.
Multitasking : Et kontekstskift er karakteristikken ved multitasking, der gør det muligt at skifte processen fra CPU'en, så en anden proces kan køres. Når processen skiftes, gemmes den gamle tilstand for at genoptage processens udførelse på samme sted i systemet.
hvordan man konverterer et heltal til en streng i java
Kerne/bruger switch : Det bruges i operativsystemerne, når der skiftes mellem brugertilstand, og kerne/brugertilstand udføres.
Hvad er PCB?
Et PCB (Process Control Block) er en datastruktur, der bruges i operativsystemet til at gemme alle data relateret information til processen. For eksempel, når en proces er oprettet i operativsystemet, opdateret information om processen, skift af information om processen, afsluttet proces i PCB.
python __dict__
Trin til kontekstskift
Der er flere trin involveret i kontekstskifte af processerne. Det følgende diagram repræsenterer kontekstskiftningen af to processer, P1 til P2, når en afbrydelse, I/O-behov eller en prioritetsbaseret proces opstår i den klare kø af PCB.
Som vi kan se i diagrammet, kører P1-processen i første omgang på CPU'en for at udføre sin opgave, og samtidig er en anden proces, P2, i klar tilstand. Hvis der er opstået en fejl eller afbrydelse, eller processen kræver input/output, skifter P1-processen sin tilstand fra at køre til den ventende tilstand. Inden tilstanden af processen P1 ændres, gemmer kontekstskift konteksten af processen P1 i form af registre og programtælleren til PCB1 . Derefter indlæser den tilstanden for P2-processen fra klartilstanden af PCB2 til kørende tilstand.
Følgende trin tages, når du skifter proces P1 til proces 2:
- For det første skal denne kontekstskifte gemme tilstanden af proces P1 i form af programtælleren og registrene til PCB'en (Program Counter Block), som er i kørende tilstand.
- Opdater nu PCB1 til proces P1 og flytter processen til den passende kø, såsom klarkøen, I/O-køen og ventekøen.
- Derefter kommer en anden proces i køretilstand, eller vi kan vælge en ny proces fra klartilstanden, som skal udføres, eller processen har høj prioritet til at udføre sin opgave.
- Nu skal vi opdatere PCB'en (Process Control Block) for den valgte proces P2. Det inkluderer at skifte procestilstand fra klar til kørende tilstand eller fra en anden tilstand som blokeret, exit eller suspenderet.
- Hvis CPU'en allerede udfører proces P2, er vi nødt til at få status for proces P2 for at genoptage dens eksekvering på samme tidspunkt, hvor systemafbrydelsen opstår.
På samme måde slukkes proces P2 fra CPU'en, så processen P1 kan genoptage eksekveringen. P1-processen genindlæses fra PCB1 til kørende tilstand for at genoptage sin opgave på samme tidspunkt. Ellers går informationen tabt, og når processen udføres igen, starter den eksekvering på det indledende niveau.