Hukommelsesadministration er et grundlæggende fænomen i det operativsystem, der bruges til at håndtere eller styre primær hukommelse for at kontrollere hukommelsesadgangsrettighederne på computeren. Målet er at forhindre enhver proces i at få adgang til den hukommelse, der endnu ikke er tildelt den.
Operativsystemet tildeler hukommelse til hver proces, der er opdelt i segmenter. Stack and Heap er de to måder, hvorpå hukommelsen tildeles i operativsystemet.
Stacksegment bruges til at gemme lokale funktionsvariabler, der oprettes automatisk, mens heap-segmentet bruges til dynamisk allokeret hukommelse.
Begge er gemt i computer RAM, og de kan vokse og skrumpe under udførelsen af et program. Lad os diskutere de to detaljeret og sammenligne dem for at forstå, hvilken der er bedre.
Stacksegment er en hukommelsestyringsteknik, der bruges til statisk hukommelsesallokering. Det er et specielt område i computerens hukommelse, der bruges til at gemme lokale funktionsvariabler. Når der kaldes en funktion, allokeres hukommelse til alle lokale variabler et sted, og du kan få adgang til disse variabler, som du kender deres placering. Hukommelsesblokkene frigøres, når funktionen afsluttes. Stack er en af måderne at implementere denne proces på effektivt. Tænk på det som en grundlæggende datastruktur, hvor elementer er arrangeret oven på hinanden som en stak. Tilsvarende kan man få adgang til lokale variabler ved at skubbe og poppe. Skubning henviser til tilføjelse af elementer i stakken og popping betyder, at man henter genstande fra stakken. Man kan få adgang til elementer fra stakken i den sidste-i-første-ud (LIFO) rækkefølge.
Heap refererer til en stor hukommelsespul, der bruges til dynamisk hukommelsesallokering, hvilket betyder, at hukommelse forbliver allokeret, indtil programmet afsluttes, eller hukommelsen frigøres. Hukommelse tildeles tilfældigt, så der er ingen nem måde at få adgang til hukommelsen. I modsætning til stakkesegment frigøres elementer i omvendt rækkefølge, som de oprindeligt blev tildelt. Enkelt sagt fordeles hukommelse til programmerne efter anmodning og frigøres, når det ikke længere kræves. Elementer af dyngen er uafhængige af hinanden, hvilket betyder, at de kan få adgang til, når programmet kører og frigøres, når programmet afsluttes. Det er som en global hukommelsespool, der bruges til at gemme globale variabler og mange variabler, der refererer til den.
I computerarkitektur er en stak et specielt område i computerens hukommelse, der eksplicit tildeles til automatiske variabler. Ved programmering er automatisk variabel en lokal variabel, hvilket betyder, at variablen er lokal til den blok, hvori den er deklareret. Hukommelse tildeles automatisk til disse variabler ved indgangen til blokken, og hukommelsen frigøres ved udgangen. Heap er på den anden side den del af computerens hukommelse, der bruges til dynamiske hukommelsesallokeringer, hvilket betyder, at hukommelsesblokke er allokeret og afdelt på en tilfældig måde.
Stak bruges til at gemme lokale variabler, hvis omfang er defineret i funktionen. I tekniske termer understøtter stack statisk hukommelsesallokering, der svarer til lokale statiske variabler og omfangsvariabler. Hukommelse tildeles før programmet udføres, generelt på kompileringstidspunktet, og den anvendte datastruktur kaldes stak. På den anden side bruges heap til dynamisk hukommelsesallokering, hvilket betyder, at hukommelsen tildeles manuelt på runtime under udførelsen af et program. Programmer anmoder om hukommelse, normalt til at tilføje en node til datastrukturen og returnerer hvis ikke nødvendigt.
En stak administreres og optimeres af CPU'en, og dataene tilgås i en sidste-i-første-ud (LIFO) rækkefølge. LIFO henviser til metoden til datalagring i hukommelsestacke, hvor den seneste blok af hukommelse er den første, der frigøres og vice versa. Dette giver effektiv hukommelsesstyring. Elementerne i dyngen er tværtimod uafhængige af hinanden, og der kan fås adgang til data vilkårligt, hvilket betyder, at en hukommelsesblok kan tildeles og frigøres når som helst uanset deres rækkefølge. I modsætning til stabler har dynger ikke et bestemt mønster til tildeling og fordeling af hukommelsesblokke.
Hukommelse styres automatisk i stakken, og variablerne tildeles og omdeles automatisk, hvilket betyder, at stakken kun er forbeholdt midlertidige variabler. De lokale variabler bliver aktive, når en funktion udføres, og når den slutter, går variablerne uden for rækkevidden, hvilket betyder, at variablen er lokal for en funktion og eksisterer, så længe denne funktion udføres. I modsætning til i stakken tildeles hukommelse, når programmet kører i bunke, hvilket gør det lidt langsommere at få adgang til de variabler, der er gemt her. Da der ikke er nogen specifik rækkefølge i reservering af blokke, kan hukommelsesblokke tildeles og gratis når som helst.
Begge er de mest almindelige måder til hukommelsestildeling og gemmes i computerens RAM til effektiv hukommelsesstyring. Adgangen til hukommelse i en stak er dog hurtig, fordi hukommelsen administreres automatisk, mens hukommelsen skal styres manuelt manuelt, hvilket betyder, at du selv skal tildele den frie hukommelse, når blokke ikke længere er påkrævet. Stakken er åbenlyst hurtigere og lettere at bruge takket være dens fleksibilitet, men den har en rimelig andel fordele og ulemper. Selvom stakken ikke har nogen grænse for hukommelsesstørrelse, er det lidt svært at implementere. Heap er langsommere end en stak, men implementeringen er enklere.