Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet. Kan göras statiskt. Multiprogrammeing: Användare delen av minnet delas mellan flera olika processer. Uppdelning av datorns minne på de olika processerna kallas Minneshantering. Viktig uppgift för Operativsystemet. Måste oftast göras dynamiskt. Typeset by FoilTEX 1 Typeset by FoilTEX 2 Minneshantering (1) Stöd för omförflyttning: program känner inte till sin fysiska placering i primär minnet. Minneshantering (2) Partitionering: Dela in minnet i sektioner. Skydd: Skydd mot ofrivillig eller illegal åtkomst av andra processers minne. Segmentering: logisk delning av program i segment. Typeset by FoilTEX 3 Typeset by FoilTEX 4
Minneshantering (3) Struktur Delande av minnesutrymme: Data och programkod ( reentrant ). Fysisk organisation: primär- och sekundärminne tillsammans skapar ett virtuellt minne. Typeset by FoilTEX 5 Typeset by FoilTEX 6 Effektivitetsfrågor Problem: I/O extremt långsamt jämfört med CPU. Oftast måste CPU vänta även i multiprogramfallet. Lösningar: - Fler processer aktiva i minnet ger mindre chans att alla är blockerade samtidigt. - Öka minnesstorleken för att få plats med fler program. Kan vara dyrt. Leder eventuellt till större program. - Swappa program som inte exekveras just nu. Hårddisken är långsammare än primärminnet men snabbare än övriga I/O enheter. Swappning Kö av processer på disk. Processer swappas in till primärminnet när de behövs. Processer som inte är redo att exekveras kastas ut. Om inga processer kan exekveras (blockerade av I/O): - Swappa ut en blockerad process. - Swappa in en Ready eller ny process. Eftersom vi ändå måste vänta på I/O finns ofta tid att exekvera operativsystemet utan att det stjäl tid ifrån övriga processer. Typeset by FoilTEX 7 Typeset by FoilTEX 8
Utökat processtillstånd Partitionering av minnet Processer måste dela på primärminnet. Hur skall uppdelningen göras? - Statiskt. - Dynamiskt. Typeset by FoilTEX 9 Typeset by FoilTEX 10 Statisk partitionering Primäminnet delas upp i partitioner med fix storlek. - Kan ha olika storlek. - En process placeras i den minsta partitionen där den får plats ( best fit ). - Visst minnesslöseri oundvilkigt. - Bra att ha flera partitioner av varierande storlek. Dymanisk partitionering (1) Allokera exakt det minne en process begär. Typeset by FoilTEX 11 Typeset by FoilTEX 12
Dynamisk partitionering (2) Allokera exakt det minne en process begär. - Kan finnas många oanvända hål i primärminnet. - Dock inget tillräckligt stort hål. Fragmentering. - Minneskompaktering eller Defragmentering. Minneskompaktering (1) Flytta använda patritioner tills ett tillräckligt stort ledigt block uppstått. - Behöver kanske bara flytta några enstaka processer. - Ganska stor sannolikhet att behöva flytta på nytt nästa gång. - Kallas även Defragmentering. Typeset by FoilTEX 13 Typeset by FoilTEX 14 Minneskompaktering (2) Arrangera om minnet så att allt utnyttjat minne hamnar i följd. - Tidskrävande. - Bör kunna klara sig utan nya omflyttningar ett tag. Jämför med Defragmentering av Hårddisk. Omförflyttning av minne Ingen garanti att en process laddas till samma ställe i primärminnet varje gång. Maskininstruktioner innehåller adresser till: - Data. - Andra instruktioner. Logiska, inte fysiska, adresser används. Ofta relativt programmets första instruktion. Operativsystemet sköter konverteringen till fysisk adress. Base-Register Adressing: Hårdvarustöd för relativ adressering. Typeset by FoilTEX 15 Typeset by FoilTEX 16
Sidbaserat minne Dela program (processer) i block (sidor) med en fix storlek. Dela primärminnet på samma sätt (sidramar). Allokera begärt antal sidor till en process. - De sidor som en process använder behöver inte ligga i följd. - Statisk uppdelning av minnet men flexibel placering av processer. Logiska och fysiska adresser Processens sidtabell innehåller 4 sidor (Sida 0 3). Implementation av Sidtabell: - Primärminnet - långsamt. - Separata register - dyrt. - Cache. En sidtabell används för att hålla ordning på översättning mellan sidor och sidramar. Memory Page, Frame, Pagetable, Paging. Typeset by FoilTEX 17 Typeset by FoilTEX 18 Virtuellt minne Demand Paging - Delmängd av processens sidor finns i primär minnet. - Sidor laddas in när de behövs. Målsättning med Virtuellt minne Ger illusionen av att primär minnet är stort. Logiskt primär minne lika stort som hårddisken. Sidfel (Page fault). - Begärd sida finns inte i primär minnet. - Operativsystemet måste flytta sidan till primär minnet. - Eventuellt måste en annan sida flyttas till disk för att ge plats. - Vilken dida skall kastas ut? Program kan vara större än primär minnet. Lokalitetsprincipen: Endast några sidor ur en process är aktiva samtidigt. Typeset by FoilTEX 19 Typeset by FoilTEX 20
Sidfel Åtkomst försök till en sida ur virtuella minnet som inte finns i primär minnet. Operativsystemet måste flytta sidan från sekundär- till primärminnet. Sidbyte Sidfel innebär att en ny sida skall in och en gammal ut. Om den gammla sidan är förändrad måste den kopieras tillbaka till sekundär minnet. Målrättning: Sidan som kastas ut skulle ändå inte användas. - Framtida beteende okänt. - Lär från historiskt beteende. Typeset by FoilTEX 21 Typeset by FoilTEX 22 Utbytes algoritmer Välj vilken sida som skall ersättas enligt någon regel. - FIFO (First In First Out). - LRU (Least Recently used) - LFU (Least Frequently Used) Med en dålig regel riskerar CPU att tvingas använda mycket tid till att flytta sidor mellan primär- och sekundärminnet. Jämförelse mellan Cache och Virtuellt Minne Båda kan använda samma algoritmer. - FIFO (First In First Out). - LRU (Least Recently used) - LFU (Least Frequently Used) Slumpmässigt utbyte används inte vid sidhantering i ett virtuellt minne. Typeset by FoilTEX 23 Typeset by FoilTEX 24
Målsättning med I/O-hantering. Virtuella I/O enheter Programkod skall vara oberoende av - Enhetstyp. Samma kod för att skriva till en matrisskrivare och en laserskrivare. - Instans. Ingen skillnad att skriva på skrivaren i rummet; eller på den i nästa rum. - Bekvämlighetsfråga. Programmet jobbar mot en logisk (virtuell) I/O enhet. Operativsystemet ansvarig för kopplingen mellan virtuell och fysisk enhet. I/O operationer skall inte påverka CPU uttnyttjande alltför mycket. Effektivitetsfråga. Typeset by FoilTEX 25 Typeset by FoilTEX 26 Filsystem Operativsystemet skall tillhandahålla ett filsystem. Skall gömma fysisk struktur. Översättning av filnamn till fysisk adress (block och sektorer). Exempel: UNIX Filsystem inode tabell: Varje fil har ett unikt nummer (ls i). En inode innehåller: (ls -l eller stat). - information om ägare, åtkomsträttigheter (rwx), filtyp, etc. - Tabell med disk block där filen lagrats. Stöd för filhantering. Skapa, Flytta, Läsa, och Skriva filer. Katalogstruktur. Stöd för fildelning mellan processer och användare. Åtkomsträttigheter. Typeset by FoilTEX 27 Typeset by FoilTEX 28
Exempel: UNIX Filsystem Filnamn, Katalogstruktur och annan metadata lagras i tabeller. Bitmap: Karta över tomma block på disken. Tabell över skadade diskblock. Typeset by FoilTEX 29