Region-based memory management
કોમ્પ્યુટર વિજ્ઞાનમાં, પ્રદેશ-આધારિત મેમરી મેનેજમેન્ટ એ મેમરી મેનેજમેન્ટનો એક પ્રકાર છે જેમાં દરેક ફાળવેલ વસ્તુને પ્રદેશને સોંપવામાં આવે છે. એક પ્રદેશ, જેને ઝોન, એરેના, વિસ્તાર અથવા મેમરી સંદર્ભ પણ કહેવામાં આવે છે, તે ફાળવવામાં આવેલી વસ્તુઓનો સંગ્રહ છે જે એક જ સમયે અસરકારક રીતે ફરીથી ગોઠવી શકાય છે અથવા કાઢી શકાય છે. સ્ટૅક ફાળવણીની જેમ, પ્રદેશો ઓછા ઓવરહેડ સાથે મેમરીની ફાળવણી અને ડીલોકેશનની સુવિધા આપે છે; પરંતુ તેઓ વધુ લવચીક હોય છે, જેનાથી પદાર્થો સ્ટૅક ફ્રેમ કરતાં લાંબા સમય સુધી જીવી શકે છે જેમાં તેમને ફાળવવામાં આવ્યા હતા. લાક્ષણિક અમલીકરણમાં, પ્રદેશમાં તમામ ઓબ્જેક્ટને મેમરી સરનામાંની એક જ સંલગ્ન શ્રેણીમાં ફાળવવામાં આવે છે, જે રીતે સામાન્ય રીતે સ્ટેક ફ્રેમ્સને કેવી રીતે ફાળવવામાં આવે છે. ઉદાહરણ તરીકે, નીચે આપેલા સી કોડને ધ્યાનમાં લો જે લિંક કરેલી સૂચિ ડેટા સ્ટ્રક્ચરની ફાળવણી કરે છે અને પછી તેને રદ કરે છેઃ ક્ષેત્ર * r = ક્રિએટરિજન (); લિસ્ટનોડ * હેડ = એનયુએલએલ; માટે (પૂર્ણાંક i = 1; i <= 1000; i + +) {લિસ્ટનોડ * ન્યૂનોડ = એલોકેટફ્રૉમરિજન (r, સાઈઝઓફ (લિસ્ટનોડ)); ન્યૂનોડ-> નેક્સ્ટ = હેડ; હેડ = ન્યૂનોડ;}///(અહીં સૂચિનો ઉપયોગ કરો)//. ડિસ્ટ્રૉયરિજન (r); જોકે તેમાં લિંક કરેલી સૂચિ બનાવવા માટે ઘણી કામગીરીઓની જરૂર પડે છે, તેને ઝડપથી એક જ કામગીરીમાં પ્રદેશને નષ્ટ કરીને રદ કરી શકાય છે. સૂચિને પાર કરવાની જરૂર નથી. અમલીકરણ સરળ સ્પષ્ટ પ્રદેશો અમલમાં મૂકવા માટે સીધા છે; નીચેનું વર્ણન હેન્સનના કાર્ય પર આધારિત છે. દરેક પ્રદેશને મેમરીના મોટા બ્લોકની લિંક કરેલી સૂચિ તરીકે અમલમાં મૂકવામાં આવે છે; દરેક બ્લોક ઘણી ફાળવણીઓ કરવા માટે પૂરતો મોટો હોવો જોઈએ. વર્તમાન બ્લોક બ્લોકમાં આગામી મુક્ત સ્થિતિ માટે નિર્દેશક જાળવે છે, અને જો બ્લોક ભરવામાં આવે છે, તો એક નવું ફાળવવામાં આવે છે અને સૂચિમાં ઉમેરવામાં આવે છે. જ્યારે પ્રદેશને અલગ કરવામાં આવે છે, ત્યારે આગામી-મુક્ત-સ્થિતિ નિર્દેશકને પ્રથમ બ્લોકની શરૂઆતમાં ફરીથી સેટ કરવામાં આવે છે, અને બ્લોકની સૂચિનો આગામી ફાળવેલ પ્રદેશ માટે ફરીથી ઉપયોગ કરી શકાય છે. વૈકલ્પિક રીતે, જ્યારે કોઈ પ્રદેશને અલગ કરવામાં આવે છે, ત્યારે તેના બ્લોકની સૂચિને વૈશ્વિક ફ્રીલિસ્ટ સાથે જોડી શકાય છે, જેમાંથી અન્ય પ્રદેશો પછીથી નવા બ્લોક ફાળવી શકે છે. આ સરળ યોજનાના કોઈપણ કિસ્સામાં, પ્રદેશોમાં વ્યક્તિગત પદાર્થોને અલગ પાડવાનું શક્ય નથી. આ યોજનાની ફાળવેલ બાઈટ દીઠ એકંદર ખર્ચ ખૂબ જ ઓછો છે; લગભગ તમામ ફાળવણીમાં માત્ર સરખામણી અને આગામી-મુક્ત-સ્થિતિ નિર્દેશકમાં સુધારા સામેલ છે. પ્રદેશની ફાળવણી એ સતત-સમયની કામગીરી છે, અને તે ભાગ્યે જ કરવામાં આવે છે. લાક્ષણિક કચરો સંગ્રહ પ્રણાલીઓથી વિપરીત, ડેટાને તેના પ્રકાર સાથે ટેગ કરવાની જરૂર નથી. ઇતિહાસ અને વિભાવનાઓ પ્રદેશોનો મૂળભૂત ખ્યાલ ખૂબ જ જૂનો છે, જે સૌપ્રથમ ડગ્લાસ ટી. રોસના એઈડી ફ્રી સ્ટોરેજ પેકેજમાં 1967 ની શરૂઆતમાં દેખાયો હતો, જેમાં મેમરીને ઝોનના પદાનુક્રમમાં વિભાજિત કરવામાં આવી હતી; દરેક ઝોનનું પોતાનું ફાળવણીકાર હતું, અને ઝોનને એકવારમાં મુક્ત કરી શકાય છે, જેનાથી ઝોન પ્રદેશો તરીકે ઉપયોગી બને છે. 1976માં, પીએલ/આઈ ધોરણમાં એઆરઇએ ડેટા પ્રકારનો સમાવેશ થતો હતો. 1990માં, હેન્સને દર્શાવ્યું હતું કે સીમાં સ્પષ્ટ પ્રદેશો (જેને તેઓ એરેના કહે છે) ફાળવેલ બાઈટ દીઠ સમયનું પ્રદર્શન હાંસલ કરી શકે છે, જે સૌથી ઝડપી જાણીતી ઢગલાની ફાળવણી પદ્ધતિ કરતાં પણ શ્રેષ્ઠ છે. કેટલાક પ્રારંભિક સી-આધારિત સોફ્ટવેર પ્રોજેક્ટ્સની રચનામાં સ્પષ્ટ પ્રદેશોએ મહત્વની ભૂમિકા ભજવી હતી, જેમાં અપાચે એચટીટીપી સર્વર, જે તેમને પૂલ્સ કહે છે, અને પોસ્ટગ્રેએસક્યુએલ ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ, જે તેમને મેમરી સંદર્ભો કહે છે. પરંપરાગત ઢગલાની ફાળવણીની જેમ, આ યોજનાઓ મેમરી સલામતી પૂરી પાડતી નથી; પ્રોગ્રામર માટે તે શક્ય છે કે તે કોઈ વિસ્તારને લટકતા પોઇન્ટર દ્વારા ડીલોકેટ કર્યા પછી, અથવા કોઈ વિસ્તારને ડીલોકેટ કરવાનું ભૂલી જાય, જેના કારણે મેમરી લીક થાય. 1988 માં, સંશોધકોએ પ્રદેશ અનુમાનની વિભાવના રજૂ કરીને સલામત મેમરી ફાળવણી માટે પ્રદેશોનો ઉપયોગ કેવી રીતે કરવો તે તપાસવાનું શરૂ કર્યું, જ્યાં પ્રદેશોની રચના અને બિનજોડાણ, તેમજ ચોક્કસ પ્રદેશોમાં વ્યક્તિગત સ્થિર ફાળવણી અભિવ્યક્તિઓની સોંપણી, સંકલનકર્તા દ્વારા સંકલન સમયે દાખલ કરવામાં આવે છે. કમ્પાઇલર આ એવી રીતે કરી શકે છે કે તે બાંયધરી આપી શકે કે લટકતા પોઇન્ટર અને લિક ન થાય. રુગ્ગેરી અને મુર્તાગના પ્રારંભિક કાર્યમાં, દરેક કાર્યની શરૂઆતમાં એક પ્રદેશ બનાવવામાં આવે છે અને અંતે તેને અલગ કરવામાં આવે છે. ત્યારબાદ તેઓ દરેક સ્થિર ફાળવણી અભિવ્યક્તિ માટે જીવનકાળ નક્કી કરવા માટે ડેટા પ્રવાહ વિશ્લેષણનો ઉપયોગ કરે છે, અને તેને સૌથી નાના પ્રદેશને સોંપે છે જેમાં તેનું આખું જીવનકાળ હોય છે. 1994 માં, આ કાર્યને ટોફ્ટે અને તાલપિન દ્વારા મૂળભૂત કાર્યમાં સામાન્યીકૃત કરવામાં આવ્યું હતું, જે પ્રકાર અનુમાન અને બહુરૂપી ક્ષેત્રના પ્રકારો અને પ્રદેશ કલનની સૈદ્ધાંતિક વિભાવનાઓ પર આધારિત એક અલગ અલ્ગોરિધમનો ઉપયોગ કરીને, એક કાર્યાત્મક પ્રોગ્રામિંગ ભાષા, સ્ટાન્ડર્ડ એમએલમાં પ્રકાર બહુરૂપી અને ઉચ્ચ-ક્રમના કાર્યોને ટેકો આપવા માટે કરવામાં આવ્યું હતું. તેમના કાર્યમાં પ્રદેશો સહિત લેમ્બડા કલનનું વિસ્તરણ રજૂ કરવામાં આવ્યું હતું, જેમાં બે રચનાઓ ઉમેરવામાં આવી હતીઃ ρ પર e1: અભિવ્યક્તિ e1 ના પરિણામની ગણતરી કરો અને તેને પ્રદેશ ρ માં સંગ્રહિત કરો; e2 અંતમાં ક્ષેત્ર ρ: એક પ્રદેશ બનાવો અને તેને ρ સાથે બાંધો; e2 નું મૂલ્યાંકન કરો; પછી પ્રદેશને અલગ કરો. આ વાક્યરચના માળખાને કારણે, પ્રદેશો નેસ્ટેડ છે, જેનો અર્થ છે કે જો r2 એ r1 પછી બનાવવામાં આવે છે, તો તેને r1 પહેલાં પણ અલગ પાડવું આવશ્યક છે; પરિણામ એ પ્રદેશોનો સમૂહ છે. વધુમાં, પ્રદેશોને તે જ કાર્યમાં અલગ કરવા જોઈએ જેમાં તેઓ બનાવવામાં આવે છે. એઇકેન એટ અલ દ્વારા આ પ્રતિબંધો હળવા કરવામાં આવ્યા હતા. આ વિસ્તૃત લેમ્બડા કલનનો હેતુ પ્રમાણભૂત એમ. એલ. કાર્યક્રમોને મશીન કોડમાં સંકલિત કરવા માટે પ્રમાણભૂત મેમરી-સલામત મધ્યવર્તી રજૂઆત તરીકે સેવા આપવાનો હતો, પરંતુ મોટા કાર્યક્રમો પર સારા પરિણામો ઉત્પન્ન કરી શકે તેવા અનુવાદકનું નિર્માણ કરવા માટે સંખ્યાબંધ વ્યવહારુ મર્યાદાઓનો સામનો કરવો પડ્યો હતો, જેને નવા વિશ્લેષણ સાથે ઉકેલવી પડી હતી, જેમાં પુનરાવર્તિત કૉલ્સ, પૂંછડીના કૉલ્સ અને માત્ર એક જ મૂલ્ય ધરાવતા પ્રદેશોને દૂર કરવા સહિત. આ કામ 1995માં પૂર્ણ થયું હતું અને એમ. એલ. કિટમાં સંકલિત કરવામાં આવ્યું હતું, જે કચરો એકત્ર કરવાની જગ્યાએ પ્રદેશની ફાળવણી પર આધારિત એમ. એલ. નું સંસ્કરણ છે. આનાથી મધ્યમ કદના પરીક્ષણ કાર્યક્રમો પર બંને વચ્ચે સીધી સરખામણી કરવાની મંજૂરી મળી, જે કાર્યક્રમ કેટલો "પ્રદેશ-મૈત્રીપૂર્ણ" હતો તેના આધારે વ્યાપક રીતે અલગ અલગ પરિણામો ("10 ગણો ઝડપી અને ચાર ગણો ધીમો") આપે છે; સંકલનનો સમય, જોકે, મિનિટોના ક્રમ પર હતો. એમ. એલ. કિટને આખરે બે ઉમેરાઓ સાથે મોટી એપ્લિકેશનોમાં માપવામાં આવી હતીઃ મોડ્યુલોના અલગ સંકલન માટેની યોજના, અને કચરાના સંગ્રહને શોધી કાઢવા સાથે ક્ષેત્રના અનુમાનને જોડતી એક વર્ણસંકર તકનીક. નવા ભાષાના વાતાવરણમાં સામાન્યીકરણ એમ. એલ. કિટના વિકાસ પછી, પ્રદેશોને અન્ય ભાષાના વાતાવરણમાં સામાન્ય બનાવવાની શરૂઆત થઈઃ સી પ્રોગ્રામિંગ ભાષામાં વિવિધ વિસ્તરણઃ સલામત સી બોલી ચક્રવાત, જે અન્ય ઘણી વિશેષતાઓમાં સ્પષ્ટ પ્રદેશો માટે સમર્થન ઉમેરે છે, અને તેનો ઉપયોગ કરવા માટે હાલની સી એપ્લિકેશનોને સ્થળાંતર કરવાની અસરનું મૂલ્યાંકન કરે છે. આરસી તરીકે ઓળખાતા સી માટેનું વિસ્તરણ અમલમાં મૂકવામાં આવ્યું હતું જે સ્પષ્ટ રીતે સંચાલિત પ્રદેશોનો ઉપયોગ કરે છે, પરંતુ કોઈ પણ પ્રદેશ અકાળે મુક્ત ન થાય તેની ખાતરી કરીને મેમરી સલામતીની બાંયધરી આપવા માટે પ્રદેશો પર સંદર્ભ ગણતરીનો પણ ઉપયોગ કરે છે. પ્રદેશો સંદર્ભ ગણતરીના ઓવરહેડને ઘટાડે છે, કારણ કે પ્રદેશોના આંતરિક સંદર્ભોને જ્યારે તેમાં ફેરફાર કરવામાં આવે ત્યારે તેને અપડેટ કરવાની જરૂર નથી. આરસીમાં પ્રદેશો માટે સ્પષ્ટ સ્થિર પ્રકારની પ્રણાલીનો સમાવેશ થાય છે જે કેટલાક સંદર્ભ ગણતરી સુધારાઓને દૂર કરવાની મંજૂરી આપે છે. નિયંત્રણ-સી તરીકે ઓળખાતા સીનું પ્રતિબંધ મેમરી સલામતીની સ્થિર ખાતરી કરવા માટે તેની રચનાના ભાગ રૂપે પ્રદેશો (અને એક સમયે માત્ર એક જ પ્રદેશ) નો ઉપયોગ કરવા માટે કાર્યક્રમોને મર્યાદિત કરે છે. પ્રદેશોને જાવાના સબસેટ માટે અમલમાં મૂકવામાં આવ્યા હતા, અને રીઅલ ટાઇમ જાવામાં મેમરી મેનેજમેન્ટનો એક મહત્વપૂર્ણ ઘટક બની ગયો હતો, જે તેમને ઓબ્જેક્ટ એન્કેપ્સ્યુલેશન દર્શાવવા અને ક્ષેત્રની ડીલોકેશન પર રનટાઇમ તપાસને દૂર કરવા માટે માલિકીના પ્રકારો સાથે જોડે છે. તાજેતરમાં, એમ્બેડેડ રીઅલ-ટાઇમ જાવા એપ્લિકેશન્સમાં પ્રદેશોનું અનુમાન કરવા માટે અર્ધ-સ્વચાલિત પ્રણાલીની દરખાસ્ત કરવામાં આવી હતી, જેમાં સંકલન-સમય સ્થિર વિશ્લેષણ, રનટાઇમ ક્ષેત્ર ફાળવણી નીતિ અને પ્રોગ્રામર સંકેતોને જોડવામાં આવ્યા હતા. પ્રદેશો રીઅલ-ટાઇમ કમ્પ્યુટિંગ માટે યોગ્ય છે કારણ કે તેમનો સમય ઓવરહેડ વધતો કચરો સંગ્રહની જટિલતા વિના સ્થિર રીતે અનુમાનિત છે. તેઓ તર્ક પ્રોગ્રામિંગ ભાષાઓ પ્રોલોગ અને મર્ક્યુરી માટે બેકટ્રેકિંગ અને કટ્સને ટેકો આપવા માટે ટોફ્ટે અને તાલપિનના ક્ષેત્ર અનુમાન મોડેલને વિસ્તૃત કરીને અમલમાં મૂકવામાં આવ્યા હતા. પ્રદેશ-આધારિત સંગ્રહ વ્યવસ્થાપનનો ઉપયોગ સમાંતર પ્રોગ્રામિંગ ભાષા પેરાસેલમાં થાય છે. પેરાસેલમાં સ્પષ્ટ નિર્દેશકોના અભાવને કારણે, સંદર્ભ ગણતરીની જરૂર નથી. ગેરફાયદા પ્રદેશોનો ઉપયોગ કરતી પ્રણાલીઓ એવા મુદ્દાઓનો અનુભવ કરી શકે છે જ્યાં પ્રદેશો અલગ કરવામાં આવે તે પહેલાં ખૂબ મોટા થઈ જાય છે અને તેમાં મૃત માહિતીનો મોટો હિસ્સો હોય છે; આને સામાન્ય રીતે "લીક" કહેવામાં આવે છે (ભલે તે આખરે મુક્ત થઈ જાય). લીક્સને દૂર કરવામાં કાર્યક્રમનું પુનર્ગઠન સામેલ હોઈ શકે છે, સામાન્ય રીતે નવા, ટૂંકા જીવનના પ્રદેશો રજૂ કરીને. આ પ્રકારની સમસ્યાને ડીબગ કરવી એ પ્રદેશ અનુમાનનો ઉપયોગ કરતી સિસ્ટમોમાં ખાસ કરીને મુશ્કેલ છે, જ્યાં પ્રોગ્રામરે સમસ્યાનું નિદાન કરવા માટે અંતર્ગત અનુમાન અલ્ગોરિધમને સમજવું અથવા વર્બોઝ મધ્યવર્તી રજૂઆતની તપાસ કરવી આવશ્યક છે. કાર્યક્રમના ફેરફારો વિના સમયસર આ પ્રકારના ડેટાને અલગ પાડવા માટે કચરો એકત્ર કરનારાઓનું ટ્રેસિંગ વધુ અસરકારક છે; આ વર્ણસંકર પ્રદેશ/જી. સી. પ્રણાલીઓ માટે એક સમર્થન હતું. બીજી બાજુ, કચરો એકત્ર કરનારાઓનું ટ્રેસિંગ પણ સૂક્ષ્મ લિક પ્રદર્શિત કરી શકે છે, જો ડેટા માટે સંદર્ભો જાળવી રાખવામાં આવે છે જેનો ફરીથી ક્યારેય ઉપયોગ કરવામાં આવશે નહીં. જ્યારે પ્રદેશોની સંખ્યા પ્રમાણમાં ઓછી હોય અને દરેકમાં ઘણી વસ્તુઓ હોય ત્યારે પ્રદેશ આધારિત મેમરી મેનેજમેન્ટ શ્રેષ્ઠ રીતે કામ કરે છે; ઘણા વિરલ પ્રદેશો ધરાવતા પ્રોગ્રામ્સ આંતરિક વિભાજન પ્રદર્શિત કરશે, જે બગાડેલી મેમરી તરફ દોરી જશે અને પ્રદેશ વ્યવસ્થાપન માટે સમય ઓવરહેડ તરફ દોરી જશે. ફરીથી, પ્રાદેશિક અનુમાનની હાજરીમાં આ સમસ્યાનું નિદાન કરવું વધુ મુશ્કેલ બની શકે છે. વર્ણસંકર પદ્ધતિઓ ઉપર સૂચવ્યા મુજબ, આર. સી. પ્રદેશો અને સંદર્ભ ગણતરીના વર્ણસંકરનો ઉપયોગ કરે છે, સંદર્ભ ગણતરીના ઓવરહેડને મર્યાદિત કરે છે કારણ કે પ્રદેશોના આંતરિક સંદર્ભોમાં જ્યારે તેમાં ફેરફાર કરવામાં આવે ત્યારે ગણતરીઓને અપડેટ કરવાની જરૂર નથી. તેવી જ રીતે, કેટલીક માર્ક-પ્રદેશ સંકર પદ્ધતિઓ પ્રદેશો સાથે કચરાના સંગ્રહને શોધી કાઢે છે; આ રાશિઓને પ્રદેશોમાં વિભાજીત કરીને, માર્ક-સ્વીપ પાસ કરીને કાર્ય કરે છે જેમાં જીવંત વસ્તુઓ ધરાવતા કોઈપણ પ્રદેશોને ચિહ્નિત કરવામાં આવે છે, અને પછી કોઈપણ અચિહ્નિત પ્રદેશોને મુક્ત કરે છે. આને અસરકારક રહેવા માટે સતત ડીફ્રેગમેન્ટેશનની જરૂર પડે છે. સંદર્ભો મેમરી વ્યવસ્થાપન