Minneshantering i OS: Sammanhängande, Byte, Fragmentering
Vad är minneshantering?
Minneshantering är processen att styra och koordinera datorminne, tilldela delar som kallas block till olika program som körs för att optimera systemets övergripande prestanda.
Det är den viktigaste funktionen hos ett operativsystem som hanterar primärminnet. Det hjälper processer att flytta fram och tillbaka mellan huvudminnet och exekveringsdisken. Det hjälper OS att hålla reda på varje minnesplats, oavsett om den är allokerad till någon process eller om den förblir ledig.
Varför använda minneshantering?
Här är skälen till att använda minneshantering:
- Den låter dig kontrollera hur mycket minne som behöver allokeras till processer som bestämmer vilken processor som ska få minne vid vilken tidpunkt.
- Spårar när inventering frigörs eller otilldelas. Enligt det kommer att uppdatera status.
- Det tilldelar utrymmet till applikationsrutiner.
- Det ser också till att dessa applikationer inte stör varandra.
- Hjälper till att skydda olika processer från varandra
- Den placerar programmen i minnet så att minnet utnyttjas till fullo.
Minneshanteringstekniker
Här är några av de mest avgörande minneshanteringsteknikerna:
Enkel sammanhängande allokering
Det är den enklaste tekniken för minneshantering. I denna metod är alla typer av datorminne utom en liten del som är reserverad för operativsystemet tillgängligt för en applikation. Till exempel, MS-DOS operativsystem allokerar minne på detta sätt. Ett inbäddat system körs också på en enda applikation.
Partitionerad tilldelning
Den delar upp det primära minnet i olika minnespartitioner, vilket mestadels är sammanhängande minnesområden. Varje partition lagrar all information för en specifik uppgift eller jobb. Denna metod består av att tilldela en partition till ett jobb när det startar och oallokerat när det slutar.
Sidad minneshantering
Denna metod delar upp datorns huvudminne i enheter med fast storlek som kallas sidramar. Denna minneshanteringsenhet för hårdvara mappar sidor till ramar som bör tilldelas på sidbasis.
Segmenterad minneshantering
Segmenterat minne är den enda minneshanteringsmetoden som inte förser användarens program med ett linjärt och sammanhängande adressutrymme.
Segment behöver hårdvarustöd i form av en segmenttabell. Den innehåller den fysiska adressen för sektionen i minne, storlek och andra data som åtkomstskyddsbitar och status.
Vad är swapping?
Swapping är en metod där processen ska bytas tillfälligt från huvudminnet till backing-lagringen. Det kommer senare att tas tillbaka till minnet för fortsatt exekvering.
Backing store är en hårddisk eller någon annan sekundär lagringsenhet som bör vara tillräckligt stor för att rymma kopior av alla minnesbilder för alla användare. Den kan också erbjuda direktåtkomst till dessa minnesbilder.
Fördelar med att byta
Här är stora fördelar/fördelar med att byta:
- Den erbjuder en högre grad av multiprogrammering.
- Tillåter dynamisk omlokalisering. Om till exempel adressbindning vid körning används, kan processer bytas ut på olika platser. Annars bör processer flyttas till samma plats vid kompilerings- och laddningstidsbindningar.
- Det hjälper till att få bättre utnyttjande av minnet.
- Minimalt slöseri med CPU-tid vid färdigställande så att det enkelt kan tillämpas på en prioritetsbaserad schemaläggningsmetod för att förbättra dess prestanda.
Vad är minnesallokering?
Minnestilldelning är en process genom vilken datorprogram tilldelas minne eller utrymme.
Här är huvudminnet uppdelat i två typer av partitioner
- Lågt minne - Operatingssystem finns i denna typ av minne.
- Högt minne– Användarprocesser hålls i högt minne.
Partitionstilldelning
Minnet är uppdelat i olika block eller partitioner. Varje process tilldelas enligt kraven. Partitionsallokering är en idealisk metod för att undvika intern fragmentering.
Nedan är de olika partitionsallokeringsscheman:
- Första passningen: I denna typpassning tilldelas partitionen, vilket är det första tillräckliga blocket från början av huvudminnet.
- Bästa passform: Den allokerar processen till den partition som är den första minsta partitionen bland de fria partitionerna.
- Sämsta passform: Den allokerar processen till partition, som är den största tillräckligt fritt tillgängliga partitionen i huvudminnet.
- Nästa passform: Den liknar för det mesta den första Fit, men denna Fit söker efter den första tillräckliga partitionen från den sista allokeringspunkten.
Vad är personsökning?
Personsökning är en lagringsmekanism som gör att OS kan hämta processer från den sekundära lagringen till huvudminnet i form av sidor. I Paging-metoden är huvudminnet uppdelat i små block av fast storlek av fysiskt minne, vilket kallas ramar. Storleken på en ram bör hållas samma som på en sida för att få maximal användning av huvudminnet och för att undvika extern fragmentering. Personsökning används för snabbare tillgång till data, och det är ett logiskt koncept.
Vad är fragmentering?
Processer lagras och tas bort från minnet, vilket skapar ledigt minnesutrymme, som är för litet för att användas av andra processer.
Efter ibland, att processer som inte kan allokeras till minnesblock eftersom dess ringa storlek och minnesblock alltid förblir oanvända kallas fragmentering. Denna typ av problem inträffar under ett dynamiskt minnesallokeringssystem när lediga block är ganska små, så det kan inte uppfylla någon begäran.
Två typer av fragmenteringsmetoder är:
- Extern fragmentering
- Intern fragmentering
- Extern fragmentering kan minskas genom att omarrangera minnesinnehållet för att samla allt ledigt minne i ett enda block.
- Den interna fragmenteringen kan minskas genom att tilldela den minsta partitionen, som fortfarande är tillräckligt bra för att bära hela processen.
Vad är segmentering?
Segmenteringsmetoden fungerar nästan på samma sätt som personsökning. Den enda skillnaden mellan de två är att segmenten är av variabel längd, medan sidorna alltid har fast storlek i personsökningsmetoden.
Ett programsegment inkluderar programmets huvudfunktion, datastrukturer, hjälpfunktioner etc. OS upprätthåller en segmentkartatabell för alla processer. Den innehåller också en lista över lediga minnesblock tillsammans med dess storlek, segmentnummer och dess minnesplatser i huvudminnet eller virtuellt minne.
Vad är dynamisk laddning?
Dynamisk laddning är en rutin för ett program som inte laddas förrän programmet anropar det. Alla rutiner bör finnas på disken i ett flyttbart laddningsformat. Huvudprogrammet kommer att laddas in i minnet och kommer att köras. Dynamisk laddning ger också bättre utnyttjande av minnesutrymmet.
Vad är dynamisk länkning?
Länkning är en metod som hjälper OS att samla in och slå samman olika moduler av kod och data till en enda körbar fil. Filen kan laddas in i minnet och köras. OS kan länka bibliotek på systemnivå till ett program som kombinerar biblioteken vid laddningstid. I den dynamiska länkningsmetoden länkas biblioteken vid körning, så programkodstorleken kan förbli liten.
Skillnaden mellan statisk och dynamisk laddning
Statisk laddning | Dynamisk laddning |
---|---|
Statisk laddning används när du vill ladda ditt program statiskt. Sedan vid tidpunkten för kompileringen kommer hela programmet att länkas och kompileras utan behov av något externt modul- eller programberoende. | I ett dynamiskt laddat program kommer referenser att tillhandahållas och laddningen kommer att göras vid tidpunkten för exekvering. |
Vid laddningstid laddas hela programmet in i minnet och startar dess exekvering. | Rutiner för biblioteket laddas in i minnet endast när de krävs i programmet. |
Skillnaden mellan statisk och dynamisk länkning
Här är huvudskillnaden mellan statisk vs dynamisk länkning:
Statisk länkning | Dynamisk länkning |
---|---|
Statisk länkning används för att kombinera alla andra moduler som krävs av ett program till en enda körbar kod. Detta hjälper OS att förhindra körtidsberoende. | När dynamisk länkning används behöver den inte länka själva modulen eller biblioteket med programmet. Använd istället en referens till den dynamiska modulen som tillhandahålls vid tidpunkten för kompilering och länkning. |
Sammanfattning
- Minneshantering är processen att kontrollera och koordinera datorminne, tilldela delar som kallas block till olika program som körs för att optimera systemets övergripande prestanda.
- Den låter dig kontrollera hur mycket minne som behöver allokeras till processer som bestämmer vilken processor som ska få minne vid vilken tidpunkt.
- I Single Contiguous Allocation är alla typer av datorminne utom en liten del som är reserverad för OS tillgängligt för en applikation
- Metoden för partitionerad allokering delar upp primärminnet i olika minnespartitioner, vilket mestadels är sammanhängande minnesområden
- Paged Memory Management-metoden delar upp datorns huvudminne i enheter med fast storlek som kallas sidramar
- Segmenterat minne är den enda minneshanteringsmetoden som inte förser användarens program med ett linjärt och sammanhängande adressutrymme.
- Swapping är en metod där processen ska bytas tillfälligt från huvudminnet till backing-lagringen. Det kommer senare att tas tillbaka till minnet för fortsatt exekvering.
- Minnestilldelning är en process genom vilken datorprogram tilldelas minne eller utrymme.
- Personsökning är en lagringsmekanism som gör att OS kan hämta processer från den sekundära lagringen till huvudminnet i form av sidor.
- Fragmentering avser tillståndet för en skiva där filer är uppdelade i bitar utspridda runt skivan.
- Segmenteringsmetoden fungerar nästan på samma sätt som personsökning. Den enda skillnaden mellan de två är att segmenten är av variabel längd, medan sidorna alltid har fast storlek i personsökningsmetoden.
- Dynamisk laddning är en rutin för ett program som inte laddas förrän programmet anropar det.
- Länkning är en metod som hjälper OS att samla in och slå samman olika moduler av kod och data till en enda körbar fil.