Du har rett i å være nysgjerrig! Et enkelt prosessorsystem kan ikke virkelig kjøre flere prosesser * samtidig * i ordets sanneste forstand. Slik fungerer det:
Tidsdeling:
* CPU -sykluser: Prosessoren har utrolig raske klokkesykluser. Den kan veksle mellom forskjellige oppgaver (prosesser) veldig raskt, og gi hver en liten skive av sin tid.
* Rapid Switching: Operativsystemet fungerer som en "trafikk politimann", og veksler raskt mellom prosesser, og gir hver et kort utbrudd av CPU -tid før de bytter til en annen. Denne vekslingen skjer så raskt at den ser ut til at brukeren som programmene kjører samtidig.
* Kontekstbytte: Når en prosess blir slått ut, lagrer operativsystemet sin nåværende tilstand (registre, minneadresser osv.) Og laster tilstanden til neste prosess. Dette sikrer at prosessen kan ta seg opp der den slapp når den får sin neste sving.
Eksempel:
Se for deg at du har en enkelt kokk som tilbereder flere retter. De kan ikke lage alt på en gang, men de kan raskt bytte mellom oppgaver:
1. Rør suppen i noen sekunder.
2. Vend burgeren et øyeblikk.
3. Hakk grønnsaker i en kort periode.
4. Gjenta, og gi hver rett oppmerksomhet i en kort syklus.
Kokken er analog med prosessoren, og oppvasken representerer de forskjellige prosessene.
Fordeler med tidsdeling:
* Effektivitet: Lar flere programmer kjøre på en enkelt prosessor uten å trenge flere fysiske prosessorer.
* Responsivitet: Gir illusjonen av interaktive programmer selv om systemet er opptatt.
* Ressursdeling: Lar flere prosesser dele ressurser som minne og periferiutstyr.
Viktige hensyn:
* Performance Impact: Å bytte mellom prosesser tar tid. Dette kalles kontekstbytte overhead og kan bremse det samlede systemet hvis prosessene er veldig krevende.
* Multi-core CPUer: Moderne datamaskiner har ofte flere kjerner, noe som tillater ekte samtidig utførelse av flere prosesser.
Avslutningsvis:
Selv om en enkelt prosessor ikke virkelig kan kjøre flere prosesser samtidig, kan den bruke tidsdeling for å gi illusjonen om samtidig utførelse. Dette er en kraftig teknikk som muliggjør effektiv bruk av ressurser og gir en responsiv brukeropplevelse.