Hukommelsesstyring i operativsystem: Sammenhængende, Swapping, Fragmentering
⚡ Smart opsummering
Hukommelsesstyring er operativsystemets proces med at kontrollere og koordinere computerhukommelse, hvor blokke tildeles kørende programmer for at optimere ydeevnen. tracgenkender alle hukommelsesplaceringer, flytter processer mellem hovedhukommelsen og disken og beskytter processer mod hinanden.

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 administrerer primær hukommelse. Det hjælper processer med at bevæge sig frem og tilbage mellem hovedhukommelsen og udførelsesdisken. Det hjælper operativsystemet med at holde styr på track af hver hukommelsesplacering, uanset om den er allokeret til en proces eller den forbliver fri.
Hvorfor bruge Memory Management?
Her er grundene 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.
- Tracks, når lagerbeholdning frigøres eller ikke-allokeres, og opdaterer statussen i overensstemmelse hermed.
- Det tildeler plads til applikationsrutiner.
- Det sikrer også, 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 teknikker til hukommelsesstyring:
Enkelt sammenhængende tildeling
Det er den nemmeste teknik til hukommelsesstyring. Med denne metode er alle typer af en computers hukommelse, undtagen en lille del, der er reserveret til operativsystemet, tilgængelig for ét program. For eksempel allokerer MS-DOS-operativsystemet hukommelse på denne måde. Et indlejret system kører også på et enkelt program.
Opdelt tildeling
Den opdeler primær hukommelse i forskellige hukommelsespartitioner, som for det meste er sammenhængende hukommelsesområder. Hver partition gemmer alle oplysninger for en specifik opgave eller et job. Denne metode består i at tildele en partition til et job, når det starter, og afallokere det, 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 en proces midlertidigt skal flyttes fra hovedhukommelsen til backing-lageret. Den vil senere blive bragt tilbage til hukommelsen for fortsat udførelse.
Backup-lageret er en harddisk eller en anden sekundær lagringsenhed, der skal være stor nok til at rumme kopier af alle hukommelsesbilleder for alle brugere. Det er også i stand til at give direkte adgang til disse hukommelsesbilleder.
Fordele ved bytteping
Her er de største fordele/fordele ved bytteping:
- Det giver en højere grad af multiprogrammering.
- Tillader dynamisk flytning. Hvis der f.eks. anvendes adressebinding på udførelsestidspunktet, kan processer byttes til forskellige placeringer. Ellers skal processer i tilfælde af kompilerings- og indlæsningstidsbindinger flyttes til samme placering.
- Det er med til at få bedre udnyttelse af hukommelsen.
- Minimalt spild af CPU-tid ved færdiggørelse, så den nemt kan anvendes på 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 - Den Operating system ligger i denne type hukommelse.
- Høj Hukommelse – Brugerprocesser opbevares 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 tilpasning: I denne type tilpasning allokeres den partition, som er den første tilstrækkelige blok fra begyndelsen af hovedhukommelsen.
- Bedste Fit: Den allokerer processen til den partition, der er den mindste tilstrækkelige partition blandt de ledige partitioner.
- Dårligste pasform: Den allokerer processen til den partition, som er den største tilstrækkeligt frit tilgængelige partition i hovedhukommelsen.
- Næste tilpasning: Det minder stort set om First Fit, men denne Fit søger efter den første tilstrækkelige partition fra det sidste allokeringspunkt.
Hvad er Paging?
Paging er en lagringsmekanisme, der gør det muligt for operativsystemet at hente processer fra det sekundære lager til hovedhukommelsen i form af sider. I paging-metoden er hovedhukommelsen opdelt i små blokke af fysisk hukommelse med fast størrelse, som kaldes frames. Størrelsen på en frame bør holdes den samme som på en page for at opnå 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 i og fjernes fra hukommelsen, hvilket skaber ledige hukommelsespladser, der er for små til at blive brugt af andre processer.
Efter et stykke tid kan disse processer ikke allokeres til hukommelsesblokke på grund af deres lille størrelse, og hukommelsesblokkene forbliver altid ubrugte. Dette kaldes fragmentering. Denne type problem opstår under et dynamisk hukommelsesallokeringssystem, når de ledige blokke er ret små, så de 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.
- Intern fragmentering kan reduceres ved at tildele den mindste partition, som stadig er god nok til at udføre hele processen.
Hvad er segmentering?
Segmenteringsmetoden fungerer næsten på samme måde som paging. Den eneste forskel mellem de to er, at segmenter har variabel længde, hvorimod siderne i pagingmetoden 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, der ikke indlæses, før programmet kalder den. Alle rutiner skal være indeholdt på en disk i et flytbart indlæsningsformat. Hovedprogrammet vil blive indlæst i hukommelsen og udført. Dynamisk indlæsning giver også bedre udnyttelse af hukommelsespladsen.
Hvad er dynamisk linking?
Linkning er en metode, der hjælper operativsystemet med at indsamle og flette forskellige moduler af kode og data sammen til en enkelt eksekverbar fil. Filen kan indlæses i hukommelsen og udføres. Operativsystemet kan linke systemniveaubiblioteker til et program, der kombinerer bibliotekerne ved indlæsning. I den dynamiske linkmetode linkes biblioteker ved 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. Derefter, på kompileringstidspunktet, vil hele programmet blive linket og kompileret uden behov for eksterne moduler eller programafhængigheder. | I et dynamisk indlæst program vil der blive angivet referencer, og indlæsningen vil ske på udførelsestidspunktet. |
| 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 de vigtigste forskelle mellem statisk vs. dynamisk linking:
| Statisk sammenkobling | Dynamisk linking |
|---|---|
| Statisk linkning bruges til at kombinere alle andre moduler, som et program kræver, i en enkelt eksekverbar kode. Dette hjælper operativsystemet med at forhindre enhver runtime-afhængighed. | Når dynamisk linkning bruges, behøver den ikke at linke selve modulet eller biblioteket til programmet. I stedet bruger den en reference til det dynamiske modul, der blev angivet på tidspunktet for kompilering og linkning. |

