Hukommelsesstyring i OS: Sammenhængende, ombytning, Fragmentering
Hvad er Memory Management?
Memory Management er processen med at kontrollere og koordinere computerhukommelsen, tildele dele kendt som blokke til forskellige kørende programmer for at optimere systemets overordnede ydeevne.
Det er den vigtigste funktion i et operativsystem, der styrer primær hukommelse. Det hjælper processer med at flytte frem og tilbage mellem hovedhukommelsen og udførelsesdisken. Det hjælper OS med at holde styr på hver hukommelsesplacering, uanset om den er allokeret til en proces, eller om den forbliver gratis.
Hvorfor bruge Memory Management?
Her er grunde til at bruge hukommelsesstyring:
- Det giver dig mulighed for at kontrollere, hvor meget hukommelse der skal allokeres til processer, der bestemmer, hvilken processor der skal have hukommelse på hvilket tidspunkt.
- Sporer, når beholdning bliver frigivet eller ikke-allokeret. Ifølge det vil opdatere status.
- Det tildeler plads til applikationsrutiner.
- Det sørger også for, at disse applikationer ikke forstyrrer hinanden.
- Hjælper med at beskytte forskellige processer mod hinanden
- Den placerer programmerne i hukommelsen, så hukommelsen udnyttes fuldt ud.
Hukommelseshåndteringsteknikker
Her er nogle af de mest afgørende hukommelseshåndteringsteknikker:
Enkelt sammenhængende tildeling
Det er den nemmeste hukommelseshåndteringsteknik. I denne metode er alle typer computers hukommelse, undtagen en lille del, der er reserveret til OS, tilgængelig for én applikation. For eksempel tildeler MS-DOS-operativsystemet hukommelse på denne måde. Et indlejret system kører også på en enkelt applikation.
Opdelt tildeling
Den opdeler primær hukommelse i forskellige hukommelsespartitioner, som for det meste er sammenhængende områder af hukommelsen. Hver partition gemmer alle oplysninger om en specifik opgave eller job. Denne metode består i at tildele en partition til et job, når det starter, og ikke-allokeret, når det slutter.
Paged Memory Management
Denne metode opdeler computerens hovedhukommelse i enheder med fast størrelse, kendt som siderammer. Denne hardwarehukommelsesstyringsenhed kortlægger sider i rammer, som bør tildeles på sidebasis.
Segmenteret hukommelsesstyring
Segmenteret hukommelse er den eneste hukommelseshåndteringsmetode, der ikke giver brugerens program et lineært og sammenhængende adresserum.
Segmenter har brug for hardwareunderstøttelse i form af en segmenttabel. Den indeholder den fysiske adresse på sektionen i hukommelse, størrelse og andre data som adgangsbeskyttelsesbits og status.
Hvad er swapping?
Swapping er en metode, hvor processen skal skiftes midlertidigt fra hovedhukommelsen til backuplageret. Det vil senere blive bragt tilbage i hukommelsen til fortsat udførelse.
Backing-lager er en harddisk eller en anden sekundær lagerenhed, der skal være stor nok til at kunne rumme kopier af alle hukommelsesbilleder for alle brugere. Det er også i stand til at tilbyde direkte adgang til disse hukommelsesbilleder.
Fordele ved at bytte
Her er de store fordele/fordele ved at bytte:
- Det giver en højere grad af multiprogrammering.
- Tillader dynamisk flytning. Hvis f.eks. adressebinding på udførelsestidspunktet bruges, kan processer udskiftes forskellige steder. Ellers i tilfælde af kompilerings- og indlæsningstidsbindinger, skal processer flyttes til det samme sted.
- Det er med til at få bedre udnyttelse af hukommelsen.
- Minimum spild af CPU-tid ved færdiggørelse, så det nemt kan anvendes til en prioritetsbaseret planlægningsmetode for at forbedre dens ydeevne.
Hvad er hukommelsestildeling?
Hukommelsestildeling er en proces, hvorved computerprogrammer tildeles hukommelse eller plads.
Her er hovedhukommelsen opdelt i to typer partitioner
- Lav hukommelse - Operating system ligger i denne type hukommelse.
- Høj Hukommelse– Brugerprocesser holdes i høj hukommelse.
Partitionstildeling
Hukommelsen er opdelt i forskellige blokke eller partitioner. Hver proces er allokeret efter kravet. Partitionsallokering er en ideel metode til at undgå intern fragmentering.
Nedenfor er de forskellige partitionsallokeringsordninger:
- Første pasform: I denne typetilpasning er partitionen allokeret, hvilket er den første tilstrækkelige blok fra begyndelsen af hovedhukommelsen.
- Bedste Fit: Det allokerer processen til den partition, der er den første mindste partition blandt de gratis partitioner.
- Dårligste pasform: Det allokerer processen til partition, som er den største tilstrækkeligt frit tilgængelige partition i hovedhukommelsen.
- Næste tilpasning: Det ligner for det meste den første Fit, men denne Fit søger efter den første tilstrækkelige partition fra det sidste tildelingspunkt.
Hvad er Paging?
Paging er en lagringsmekanisme, der gør det muligt for OS at hente processer fra det sekundære lager ind i hovedhukommelsen i form af sider. I Paging-metoden er hovedhukommelsen opdelt i små blokke af fast størrelse af fysisk hukommelse, som kaldes frames. Størrelsen af en ramme bør holdes den samme som en sides størrelse for at få maksimal udnyttelse af hovedhukommelsen og for at undgå ekstern fragmentering. Paging bruges til hurtigere adgang til data, og det er et logisk koncept.
Hvad er Fragmentering?
Processer gemmes og fjernes fra hukommelsen, hvilket skaber ledig hukommelsesplads, som er for lille til at bruge af andre processer.
Efter nogle gange, at processer, der ikke er i stand til at allokere til hukommelsesblokke, fordi dens lille størrelse og hukommelsesblokke altid forbliver ubrugte, kaldes fragmentering. Denne type problemer opstår under et dynamisk hukommelsesallokeringssystem, når ledige blokke er ret små, så det ikke er i stand til at opfylde nogen anmodning.
To typer fragmenteringsmetoder er:
- Ekstern fragmentering
- Intern fragmentering
- Ekstern fragmentering kan reduceres ved at omarrangere hukommelsesindhold for at placere al ledig hukommelse sammen i en enkelt blok.
- Den interne fragmentering kan reduceres ved at tildele den mindste partition, som stadig er god nok til at bære hele processen.
Hvad er segmentering?
Segmenteringsmetoden fungerer næsten på samme måde som personsøgning. Den eneste forskel mellem de to er, at segmenter er af variabel længde, mens siderne i personsøgningsmetoden altid har en fast størrelse.
Et programsegment omfatter programmets hovedfunktion, datastrukturer, hjælpefunktioner osv. OS vedligeholder en segmentkorttabel for alle processerne. Den inkluderer også en liste over ledige hukommelsesblokke sammen med dens størrelse, segmentnumre og dens hukommelsesplaceringer i hovedhukommelsen eller virtuel hukommelse.
Hvad er dynamisk indlæsning?
Dynamisk indlæsning er en rutine i et program, som ikke indlæses, før programmet kalder det. Alle rutiner skal være indeholdt på disken i et indlæsningsformat, der kan flyttes. Hovedprogrammet vil blive indlæst i hukommelsen og vil blive udført. Dynamisk indlæsning giver også bedre udnyttelse af hukommelsespladsen.
Hvad er dynamisk linking?
Linking er en metode, der hjælper OS med at indsamle og flette forskellige moduler af kode og data til en enkelt eksekverbar fil. Filen kan indlæses i hukommelsen og udføres. OS kan linke biblioteker på systemniveau til et program, der kombinerer bibliotekerne ved indlæsningstid. I Dynamic linking-metoden er biblioteker forbundet på udførelsestidspunktet, så programkodestørrelsen kan forblive lille.
Forskellen mellem statisk og dynamisk belastning
Statisk belastning | Dynamisk indlæsning |
---|---|
Statisk indlæsning bruges, når du vil indlæse dit program statisk. Så på tidspunktet for kompilering vil hele programmet blive forbundet og kompileret uden behov for nogen ekstern modul- eller programafhængighed. | I et dynamisk indlæst program vil referencer blive givet, og indlæsningen vil blive udført på tidspunktet for udførelse. |
Ved indlæsningstidspunktet indlæses hele programmet i hukommelsen og starter dets udførelse. | Rutiner for biblioteket indlæses kun i hukommelsen, når de er påkrævet i programmet. |
Forskellen mellem statisk og dynamisk linking
Her er hovedforskellen mellem statisk vs. dynamisk linking:
Statisk sammenkobling | Dynamisk linking |
---|---|
Statisk linking bruges til at kombinere alle andre moduler, som kræves af et program, til en enkelt eksekverbar kode. Dette hjælper OS med at forhindre enhver runtime-afhængighed. | Når der bruges dynamisk linking, behøver det ikke at forbinde det aktuelle modul eller bibliotek med programmet. Brug i stedet for det en reference til det dynamiske modul, der blev leveret på tidspunktet for kompilering og linkning. |
Resumé
- Hukommelsesstyring er processen med at kontrollere og koordinere computerhukommelsen, tildele dele kaldet blokke til forskellige kørende programmer for at optimere systemets overordnede ydeevne.
- Det giver dig mulighed for at kontrollere, hvor meget hukommelse der skal allokeres til processer, der bestemmer, hvilken processor der skal have hukommelse på hvilket tidspunkt.
- I Single Contiguous Allocation er alle typer computers hukommelse undtagen en lille del, som er reserveret til OS, tilgængelig for én applikation
- Partitioneret tildelingsmetode opdeler primær hukommelse i forskellige hukommelsespartitioner, som for det meste er sammenhængende områder af hukommelsen
- Paged Memory Management-metoden opdeler computerens hovedhukommelse i enheder med fast størrelse, kendt som siderammer
- Segmenteret hukommelse er den eneste hukommelseshåndteringsmetode, der ikke giver brugerens program et lineært og sammenhængende adresserum.
- Swapping er en metode, hvor processen skal skiftes midlertidigt fra hovedhukommelsen til backuplageret. Det vil senere blive bragt tilbage i hukommelsen til fortsat udførelse.
- Hukommelsestildeling er en proces, hvorved computerprogrammer tildeles hukommelse eller plads.
- Paging er en lagringsmekanisme, der gør det muligt for OS at hente processer fra det sekundære lager ind i hovedhukommelsen i form af sider.
- Fragmentering refererer til tilstanden af en disk, hvor filer er opdelt i stykker spredt rundt om disken.
- Segmenteringsmetoden fungerer næsten på samme måde som personsøgning. Den eneste forskel mellem de to er, at segmenter er af variabel længde, mens siderne i personsøgningsmetoden altid har en fast størrelse.
- Dynamisk indlæsning er en rutine i et program, som ikke indlæses, før programmet kalder det.
- Linking er en metode, der hjælper OS med at indsamle og flette forskellige moduler af kode og data til en enkelt eksekverbar fil.