Memory management (operating systems)
ઓપરેટિંગ સિસ્ટમ્સમાં, મેમરી મેનેજમેન્ટ એ કમ્પ્યુટરની પ્રાથમિક મેમરીના સંચાલન માટે જવાબદાર કાર્ય છે. મેમરી વ્યવસ્થાપન કાર્ય દરેક મેમરી સ્થાનની સ્થિતિનો ટ્રેક રાખે છે, ક્યાં તો ફાળવેલ અથવા મફત. તે નક્કી કરે છે કે સ્પર્ધાત્મક પ્રક્રિયાઓ વચ્ચે મેમરી કેવી રીતે ફાળવવામાં આવે છે, તે નક્કી કરે છે કે કોને મેમરી મળે છે, તેઓ તેને ક્યારે પ્રાપ્ત કરે છે અને તેમને કેટલી મંજૂરી છે. જ્યારે મેમરી ફાળવવામાં આવે છે ત્યારે તે નક્કી કરે છે કે કયા મેમરી સ્થાનો સોંપવામાં આવશે. જ્યારે મેમરી મુક્ત થાય છે અથવા ફાળવવામાં આવતી નથી ત્યારે તે ટ્રેક કરે છે અને સ્થિતિને અપડેટ કરે છે. આ એપ્લિકેશન મેમરી મેનેજમેન્ટથી અલગ છે, જે રીતે પ્રક્રિયા ઓપરેટિંગ સિસ્ટમ દ્વારા તેને સોંપવામાં આવેલી મેમરીનું સંચાલન કરે છે. મેમરી મેનેજમેન્ટ તકનીકો સિંગલ સંલગ્ન ફાળવણી સિંગલ ફાળવણી એ સૌથી સરળ મેમરી મેનેજમેન્ટ તકનીક છે. કમ્પ્યુટરની તમામ મેમરી, સામાન્ય રીતે ઓપરેટિંગ સિસ્ટમ માટે આરક્ષિત નાના ભાગને બાદ કરતાં, એક જ એપ્લિકેશન માટે ઉપલબ્ધ હોય છે. એમ. એસ.-ડોસ એ એવી પ્રણાલીનું ઉદાહરણ છે જે આ રીતે મેમરી ફાળવે છે. એક જ એપ્લિકેશન ચલાવતી એમ્બેડેડ સિસ્ટમ પણ આ તકનીકનો ઉપયોગ કરી શકે છે. સિંગલ સંલગ્ન ફાળવણીનો ઉપયોગ કરતી સિસ્ટમ હજી પણ વપરાશકર્તાઓ વચ્ચે સ્વિચ કરવા માટે મેમરીની સામગ્રીને અદલાબદલી કરીને મલ્ટીટાસ્ક કરી શકે છે. સંગીત ઓપરેટિંગ સિસ્ટમની પ્રારંભિક આવૃત્તિઓમાં આ તકનીકનો ઉપયોગ કરવામાં આવ્યો હતો. પાર્ટિશન્ડ ફાળવણી પ્રાથમિક મેમરીને બહુવિધ મેમરી પાર્ટીશનોમાં વિભાજિત કરે છે, સામાન્ય રીતે મેમરીના સંલગ્ન ક્ષેત્રો. દરેક પાર્ટીશનમાં ચોક્કસ નોકરી અથવા કાર્ય માટેની તમામ માહિતી હોઈ શકે છે. મેમરી મેનેજમેન્ટમાં કામ શરૂ થાય ત્યારે પાર્ટીશનની ફાળવણી અને કામ પૂરું થાય ત્યારે તેને અલગ પાડવાનો સમાવેશ થાય છે. વિભાજીત ફાળવણી માટે સામાન્ય રીતે અમુક હાર્ડવેર સપોર્ટની જરૂર પડે છે જેથી નોકરીઓ એકબીજા સાથે અથવા ઓપરેટિંગ સિસ્ટમમાં દખલ ન કરે. આઇબીએમ સિસ્ટમ/360 એ લોક-એન્ડ-કી તકનીકનો ઉપયોગ કર્યો હતો. અન્ય સિસ્ટમોએ બેઝ અને બાઉન્ડ્સ રજિસ્ટરનો ઉપયોગ કર્યો હતો જેમાં પાર્ટીશનની મર્યાદાઓ હતી અને અમાન્ય એક્સેસને ફ્લેગ કરવામાં આવી હતી. UNIVAC 1108 સંગ્રહ મર્યાદા રજિસ્ટરમાં સૂચનાઓ અને ડેટા માટે અલગ આધાર/બાઉન્ડ સેટ હતા. આ પ્રણાલીએ મેમરી ઇન્ટરલીવિંગનો લાભ ઉઠાવીને જેને આઈ બેંક અને ડી બેંક કહેવામાં આવતું હતું તેને અલગ મેમરી મોડ્યુલોમાં મૂક્યું હતું. પાર્ટીશનો ક્યાં તો સ્થિર હોઈ શકે છે, જે પ્રારંભિક પ્રોગ્રામ લોડ (આઇ. પી. એલ.) અથવા બુટ ટાઇમ પર વ્યાખ્યાયિત થયેલ છે, અથવા કમ્પ્યુટર ઓપરેટર દ્વારા, અથવા ગતિશીલ, એટલે કે, ચોક્કસ કાર્ય માટે આપમેળે બનાવવામાં આવેલ છે. આઇબીએમ સિસ્ટમ/360 ઓપરેટિંગ સિસ્ટમ મલ્ટિપ્રોગ્રામિંગ વિથ ફિક્સ્ડ નંબર ઓફ ટાસ્કસ (એમએફટી) એ સ્ટેટિક પાર્ટીશનિંગનું ઉદાહરણ છે, અને વેરિયેબલ નંબર ઓફ ટાસ્કસ (એમવીટી) સાથે મલ્ટિપ્રોગ્રામિંગ એ ડાયનેમિકનું ઉદાહરણ છે. એમવીટી અને અનુગામીઓ અન્ય પ્રણાલીઓમાં સ્થિર પાર્ટીશનોથી ગતિશીલ પાર્ટીશનોને અલગ પાડવા માટે પ્રદેશ શબ્દનો ઉપયોગ કરે છે. બરોઝ કોર્પોરેશન B5500 જેવી હાર્ડવેર ટાઇપ કરેલી મેમરી અથવા PDP-10 અથવા GE-635 જેવી બેઝ અને બાઉન્ડ્સ રજિસ્ટરનો ઉપયોગ કરીને પાર્ટીશનોને સ્થાનાંતરિત કરી શકાય છે. સ્થળાંતર કરી શકાય તેવા પાર્ટીશનો સંલગ્ન ભૌતિક સ્મૃતિના મોટા ભાગો પ્રદાન કરવા માટે સઘન કરી શકાય છે. કોમ્પેક્શન મોટા સંલગ્ન મુક્ત વિસ્તારો બનાવવા માટે પ્રક્રિયા સમાપ્તિને કારણે "છિદ્રો" અથવા મેમરીના બિનઉપયોગી વિસ્તારોને દૂર કરવા માટે મેમરીના "ઇન-યુઝ" વિસ્તારોને ખસેડે છે. કેટલીક સિસ્ટમો વધારાની મેમરીને મુક્ત કરવા માટે પાર્ટીશનોને ગૌણ સંગ્રહમાં બદલવાની મંજૂરી આપે છે. આઇબીએમના ટાઇમ શેરિંગ ઓપ્શન (ટીએસઓ) ની પ્રારંભિક આવૃત્તિઓએ વપરાશકર્તાઓને ટાઇમ-શેરિંગ પાર્ટીશનોમાં અને બહાર અદલાબદલી કરી હતી. પેજ્ડ મેમરી મેનેજમેન્ટ પેજ્ડ ફાળવણી કમ્પ્યુટરની પ્રાથમિક મેમરીને પેજ ફ્રેમ્સ તરીકે ઓળખાતા નિશ્ચિત-કદના એકમોમાં વિભાજિત કરે છે, અને પ્રોગ્રામની વર્ચ્યુઅલ સરનામાંની જગ્યાને સમાન કદના પૃષ્ઠોમાં વિભાજિત કરે છે. હાર્ડવેર મેમરી મેનેજમેન્ટ એકમ પૃષ્ઠોને ફ્રેમમાં મેપ કરે છે. ભૌતિક મેમરીને પૃષ્ઠના આધારે ફાળવી શકાય છે જ્યારે સરનામાંની જગ્યા સંલગ્ન દેખાય છે. સામાન્ય રીતે, પેજ મેમરી મેનેજમેન્ટ સાથે, દરેક કામ તેના પોતાના સરનામાની જગ્યામાં ચાલે છે. જો કે, કેટલીક સિંગલ એડ્રેસ સ્પેસ ઓપરેટિંગ સિસ્ટમ્સ છે જે એક સરનામાંની જગ્યામાં તમામ પ્રક્રિયાઓ ચલાવે છે, જેમ કે IBM i, જે વિશાળ સરનામાંની જગ્યામાં તમામ પ્રક્રિયાઓ ચલાવે છે, અને IBM OS/VS2 (SVS), જે એક જ 16MiB વર્ચ્યુઅલ સરનામાંની જગ્યામાં તમામ નોકરીઓ ચલાવે છે. જ્યારે સિસ્ટમ પ્રાથમિક અને ગૌણ મેમરી વચ્ચે જરૂરિયાત મુજબ પૃષ્ઠોને ખસેડી શકે છે ત્યારે પૃષ્ઠિત મેમરીને માંગ-પૃષ્ઠ કરી શકાય છે. સેગમેન્ટ મેમરી મેનેજમેન્ટ સેગમેન્ટ મેમરી એ એકમાત્ર મેમરી મેનેજમેન્ટ તકનીક છે જે વપરાશકર્તાના પ્રોગ્રામને "રેખીય અને સંલગ્ન સરનામાંની જગ્યા" પ્રદાન કરતી નથી. સેગમેન્ટ્સ એ મેમરીના ક્ષેત્રો છે જે સામાન્ય રીતે કોડ પ્રક્રિયા અથવા ડેટા એરે જેવી માહિતીના તાર્કિક જૂથને અનુરૂપ હોય છે. સેગમેન્ટ્સને સેગમેન્ટ ટેબલના સ્વરૂપમાં હાર્ડવેર સપોર્ટની જરૂર પડે છે જેમાં સામાન્ય રીતે મેમરીમાં સેગમેન્ટનું ભૌતિક સરનામું, તેનું કદ અને અન્ય ડેટા જેમ કે એક્સેસ પ્રોટેક્શન બિટ્સ અને સ્થિતિ (અદલાબદલી, અદલાબદલી, વગેરે) હોય છે. વિભાજન અન્ય યોજનાઓ કરતાં વધુ સારી પહોંચ સુરક્ષાને મંજૂરી આપે છે કારણ કે મેમરી સંદર્ભો ચોક્કસ સેગમેન્ટ સાથે સંબંધિત છે અને હાર્ડવેર એપ્લિકેશનને તે સેગમેન્ટ માટે વ્યાખ્યાયિત ન હોય તેવી મેમરીનો સંદર્ભ આપવાની મંજૂરી આપશે નહીં. પેજિંગ સાથે અથવા વગર વિભાજન અમલમાં મૂકવું શક્ય છે. પેજિંગ સપોર્ટ વિના સેગમેન્ટ એ ભૌતિક એકમ છે જે જો જરૂરી હોય તો મેમરીની અંદર અને બહાર અદલાબદલી થાય છે. પેજિંગ સપોર્ટ સાથે પૃષ્ઠો સામાન્ય રીતે અદલાબદલીનું એકમ હોય છે અને વિભાજન માત્ર સુરક્ષાનું વધારાનું સ્તર ઉમેરે છે. સેગમેન્ટ સિસ્ટમમાં સરનામાંઓમાં સામાન્ય રીતે સેગમેન્ટ આઈડી અને સેગમેન્ટ બેઝ સરનામાને સંબંધિત ઓફસેટ હોય છે, જેને ઓફસેટ શૂન્ય તરીકે વ્યાખ્યાયિત કરવામાં આવે છે. ઇન્ટેલ આઇએ-32 (x86) આર્કિટેક્ચર પ્રક્રિયાને 4જીઆઇબી સુધીના 16,383 સેગમેન્ટ્સની મંજૂરી આપે છે. આઇએ-32 સેગમેન્ટ્સ એ કમ્પ્યુટરની રેખીય સરનામાંની જગ્યાના પેટાવિભાગો છે, જે પેજિંગ હાર્ડવેર દ્વારા પ્રદાન કરાયેલ વર્ચ્યુઅલ સરનામાંની જગ્યા છે. મલ્ટિક્સ ઓપરેટિંગ સિસ્ટમ કદાચ સેગમેન્ટ મેમરીનો અમલ કરતી સૌથી જાણીતી સિસ્ટમ છે. મલ્ટીક્સ સેગમેન્ટ્સ એ 256 પૃષ્ઠો સુધીની કમ્પ્યુટરની ભૌતિક મેમરીના પેટાવિભાગો છે, દરેક પૃષ્ઠ કદમાં 1K 36-બીટ શબ્દો છે, પરિણામે સેગમેન્ટનું મહત્તમ કદ 1MiB (9-બીટ બાઇટ્સ સાથે, મલ્ટિક્સમાં વપરાય છે) થાય છે. એક પ્રક્રિયામાં 4046 વિભાગો હોઈ શકે છે. રોલઆઉટ/રોલઆઉટ/રોલિન (આરઓ/આરઆઈ) એ કમ્પ્યુટર ઓપરેટિંગ સિસ્ટમ મેમરી મેનેજમેન્ટ તકનીક છે જ્યાં સમગ્ર બિન-વહેંચાયેલ કોડ અને ચાલી રહેલા પ્રોગ્રામના ડેટાને સહાયક મેમરી (ડિસ્ક અથવા ડ્રમ) માં બદલીને અન્ય કાર્ય માટે મુખ્ય સંગ્રહને મુક્ત કરવામાં આવે છે. કાર્યક્રમો "માંગના અંત સુધીમાં or.when અમુક લાંબી ઇવેન્ટની રાહ જોતા" શરૂ કરી શકાય છે. રોલઆઉટ/રોલિનનો ઉપયોગ સામાન્ય રીતે સમય વહેંચણી પ્રણાલીઓમાં થતો હતો, જ્યાં વપરાશકર્તાનો "વિચારવાનો સમય" અદલાબદલી કરવાના સમયની સરખામણીમાં પ્રમાણમાં લાંબો હતો. વર્ચ્યુઅલ સ્ટોરેજ-પેજિંગ અથવા સેગમેન્ટેશનથી વિપરીત, રોલઆઉટ/રોલિનને કોઈ વિશેષ મેમરી મેનેજમેન્ટ હાર્ડવેરની જરૂર નથી; જો કે, જ્યાં સુધી સિસ્ટમમાં મેમરી મેપ અથવા બેઝ અને બાઉન્ડ્સ રજિસ્ટર જેવા રીલોકેશન હાર્ડવેર ન હોય ત્યાં સુધી, પ્રોગ્રામને તેના મૂળ મેમરી સ્થાનો પર પાછા ફેરવવો આવશ્યક છે. વર્ચ્યુઅલ મેમરી દ્વારા મોટા ભાગે રોલઆઉટ/રોલિનનું સ્થાન લીધું છે. રોલઆઉટ/રોલિન એ ઓ. એસ./360 મલ્ટીપ્રોગ્રામિંગનું વૈકલ્પિક લક્ષણ હતું, જેમાં ચલ સંખ્યાબંધ કાર્યો (એમ. વી. ટી.) સાથે રોલઆઉટ/રોલિન ચોક્કસ કાર્યને તેના મૂળ નિર્દિષ્ટ ક્ષેત્રની બહાર કામચલાઉ, ગતિશીલ વિસ્તરણની મંજૂરી આપે છે. જ્યારે નોકરીને વધુ જગ્યાની જરૂર હોય, ત્યારે રોલઆઉટ/રોલિન નોકરીના ઉપયોગ માટે અસાઇન કરેલ સંગ્રહ મેળવવાનો પ્રયાસ કરે છે. જો આવા કોઈ અસાઇન કરેલ સંગ્રહ ન હોય, તો અન્ય કાર્ય શરૂ કરવામાં આવે છે-એટલે કે, સહાયક સંગ્રહમાં સ્થાનાંતરિત કરવામાં આવે છે-જેથી તેના પ્રદેશનો ઉપયોગ પ્રથમ કાર્ય દ્વારા થઈ શકે. જ્યારે પ્રથમ કાર્ય દ્વારા મુક્ત કરવામાં આવે છે, ત્યારે આ વધારાનો સંગ્રહ ફરીથી ઉપલબ્ધ થાય છે, ક્યાં તો (1) અસાઇન કરેલા સંગ્રહ તરીકે, જો તે તેનો સ્રોત હોય, અથવા (2) મુખ્ય સંગ્રહમાં પાછા ટ્રાન્સફર કરવા માટે કામ પ્રાપ્ત કરવા માટે (રોલ્ડ ઇન). ઓએસ/360 માં, રોલઆઉટ/રોલિનનો ઉપયોગ માત્ર બેચ નોકરીઓ માટે થતો હતો, અને જ્યાં સુધી જોબસ્ટેપ ક્ષેત્રમાંથી ઉછીનું લેવું સમાપ્ત ન થાય ત્યાં સુધી રોલિન થતું નથી. મેમરી ઓવરકમિમેન્ટ મેમરી પ્રોટેક્શન x86 મેમરી સેગમેન્ટેશન નોટ્સ રેફરન્સ ઓપરેટિંગ સિસ્ટમ્સ પણ જુઓ.