Dator- och nätverksteknik · område 6 · lektion 26
Hur operativsystemet arbetar
Kärnan gör tre saker: delar ut processorn, delar ut minnet, och avgör vem som får röra vad. Den tredje togs på lektion 25. Här tas de två första — och ingenting av det går att peka på i ett chassi.
Prov 2 den 15 december omfattar område 6 och 7. Härifrån kommer processerna och minnet — särskilt de två meningarna i avsnitt 6.
1. En processor, många program
Hur många program körs på din dator just nu? Fler än du ser fönster för. Och hur många processorkärnor har den? Betydligt färre.
Slutsatsen är att de inte kör samtidigt. Operativsystemet låter dem turas om, och byter så snabbt att det upplevs som parallellt.
Två begrepp:
- Process — ett program som körs. Programmet är filen på disken, processen är den som lever i minnet med sitt eget tillstånd
- Tidskvantum — hur länge en process får hålla processorn innan den blir avbruten
2. Schemaläggningen
Den del av kärnan som väljer vilket program som får processorn näst heter schemaläggare. I ComputerExplorer → operating-systems → process-scheduler kör den Round Robin: varje process får sitt tidskvantum i tur och ordning.
De processer som är klara att köra men väntar på sin tur står i redokön.
| Tidskvantum | Vad du får | Vad det kostar |
|---|---|---|
| Kort | Jämnare svarstider. Bra när du skriver eller klickar | Fler växlingar — och varje växling kostar tid |
| Långt | Färre växlingar. Bra när maskinen räknar i timmar | En kort process kan få vänta bakom en lång |
De två talen som mäter om schemaläggningen är bra heter Väntat och Omloppstid i noden.
3. Kontextväxlingen
Bytet mellan två processer heter kontextväxling — context switch. Den går i sex steg:
| Steg | Vad som händer |
|---|---|
| 1 | P1 körs — en process har processorn |
| 2 | Timeravbrott utlöses — kvantumet är slut |
| 3 | Sparar P1 — tillståndet skrivs till processkontrollblocket |
| 4 | Växlar — kärnan väljer nästa |
| 5 | Laddar P2 — nästa process tillstånd läses in |
| 6 | Kör P2 |
Vad måste sparas för att en process ska kunna fortsätta exakt där den var? Var i programmet den stod, och vad som låg i processorns register. Det är processkontrollblocket.
De är ren omkostnad — tid som inte går till något program. Det är därför tidskvantumet inte kan vara hur kort som helst. Ett för kort kvantum lägger all tid på att växla.
4. Låset och dödläget
När två processer vill åt samma sak samtidigt behövs ett lås. Det släpper in en i taget, så att inte båda ändrar samma värde och en ändring försvinner.
Men lås kan låsa sig. Ett dödläge uppstår så här:
- P1 tar resurs R1
- P2 tar resurs R2
- P1 vill nu ha R2 — som P2 håller
- P2 vill ha R1 — som P1 håller
- Båda väntar. Ingen kan fortsätta.
Ingenting har gått sönder. Båda processerna finns och båda väntar — på varandra. Det är värre än en krasch, eftersom ingenting larmar.
I deadlock-noden syns det som en cirkel i resursallokeringsgrafen. Cirkeln är dödläget.
5. Virtuellt minne
Om du startar tio program som vill ha 2 GB var, på en maskin med 8 GB — vad händer? Det fungerar.
Varje process får ett eget virtuellt adressutrymme. Processen tror att den har minnet för sig själv, från adress noll och uppåt. Operativsystemet mappar de virtuella adresserna mot fysiskt minne — och det som inte får plats läggs på lagringen.
| Ord | Vad det är |
|---|---|
| Sida | Minnet delas i lika stora block. Det är sidor som flyttas |
| Ram | En plats i det fysiska minnet där en sida kan ligga |
| Sidfel | Processen läser en sida som inte finns i något ram just nu. Operativsystemet hämtar den från lagringen |
| Sidtabell | Mappningen mellan virtuella sidor och fysiska ramar |
Ett sidfel är inte ett fel i betydelsen "något gick sönder". Det är normalt — men det kostar tid, eftersom lagringen är storleksordningar långsammare än RAM (lektion 9 och 11).
Det är därför en maskin med för lite minne blir trög i stället för att sluta fungera. Den byter sidor hela tiden.
6. De två meningarna
I labbrapportens resultatdel ska det stå två meningar om varför ett program kan se ut att ha mer minne än maskinen har.
Ett svar som håller nämner båda
Ett svar som bara säger "operativsystemet fixar det" är inte klart.
Kryssen sparas i din webbläsare.
7. Vanliga missuppfattningar
| Det som sägs | Vad som faktiskt gäller |
|---|---|
| "Programmen körs samtidigt" | De turas om. Växlingen är så snabb att den inte märks |
| "Process och program är samma sak" | Programmet är filen. Processen är den som körs |
| "Kontextväxlingen är gratis, den går ju snabbt" | Stegen som sparar och laddar gör inget nyttigt arbete. Det är kostnaden |
| "Kortare tidskvantum är alltid bättre" | För kort lägger all tid på att växla |
| "Ett dödläge är en krasch" | Ingen har kraschat. Båda väntar, och ingen kan fortsätta |
| "Sidfel betyder att något gått sönder" | Det är normalt. Det kostar tid, det går inte sönder |
| "Virtuellt minne är samma sak som växlingsfilen" | Adressutrymmet är kartan. Lagringen är dit sidor flyttas när ramarna är fulla |
8. Ordlista
Ordträning
| Ord | Betyder |
|---|---|
| Process | Ett program som körs, med sitt eget tillstånd i minnet |
| Tidskvantum | Hur länge en process får hålla processorn innan den avbryts |
| Redokö | De processer som är klara att köra men väntar på sin tur |
| Schemaläggare | Den del av kärnan som väljer vilken process som får processorn näst |
| Round Robin | Schemaläggning där varje process får sitt tidskvantum i tur och ordning |
| Kontextväxling | Bytet mellan två processer. Engelska: context switch |
| Processkontrollblock | Där en process tillstånd sparas när den växlas ut |
| Lås | Släpper in en process i taget till en delad resurs |
| Dödläge | Två processer väntar på varandra i en cirkel. Ingen kan fortsätta |
| Virtuellt adressutrymme | Den egna bild av minnet varje process får |
| Sida | Ett lika stort block minnet delas i |
| Ram | En plats i det fysiska minnet där en sida kan ligga |
| Sidfel | När en sida som behövs inte finns i något ram och måste hämtas från lagringen |