undrar samma sak. vad är inaktivt minne egentligen?
Minnesallokering i moderna operativsystem är rätt komplext. Förr i tiden så laddade man ett program till minnet, programmet allokerade lite mer minne och sedan körde det. När programmet hade kört klart så släppte den allt minne så att det blev ledigt.
I moderna operativsystem så arbetar man med virtuellt minne. Virtuellt minne innebär att ett program ser mycket mer minne än vad som förmodligen finns tillgängligt (upp till 4 GB för 32-bitssystem, otroligt mycket mer för 64-bitssystem). Minnet är uppdelat i "sidor", där varje sida är minst 4 kB. Vissa sidor kan vara mappade till verkligt minne, men de behöver inte vara det. Att "mappa" minne innebär att CPU:n får reda på att en viss sida mostvarar en viss del av datorns RAM. Notera här att allt RAM nödvändigtvis inte måste vara mappat till någon process virtuella minne. Flera processer kan också mappa samma fysiska minne.
När ett program startas så laddas inte hela programmet in i minnet. Det som görs är att operativsystemet helt enkelt lägger in information om att en viss fil är mappad till en viss det av det virtuella minnet. När sedan processorn försöker läsa minnet utan att det finns något fysiskt minne kopplat till den specifika adressen så få operativsystemet en signal, det laddar in den sidan (och oftast några fler av prestandaskäl), lägger den laddade datan i fysiskt minne, mappar det virtuella minnet till det fysiska samt låter processen köra vidare.
Detta kan tyckas vara ett komplicerat sätt att göra samma sak som man gjorde förr på ett mycket enklare sätt. Visst är det så, men det eleganta är att om operativsystemet behöver mer fysiskt minne så behöver den bara koppla loss minnet från ett program (en operation som tar mycket lite tid) och börja använda det fysiska minnet till något annat syfte. Om det tidigare nämnda programmet försöker läsa det minne som nu inte är tillgängligt längre så kommer den tidigare nämnda processen att upprepas. D.v.s. operativsystemet blir meddelat att det inte finns något fysiskt minne kopplat till det virtuella minne som försökte nås, och den laddar in informationen från disk igen, samt låter programmet fortsätta. Processen märker ingenting annat än att det blir en kort paus i programkörningen.
Nästa viktiga sak att tänka på är vad som händer när ett program avslutar. När detta händer så kopplas givetvis allt fysiskt minne bort och det är inte längre kopplat till något virtuellt minne. Glöm dock inte att minnet fortfarande innehåller användbar information. Om samma program skall startas på nytt så kan den mappa in samma fysiska minne direkt utan att man behöver ladda det från disk.
Det du ser som "fritt" minne är det fysiska minne som inte innehåller någon användbar information alls. Som du säkert förstått så tenderar det fria minnet att ta slut rätt snart allt eftersom det fylls med användbar information. Detta betyder inte att minnet är låst till just detta innehåll, om någon annan process behöver fysiskt minne och det inte finns något fritt minne kvar, så tar den bara minne som inte för stunden används av något annat program, även om minnet innehåller information som kanske skulle vara bra att ha. Dock så finns den informationen alltid på disk om det skulle behövas.
Nu är ju dock inte allt minne fast information som ligger på disk. Ett program kan också allokera fritt minne som det kan använda hur det vill. Denna information finns ju inte redan på disk, så därför kan operativsystemet inte bara släppa mappningen om ett annat program behöver minnet. Det är då swap kommer in i bilden. Om fysiskt minne behövs till något annat syfte och innehållet inte finns på disk, så skrivs det först ner i swapfilen innan det används till något annat.
Jag hoppas att denna beskrivning har klargjort lite varför man alltid ser att det fria minnet verkar ha tagit slut.