Processer i ett OS

Processer är körbara enheter som antingen kan startas av användaren genom att öppna ett program eller av andra processer genom operativsystemets mekanismer. Alla processer måste schemaläggas för att resurser, som CPU-tid, ska användas effektivt och rättvist. Schemaläggning är en teknik där operativsystemet bestämmer i vilken ordning och hur länge varje process får tillgång till systemresurser. Det finns flera olika metoder för att schemalägga processer:

  • Round-robin: I denna metod tilldelas varje process en fast tidskvanta (en kort tid att exekvera) och CPU roterar mellan processerna i en cyklisk ordning. När en process har använt sin tilldelade tid, flyttas den längst bak i kön och väntar på sin tur igen. Detta tillvägagångssätt ger alla processer en chans att exekveras och förhindrar att någon process monopoliserar CPU. Denna metod är särskilt användbar i system som kräver rättvisa och interaktivitet.
  • FIFO (First-In-First-Out): Denna schemaläggningsteknik kör processer i den ordning de anländer till kön. Den första processen som startas är den första som exekveras, och den körs tills den avslutas innan nästa process i kön får köra. Till skillnad från round-robin är FIFO inte cyklisk, vilket innebär att processerna inte byter plats i kön. En nackdel med FIFO är att långa processer kan blockera andra, vilket kan leda till s.k. ”convoy effect.”
  • Lottoschemaläggning: Detta är en rättvis och slumpmässig metod där CPU-tid fördelas genom ett lotterisystem. Varje process tilldelas ”lotter”, och processorn väljer slumpmässigt en vinnare av CPU-tiden baserat på dessa lotter. Över tid resulterar detta i en rättvis fördelning som liknar round-robin, men med ett mer slumpmässigt inslag. Denna metod säkerställer att alla processer får en chans att exekveras, även om vissa processer kan få mer CPU-tid under en viss period beroende på slumpen.

Processers livscykel

En process startar i tillståndet New när den skapas. Därefter flyttas den till Ready-tillståndet, där den väntar på CPU-tid. När den får CPU-tid går den över till Running-tillståndet. Om den behöver vänta på något, t.ex. I/O, går den till Waiting-tillståndet. När I/O är slutfört flyttas den tillbaka till Ready för att återigen vänta på CPU-tid. När processen är färdig med sin exekvering, flyttas den till Terminated-tillståndet och alla resurser som var tilldelade frigörs.

Applikationshantering

När du startar ett program i Windows skapas en ny process för programmet. Denna process tilldelas ett privat virtuellt adressutrymme och en egen referenstabell, vilket säkerställer att programmet inte kan påverka eller ändra data som tillhör andra program. Tack vare denna isolering körs varje program separat från de andra, vilket innebär att om ett program kraschar påverkas inte andra program eller själva operativsystemet. Detta bidrar till ökad stabilitet och säkerhet i systemet, eftersom fel i enskilda program inte sprider sig.

All interaktion med datorn sker genom processer, både när det gäller applikationer och tjänster. Operativsystemet ansvarar för att hantera dessa processer och tilldela nödvändiga resurser, såsom kommunikationskanaler, processorkraft, RAM-minne och lagringsutrymme, så att varje process kan fungera korrekt.

När applikationer behöver åtkomst till datorns hårdvara uppstår dock begränsningar, eftersom applikationerna inte kan känna till alla tekniska detaljer om varje specifik hårdvarukomponent. Dessutom skulle det vara riskabelt att ge applikationer fullständig åtkomst till hårdvaran och drivrutinerna, eftersom det skulle kunna äventyra systemets stabilitet och säkerhet.

För att hantera detta problem delar operativsystemet upp datorns körningsläge i två nivåer: användarläge (user mode) och systemläge (kernel mode). I användarläget har applikationer begränsad åtkomst till systemresurser och kommunicerar med hårdvaran genom operativsystemets gränssnitt. I systemläget, där operativsystemets kärna körs, finns fullständig kontroll över hårdvaran och drivrutinerna.

Operativsystemet fungerar som en mellanhand, som ansvarar för kommunikationen mellan användaren, applikationerna och datorns hårdvara. Detta tillvägagångssätt gör det möjligt för applikationer att fungera korrekt på olika typer av hårdvara utan att behöva hantera de tekniska detaljerna för varje specifik komponent.

Bilder nedan illustrerar två olika datorer (A och B) med olika hårdvarukonfigurationer. Operativsystemet skapar en enhetlig struktur som gör att applikationer kan interagera med hårdvaran på ett konsekvent sätt, oavsett vilken dator eller konfiguration som används. Bilden visar de fyra skikt eller lager som är självständiga men som samverkar för att möjliggöra denna interaktion mellan applikationer och hårdvara.

Bild 2: Samarbete