? Delat minne är ett sätt för olika delar av ett datorsystem för att kommunicera med varandra genom att läsa och skriva till samma block RAM . Elementen kan vara olika exekveringstrådar inom samma program , olika program , eller program och maskinvaruenheter . Systemwide delat minne var normen i de första dagarna av datorer . Moderna skyddat läge operativsystem såsom Linux normalt inte tillåter olika program för att komma åt varandras minne för säkerhet och stabilitet skäl , såvida inte särskilda förfaranden följs för att uttryckligen tillåta det . Historia
All minnet var alltid delas av alla program i början , "riktiga mode" operativsystem såsom DOS . Alla program kan läsa eller skriva något annat program minne som helst utan restriktioner . Författare av DOS TSR - sk " avsluta and Stay Resident " program använde denna funktion i många smarta sätt att simulera multitasking och utöka funktionerna i andra program utan tillgång till den ursprungliga källkoden . Denna funktion också tillåtet virus att propagera mycket lätt , erbjöd program ingen säkerhet mot inspektionen av deras data genom andra program , och gjorde det lätt att krascha hela systemet genom ett litet programmeringsfel som av misstag skrivit över minnet av några andra processer .
skyddat läge
Intels ingenjörer erkände för säkerhet och stabilitet problem som skapats av systemwide delat minne , så de utvecklade " skyddat läge " som först dök upp på 80286 marker . Skyddat läge inför begreppet " ringar ", eller nivåer privilegium . Ring 0 processer , avsedda för operativsystemets kärna , kan läsa och skriva något minne . Ring 3 processer , som är avsedda för vanliga program , stoppas från att läsa och skriva varandras minne av hårdvaran . Om du gör det resulterar i ett " segmentation fault " fel och oftast slutar det felande programmet .
Modern Shared Memory
Skyddat läge hindrade många av de problem orsakad av systemwide delat minne i verkliga läge , men det är fortfarande ibland önskvärt att ett program för att kunna läsa och skriva minne som delas med något annat program eller enhet . Operativsystem såsom Linux , därför lagt till stöd för explicit delat minne . Program och enheter kan välja att dela minnet med varandra , med förbehåll för vissa begränsningar . Trådar för verkställighet inom ett program dela deras minne som standard .
Parallel Computing
Många datorer innehåller mer än en CPU- kärna . Program kan dela sig i flera "trådar" i utförandet , kan var och en köra samtidigt , för att påskynda den övergripande verksamheten som krävs för vissa uppgifter . De måste ofta arbeta på samma data samtidigt eller kommunicera sitt tillstånd till varandra , och delat minne är ett populärt sätt att göra detta .
Dynamiska bibliotek
Vanligen används dynamiska bibliotek som libc typiskt laddade med många olika program . Eftersom objektkoden i dessa bibliotek används vanligen i en skrivskyddad sätt genom programmen , kan betydande minne besparingar uppnås med delat minne . Den dynamiska biblioteket kan laddas bara en gång av operativsystemet och delas mellan ett stort antal program , minskar totala minnesanvändningen .