Kontekstbytte er en teknikk eller metode som brukes av operativsystemet for å bytte en prosess fra en tilstand til en annen for å utføre funksjonen ved hjelp av CPUer i systemet. Når du bytter utføre i systemet, lagrer den den gamle kjørende prosessens status i form av registre og tilordner CPUen til en ny prosess for å utføre sine oppgaver. Mens en ny prosess kjører i systemet, må den forrige prosessen vente i en klar kø. Utførelsen av den gamle prosessen starter på det punktet der en annen prosess stoppet den. Den definerer egenskapene til et multitasking-operativsystem der flere prosesser delte samme CPU for å utføre flere oppgaver uten behov for ekstra prosessorer i systemet.
Behovet for kontekstbytte
En kontekstbytte hjelper til med å dele en enkelt CPU på tvers av alle prosesser for å fullføre utførelsen og lagre systemets oppgavestatus. Når prosessen lastes inn på nytt i systemet, starter utførelsen av prosessen på samme punkt der det er konflikt.
Følgende er årsakene som beskriver behovet for kontekstbytte i operativsystemet.
sorter en array java
- Bytting av en prosess til en annen prosess er ikke direkte i systemet. En kontekstbytte hjelper operativsystemet som bytter mellom flere prosesser til å bruke CPU-ressursen til å utføre oppgavene og lagre konteksten. Vi kan gjenoppta tjenesten av prosessen på samme tidspunkt senere. Hvis vi ikke lagrer den aktuelle prosessens data eller kontekst, kan de lagrede dataene gå tapt mens du bytter mellom prosesser.
- Hvis en prosess med høy prioritet faller inn i klarkøen, vil prosessen som kjører for øyeblikket bli stengt eller stoppet av en prosess med høy prioritet for å fullføre oppgavene i systemet.
- Hvis en kjørende prosess krever I/O-ressurser i systemet, vil gjeldende prosess byttes av en annen prosess for å bruke CPU-ene. Og når I/O-kravet er oppfylt, går den gamle prosessen inn i en klar tilstand for å vente på utførelse i CPU. Kontekstbytte lagrer tilstanden til prosessen for å gjenoppta oppgavene i et operativsystem. Ellers må prosessen starte på nytt fra initialnivået.
- Hvis det oppstår avbrudd mens en prosess kjøres i operativsystemet, lagres prosessstatusen som registre ved hjelp av kontekstbytte. Etter å ha løst avbruddene, bytter prosessen fra en ventetilstand til en klartilstand for å gjenoppta kjøringen på samme punkt senere, der operativsystemet som ble avbrutt oppstår.
- En kontekstbytte lar en enkelt CPU håndtere flere prosessforespørsler samtidig uten behov for noen ekstra prosessorer.
Eksempel på kontekstbytte
Anta at flere prosesser er lagret i en prosesskontrollblokk (PCB). En prosess kjører tilstand for å utføre sin oppgave med bruk av CPUer. Mens prosessen kjører, kommer en annen prosess i klarkøen, som har høy prioritet til å fullføre oppgaven ved hjelp av CPU. Her brukte vi kontekstbytte som bytter gjeldende prosess med den nye prosessen som krever at CPU fullfører oppgavene sine. Mens du bytter prosessen, lagrer en kontekstbryter statusen til den gamle prosessen i registre. Når prosessen lastes inn på nytt i CPUen, starter den utførelsen av prosessen når den nye prosessen stopper den gamle prosessen. Hvis vi ikke lagrer tilstanden til prosessen, må vi starte utførelsen på det opprinnelige nivået. På denne måten hjelper kontekstbytte operativsystemet til å bytte mellom prosessene, lagre eller laste inn prosessen på nytt når det krever å utføre oppgavene.
Utløser for kontekstbytte
Følgende er de tre typene av kontekstbytteutløsere som følger.
- Avbryter
- Multitasking
- Kjerne/brukerbryter
Avbryter : En CPU ber om at dataene skal leses fra en disk, og hvis det er noen avbrudd, bytter kontekstbytte automatisk en del av maskinvaren som krever mindre tid for å håndtere avbruddene.
Multitasking : En kontekstbytte er egenskapen til multitasking som gjør at prosessen kan byttes fra CPU slik at en annen prosess kan kjøres. Når du bytter prosess, lagres den gamle tilstanden for å gjenoppta prosessens utførelse på samme punkt i systemet.
konverter char til string java
Kjerne/brukerbryter : Den brukes i operativsystemene når du bytter mellom brukermodus, og kjerne-/brukermodus utføres.
Hva er PCB?
En PCB (Process Control Block) er en datastruktur som brukes i operativsystemet for å lagre all data relatert informasjon til prosessen. For eksempel, når en prosess er opprettet i operativsystemet, oppdatert informasjon om prosessen, vekslingsinformasjon om prosessen, avsluttet prosessen i PCB.
python __dict__
Trinn for kontekstbytte
Det er flere trinn involverer i kontekstbytte av prosessene. Følgende diagram representerer kontekstsvitsjen av to prosesser, P1 til P2, når et avbrudd, I/O-behov eller prioritetsbasert prosess oppstår i den klare køen til PCB.
Som vi kan se i diagrammet, kjører P1-prosessen i utgangspunktet på CPU-en for å utføre oppgaven, og samtidig er en annen prosess, P2, i klar-tilstand. Hvis det har oppstått en feil eller avbrudd eller prosessen krever input/output, skifter P1-prosessen sin tilstand fra å kjøre til ventetilstand. Før du endrer tilstanden til prosessen P1, lagrer kontekstveksling konteksten til prosessen P1 i form av registre og programtelleren til PCB1 . Etter det laster den inn tilstanden til P2-prosessen fra klartilstanden til PCB2 til løpende tilstand.
Følgende trinn tas når du bytter prosess P1 til prosess 2:
- Først må denne kontekstsvitsjen lagre tilstanden til prosess P1 i form av programtelleren og registrene til PCB (Program Counter Block), som er i kjøretilstand.
- Oppdater nå PCB1 til prosess P1 og flytter prosessen til riktig kø, slik som klarkøen, I/O-køen og ventekøen.
- Etter det kommer en annen prosess i kjøretilstand, eller vi kan velge en ny prosess fra klartilstanden, som skal utføres, eller prosessen har høy prioritet til å utføre oppgaven.
- Nå må vi oppdatere PCB (Process Control Block) for den valgte prosessen P2. Det inkluderer å bytte prosesstilstand fra klar til kjørende tilstand eller fra en annen tilstand som blokkert, avslutt eller suspendert.
- Hvis prosessoren allerede kjører prosess P2, må vi få statusen til prosess P2 for å gjenoppta dens utførelse på samme tidspunkt der systemavbruddet oppstår.
På samme måte blir prosess P2 slått av fra CPU slik at prosessen P1 kan gjenoppta kjøringen. P1-prosessen lastes på nytt fra PCB1 til kjørende tilstand for å gjenoppta oppgaven på samme punkt. Ellers går informasjonen tapt, og når prosessen utføres igjen, starter den utførelse på det opprinnelige nivået.