Hvordan ser OS om Hukommelse er fri?

Tags:    diverse

Hvordan kan et OS egentligt se om noget hukommelse er fri? det kan vel ikke have et "flag" for hvert bit for så ville det kræve dobbelt ram. Man kan jo heller ikke bare sætte det der er frit til hverken 0 eller 1 da der er en mulighed for at noget der bruges har den værdi.

Er ikke helt sikker på om det er OS'et der ser om hukommelse er fri, ellers hvordan ser CPU'en eller hukommelsen hvad der er frit?



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Du har ret i at man ikke bare kan sætte værdien til 0, da man f.eks. kan have en datatype af typen int med værdien 0. Men når en variabel f.eks. ikke anvendes mere så sættes værdien jo til NULL.

Arbejder du f.eks. i C++ så skal du jo f.eks. også huske at nedlægge alle objekter du har instansieret med 'new' ved at skrive 'delete myObjectName'. I foreksempel mere high level programmeringssprog som Java og C# findes der en Garbage Collector som tager sig af at få frigjort hukommelsen for dine objekter når de er Out Of Scope.

Mvh. Thomas Lykke Petersen



OS'et ser ikke om et stykke memory er frit. Hver gang 'du' (et givent program) skal bruge et stykke memory beder du OS'et om det. Når du ikke længere har brug for det frigiver du det (alt efter hvilket prog. sprog du anvender kan det ske direkte, eller det kan være noget som sproget klarer 'bag om ryggen' på dig). Undervejs holder OS'et ligeledes styr hvor om et allokeret stykke memory anvendes eller evt. kan swappes ud på disk.
Normalt frigives alt det memory som et givent program (process) har allokeret når programmet afsluttes.



Jeg mener ikke hvordan "releaser" man hukommelse i et HLL, men hvordan OS'et gør det. Hvordan skelner OS'et mellem hukommelse der bliver brugt og hukommelse der ikke bliver brugt?



Det kommer vel an på hvilket os du snakker om?

Mvh. Thomas Lykke Petersen



Det kommer vel an på hvilket os du snakker om?

Mvh. Thomas Lykke Petersen


Tror faktisk det er fordi han vil lave sit eget OS?

- Mads



Tja, har ingen ide om det, men kunne tænke mig at et system som f.eks bruger 64 bit, som WinXP 64 eller hvad det nu hedder.
Tager og gemmer alle data i 64 bit, således at hvis der så er 128 tal, som varigere mellem 1 og 0, altså noget ala 1010011001001 bare længere, og efter det så kommer 64 0'er, at der så ikke er noget der, men bare en ide jeg har...



Når OS'et starter ejer det alt hukommelse, når programmer skal bruge hukommelse beder det OS'et om hukommelse, og når programmet er færdig med hukommelsen leverer det hukommelsen til bage til OS'et. Derved ved OS'et om hukommelsen er fri.

Nogle OS'er husker på hvilke programmer der har hvilken hukommelse og kan så frigive det hele når programmet er slut, andre stoler på at programmet husker at frigive det hele.
Normalt håndterer OS'et to lister med stykker af hukommelse, en med brugt hukommelse og en med fri hukommelse.

Jeg har en gang lavet en memory manager til et simpelt indlejret OS.



Når OS'et starter ejer det alt hukommelse, når programmer skal bruge hukommelse beder det OS'et om hukommelse, og når programmet er færdig med hukommelsen leverer det hukommelsen til bage til OS'et. Derved ved OS'et om hukommelsen er fri.

Nogle OS'er husker på hvilke programmer der har hvilken hukommelse og kan så frigive det hele når programmet er slut, andre stoler på at programmet husker at frigive det hele.
Normalt håndterer OS'et to lister med stykker af hukommelse, en med brugt hukommelse og en med fri hukommelse.

Jeg har en gang lavet en memory manager til et simpelt indlejret OS.

Tak, det var lige det jeg skulle bruge, hmm der var ikke mange der lavede svar så giver altså bare UP'ene til dem der har svaret da det ikke drejer sig om vildt mange.



t