Region-based memory management
கணினி அறிவியலில், பிராந்திய அடிப்படையிலான நினைவக மேலாண்மை என்பது ஒரு வகை நினைவக மேலாண்மை ஆகும், இதில் ஒதுக்கப்பட்ட ஒவ்வொரு பொருளும் ஒரு பிராந்தியத்திற்கு ஒதுக்கப்படுகிறது. மண்டலம், அரங்கம், பகுதி அல்லது நினைவகச் சூழல் என்றும் அழைக்கப்படும் ஒரு பிராந்தியம் என்பது ஒதுக்கப்பட்ட பொருட்களின் தொகுப்பாகும், அவை ஒரே நேரத்தில் திறம்பட மறுசீரமைக்கப்படலாம் அல்லது நீக்கப்படலாம். அடுக்கு ஒதுக்கீட்டைப் போலவே, பகுதிகள் குறைந்த மேல்நிலையுடன் நினைவகத்தை ஒதுக்குவதற்கும் நீக்குவதற்கும் உதவுகின்றன; ஆனால் அவை மிகவும் நெகிழ்வானவை, அவை ஒதுக்கப்பட்ட அடுக்கு சட்டகத்தை விட நீண்ட காலம் வாழ அனுமதிக்கின்றன. வழக்கமான செயல்பாடுகளில், ஒரு பிராந்தியத்தில் உள்ள அனைத்து பொருட்களும் ஒரே தொடர்ச்சியான நினைவக முகவரிகளில் ஒதுக்கப்படுகின்றன, இது அடுக்கு பிரேம்கள் பொதுவாக எவ்வாறு ஒதுக்கப்படுகின்றன என்பதைப் போன்றது. எடுத்துக்காட்டாக, பின்வரும் சி குறியீட்டைக் கருத்தில் கொள்ளுங்கள், இது ஒரு இணைக்கப்பட்ட பட்டியல் தரவு கட்டமைப்பை ஒதுக்கி, பின்னர் ஒதுக்குவதை நீக்குகிறதுஃ பிராந்தியம் * r = கிரியேட் ரீஜியன் (); லிஸ்ட்நோட் * ஹெட் = என். யு. எல். எல்; (இன்ட்டி i = 1; i <= 1000; i + +) {லிஸ்ட்நோட் * நியூநோட் = அலோகேட்ஃப்ரோம் ரீஜியன் (r, சைஸோஃப் (லிஸ்ட்நோட்)); நியூநோட்-> நெக்ஸ்ட் = ஹெட்; ஹெட் = நியூநோட்;}///(இங்கே பட்டியலைப் பயன்படுத்தவும்)//. டெஸ்ட்ராய் ரீஜியன் (r); இணைக்கப்பட்ட பட்டியலை உருவாக்க பல செயல்பாடுகள் தேவைப்பட்டாலும், பிராந்தியத்தை அழிப்பதன் மூலம் ஒரே செயல்பாட்டில் அதை விரைவாக ஒதுக்கலாம். பட்டியலை கடந்து செல்ல வேண்டிய அவசியமில்லை. செயல்படுத்தல் எளிய வெளிப்படையான பகுதிகள் செயல்படுத்த நேரடியானவை; பின்வரும் விளக்கம் ஹான்சனின் பணியை அடிப்படையாகக் கொண்டது. ஒவ்வொரு பகுதியும் நினைவகத்தின் பெரிய தொகுதிகளின் இணைக்கப்பட்ட பட்டியலாக செயல்படுத்தப்படுகிறது; ஒவ்வொரு தொகுதியும் பல ஒதுக்கீடுகளுக்கு சேவை செய்யும் அளவுக்கு பெரியதாக இருக்க வேண்டும். தற்போதைய பிளாக் பிளாக்கில் அடுத்த இலவச நிலைக்கு ஒரு சுட்டியை பராமரிக்கிறது, மேலும் பிளாக் நிரப்பப்பட்டால், ஒரு புதிய ஒன்று ஒதுக்கப்பட்டு பட்டியலில் சேர்க்கப்படுகிறது. பகுதி ஒதுக்கப்படும்போது, அடுத்த-இலவச-நிலை சுட்டிக்காட்டி முதல் தொகுதியின் தொடக்கத்திற்கு மீட்டமைக்கப்படுகிறது, மேலும் தொகுதிகளின் பட்டியலை அடுத்த ஒதுக்கப்பட்ட பகுதிக்கு மீண்டும் பயன்படுத்தலாம். மாற்றாக, ஒரு பிராந்தியம் ஒதுக்கப்படும்போது, அதன் தொகுதிகளின் பட்டியலை ஒரு உலகளாவிய ஃப்ரீலிஸ்ட்டுடன் சேர்க்கலாம், அதில் இருந்து மற்ற பிராந்தியங்கள் பின்னர் புதிய தொகுதிகளை ஒதுக்கலாம். இந்த எளிய திட்டத்தின் இரு நிகழ்வுகளிலும், பிராந்தியங்களில் தனிப்பட்ட பொருட்களை ஒதுக்குவது சாத்தியமில்லை. இந்த திட்டத்தின் ஒதுக்கப்பட்ட பைட்டின் ஒட்டுமொத்த செலவு மிகக் குறைவு; கிட்டத்தட்ட அனைத்து ஒதுக்கீடுகளும் அடுத்த-ஃப்ரீ-பொசிஷன் சுட்டிக்காட்டிக்கு ஒரு ஒப்பீடு மற்றும் புதுப்பிப்பை மட்டுமே உள்ளடக்கியது. ஒரு பிராந்தியத்தை ஒதுக்குவது ஒரு நிலையான நேர செயல்பாடாகும், இது அரிதாகவே செய்யப்படுகிறது. வழக்கமான குப்பை சேகரிப்பு முறைகளைப் போலல்லாமல், தரவை அதன் வகையுடன் குறிக்க வேண்டிய அவசியமில்லை. வரலாறு மற்றும் கருத்துக்கள் பிராந்தியங்களின் அடிப்படை கருத்து மிகவும் பழமையானது, முதன்முதலில் 1967 ஆம் ஆண்டின் தொடக்கத்தில் டக்ளஸ் டி. ரோஸின் ஏ. இ. டி இலவச சேமிப்பு தொகுப்பில் தோன்றியது, இதில் நினைவகம் மண்டலங்களின் படிநிலையாகப் பிரிக்கப்பட்டது; ஒவ்வொரு மண்டலத்திற்கும் அதன் சொந்த ஒதுக்கீடு இருந்தது, மேலும் ஒரு மண்டலத்தை ஒரே நேரத்தில் விடுவிக்க முடியும், இதனால் மண்டலங்களை பிராந்தியங்களாகப் பயன்படுத்த முடியும். 1976 ஆம் ஆண்டில், பிஎல்/ஐ தரநிலை ஏஆர்இஏ தரவு வகையை உள்ளடக்கியது. 1990 ஆம் ஆண்டில், சி இல் உள்ள வெளிப்படையான பகுதிகள் (அவர் அரங்கங்கள் என்று அழைத்தார்) ஒதுக்கப்பட்ட பைட்டுக்கு நேர செயல்திறனை அடைய முடியும் என்பதை ஹான்சன் நிரூபித்தார், இது மிக வேகமாக அறியப்பட்ட குவியல் ஒதுக்கீடு பொறிமுறையை விட உயர்ந்தது. சில ஆரம்பகால சி-அடிப்படையிலான மென்பொருள் திட்டங்களை வடிவமைப்பதில் வெளிப்படையான பகுதிகள் கருவியாக இருந்தன, அவற்றில் அப்பாச்சி எச். டி. டி. பி சர்வர், அவற்றை குளங்கள் என்று அழைக்கிறது, மேலும் போஸ்ட்கிரேஎஸ்கியூஎல் தரவுத்தள மேலாண்மை அமைப்பு, அவற்றை நினைவக சூழல்கள் என்று அழைக்கிறது. பாரம்பரிய குவியல் ஒதுக்கீட்டைப் போலவே, இந்த திட்டங்களும் நினைவக பாதுகாப்பை வழங்காது; ஒரு புரோகிராமர் ஒரு தொங்கும் சுட்டிக்காட்டி மூலம் ஒதுக்கப்பட்ட பிறகு ஒரு பகுதியை அணுகலாம், அல்லது ஒரு பகுதியை ஒதுக்க மறந்துவிடலாம், இதனால் நினைவக கசிவு ஏற்படுகிறது. பிராந்திய அனுமானம் 1988 ஆம் ஆண்டில், பிராந்திய அனுமானம் என்ற கருத்தை அறிமுகப்படுத்துவதன் மூலம் பாதுகாப்பான நினைவக ஒதுக்கீட்டிற்கான பகுதிகளை எவ்வாறு பயன்படுத்துவது என்பதை ஆராய்ச்சியாளர்கள் ஆராயத் தொடங்கினர், அங்கு பகுதிகளின் உருவாக்கம் மற்றும் இடஒதுக்கீடு, அதே போல் குறிப்பிட்ட பகுதிகளுக்கு தனிப்பட்ட நிலையான ஒதுக்கீடு வெளிப்பாடுகளின் ஒதுக்கீடு ஆகியவை தொகுப்பு நேரத்தில் தொகுப்பாளரால் செருகப்படுகின்றன. தொங்கும் சுட்டிகள் மற்றும் கசிவுகள் ஏற்படாது என்று உத்தரவாதம் அளிக்கும் வகையில் தொகுப்பாளரால் இதைச் செய்ய முடியும். ரக்கியேரி மற்றும் முர்தாக் ஆகியோரின் ஆரம்பகால படைப்பில், ஒவ்வொரு செயல்பாட்டின் தொடக்கத்திலும் ஒரு பிராந்தியம் உருவாக்கப்பட்டு இறுதியில் ஒதுக்கப்பட்டுள்ளது. பின்னர் அவர்கள் தரவு ஓட்ட பகுப்பாய்வைப் பயன்படுத்தி ஒவ்வொரு நிலையான ஒதுக்கீடு வெளிப்பாட்டிற்கும் ஒரு வாழ்நாளைத் தீர்மானிக்கிறார்கள், மேலும் அதை அதன் முழு வாழ்நாளையும் உள்ளடக்கிய இளைய பகுதிக்கு ஒதுக்குகிறார்கள். 1994 ஆம் ஆண்டில், ஒரு செயல்பாட்டு நிரலாக்க மொழியான ஸ்டாண்டர்ட் எம். எல். இல் வகை பாலிமார்பிசம் மற்றும் உயர்-வரிசை செயல்பாடுகளை ஆதரிப்பதற்காக டோஃப்டே மற்றும் டால்பின் ஆகியோரால் ஒரு ஆரம்ப படைப்பில் இந்த வேலை பொதுமைப்படுத்தப்பட்டது, வகை அனுமானம் மற்றும் பாலிமார்பிக் பிராந்திய வகைகளின் கோட்பாட்டு கருத்துக்கள் மற்றும் பிராந்திய கால்குலஸின் அடிப்படையில் வேறுபட்ட வழிமுறையைப் பயன்படுத்துகிறது. அவர்களின் பணி பிராந்தியங்கள் உட்பட லாம்ப்டா கால்குலஸின் விரிவாக்கத்தை அறிமுகப்படுத்தியது, இரண்டு கட்டமைப்புகளைச் சேர்த்ததுஃ e1 ஐ ρ இல் கணக்கிடுங்கள்ஃ வெளிப்பாட்டின் முடிவைக் கணக்கிடுங்கள் e1 மற்றும் பிராந்தியத்தில் சேமிக்கவும் ρ; e2 முடிவில் லெட்டர்ஜியன் ρ: ஒரு பிராந்தியத்தை உருவாக்கி அதை ρ உடன் பிணைக்கவும்; e2 ஐ மதிப்பீடு செய்யுங்கள்; பின்னர் பிராந்தியத்தை ஒதுக்குங்கள். இந்த சொல்லியல் அமைப்பு காரணமாக, பிராந்தியங்கள் கூடு கட்டப்படுகின்றன, அதாவது r1 க்குப் பிறகு r2 உருவாக்கப்பட்டால், அது r1 க்கு முன்பு ஒதுக்கப்பட வேண்டும்; இதன் விளைவாக பிராந்தியங்களின் அடுக்கு உள்ளது. மேலும், பிராந்தியங்கள் அவை உருவாக்கப்பட்ட அதே செயல்பாட்டில் ஒதுக்கப்பட வேண்டும். இந்த கட்டுப்பாடுகள் ஐக்கன் மற்றும் பலர் தளர்த்தப்பட்டன. இந்த நீட்டிக்கப்பட்ட லாம்ப்டா கால்குலஸ் நிலையான எம்எல் நிரல்களை இயந்திரக் குறியீடாக தொகுப்பதற்கான ஒரு நிரூபிக்கப்பட்ட நினைவக-பாதுகாப்பான இடைநிலை பிரதிநிதித்துவமாக செயல்படும் நோக்கம் கொண்டது, ஆனால் பெரிய நிரல்களில் நல்ல முடிவுகளைத் தரும் ஒரு மொழிபெயர்ப்பாளரைக் கட்டியெழுப்புவது பல நடைமுறை வரம்புகளை எதிர்கொண்டது, அவை புதிய பகுப்பாய்வுகளுடன் தீர்க்கப்பட வேண்டியிருந்தது, இதில் தொடர்ச்சியான அழைப்புகள், வால் அழைப்புகள் மற்றும் ஒரே மதிப்பைக் கொண்ட பகுதிகளை அகற்றுவது ஆகியவை அடங்கும். இந்த பணி 1995 ஆம் ஆண்டில் முடிக்கப்பட்டு, குப்பை சேகரிப்புக்கு பதிலாக பிராந்திய ஒதுக்கீட்டை அடிப்படையாகக் கொண்ட எம். எல் பதிப்பான எம். எல் கிட்டில் ஒருங்கிணைக்கப்பட்டது. இது நடுத்தர அளவிலான சோதனைத் திட்டங்களில் இரண்டிற்கும் இடையே ஒரு நேரடி ஒப்பீட்டை அனுமதித்தது, நிரல் எவ்வளவு "பிராந்திய நட்பு" என்பதைப் பொறுத்து பரவலாக மாறுபட்ட முடிவுகளை ("10 மடங்கு வேகமாகவும் நான்கு மடங்கு மெதுவாகவும்") அளித்தது; இருப்பினும், தொகுப்பு நேரங்கள் நிமிடங்களின் வரிசையில் இருந்தன. எம்எல் கிட் இறுதியில் இரண்டு சேர்த்தல்களுடன் பெரிய பயன்பாடுகளுக்கு அளவிடப்பட்டதுஃ தொகுதிகளின் தனித்தனி தொகுப்புக்கான ஒரு திட்டம், மற்றும் குப்பை சேகரிப்பைக் கண்டுபிடிப்பதன் மூலம் பிராந்திய அனுமானத்தை இணைக்கும் ஒரு கலப்பின நுட்பம். எம்எல் கிட்டின் வளர்ச்சியைத் தொடர்ந்து, பிராந்தியங்கள் பிற மொழி சூழல்களுக்கு பொதுமைப்படுத்தப்படத் தொடங்கினஃ சி நிரலாக்க மொழிக்கு பல்வேறு நீட்டிப்புகள்ஃ பாதுகாப்பான சி பேச்சுவழக்கு சூறாவளி, இது பல அம்சங்களுடன் வெளிப்படையான பகுதிகளுக்கு ஆதரவைச் சேர்க்கிறது, மேலும் அவற்றின் தாக்கத்தை மதிப்பிடுகிறது ஏற்கனவே உள்ள சி பயன்பாடுகளை இடம்பெயர்ந்து அவற்றைப் பயன்படுத்துதல். ஆர்சி என்று அழைக்கப்படும் சி-க்கு ஒரு நீட்டிப்பு செயல்படுத்தப்பட்டது, இது வெளிப்படையாக நிர்வகிக்கப்பட்ட பகுதிகளைப் பயன்படுத்துகிறது, ஆனால் எந்தப் பகுதியும் முன்கூட்டியே விடுவிக்கப்படுவதில்லை என்பதை உறுதி செய்வதன் மூலம் நினைவக பாதுகாப்புக்கு உத்தரவாதம் அளிக்க பிராந்தியங்களில் குறிப்பு எண்ணிக்கையையும் பயன்படுத்துகிறது. பிராந்தியங்களின் உள் குறிப்புகள் மாற்றியமைக்கப்படும்போது எண்ணிக்கையை புதுப்பிக்க வேண்டிய அவசியமில்லை என்பதால், பிராந்தியங்கள் குறிப்பு எண்ணிக்கையின் மேல்நிலையைக் குறைக்கின்றன. ஆர்சி பிராந்தியங்களுக்கான ஒரு வெளிப்படையான நிலையான வகை அமைப்பை உள்ளடக்கியது, இது சில குறிப்பு எண்ணிக்கை புதுப்பிப்புகளை அகற்ற அனுமதிக்கிறது. கட்டுப்பாட்டு-சி என்று அழைக்கப்படும் சி இன் கட்டுப்பாடு, நினைவக பாதுகாப்பை நிலையான முறையில் உறுதி செய்வதற்கான அதன் வடிவமைப்பின் ஒரு பகுதியாக, பகுதிகளைப் பயன்படுத்துவதற்கான நிரல்களை (ஒரு நேரத்தில் ஒரு பகுதி மட்டுமே) கட்டுப்படுத்துகிறது. ஜாவாவின் துணைக்குழுவிற்கு பிராந்தியங்கள் செயல்படுத்தப்பட்டன, மேலும் நிகழ்நேர ஜாவாவில் நினைவக மேலாண்மையின் ஒரு முக்கியமான அங்கமாக மாறியது, இது அவற்றை உரிமையாளர் வகைகளுடன் இணைத்து பொருள் இணைப்பை நிரூபிக்கவும், பிராந்திய இடமாற்றத்தில் இயக்க நேர சோதனைகளை அகற்றவும் செய்கிறது. மிக சமீபத்தில், உட்பொதிக்கப்பட்ட நிகழ்நேர ஜாவா பயன்பாடுகளில் பகுதிகளை ஊகிக்க ஒரு அரை தானியங்கி அமைப்பு முன்மொழியப்பட்டது, இது ஒரு தொகுப்பு-நேர நிலையான பகுப்பாய்வு, ஒரு இயக்க நேர பிராந்திய ஒதுக்கீடு கொள்கை மற்றும் புரோகிராமர் குறிப்புகள் ஆகியவற்றை இணைக்கிறது. பிராந்தியங்கள் நிகழ்நேர கணிப்புக்கு ஒரு நல்ல பொருத்தம், ஏனெனில் அவற்றின் நேர மேல்நிலை நிலையான முறையில் கணிக்கக்கூடியது, அதிகரிக்கும் குப்பை சேகரிப்பின் சிக்கல் இல்லாமல். பின்னோக்கி மற்றும் வெட்டுக்களை ஆதரிப்பதற்காக டோஃப்டே மற்றும் டால்பினின் பிராந்திய அனுமான மாதிரியை விரிவுபடுத்துவதன் மூலம் தர்க்க நிரலாக்க மொழிகளான புரோலாக் மற்றும் மெர்குரி ஆகியவற்றிற்காக அவை செயல்படுத்தப்பட்டன. பிராந்திய அடிப்படையிலான சேமிப்பு மேலாண்மை இணையான நிரலாக்க மொழி பாரா செயில் முழுவதும் பயன்படுத்தப்படுகிறது. பாராசெயிலில் வெளிப்படையான சுட்டிகள் இல்லாததால், குறிப்பு எண்ணிக்கை தேவையில்லை. குறைபாடுகள் பகுதிகளைப் பயன்படுத்தும் அமைப்புகள் அவை ஒதுக்கப்படுவதற்கு முன்பு பகுதிகள் மிகப் பெரியதாக மாறும் சிக்கல்களை அனுபவிக்கலாம் மற்றும் இறந்த தரவுகளின் பெரிய விகிதத்தைக் கொண்டிருக்கலாம்; இவை பொதுவாக "கசிவுகள்" என்று அழைக்கப்படுகின்றன (அவை இறுதியில் விடுவிக்கப்பட்டாலும்). கசிவுகளை அகற்றுவது திட்டத்தை மறுசீரமைப்பதை உள்ளடக்கியிருக்கலாம், பொதுவாக புதிய, குறுகிய வாழ்நாள் பகுதிகளை அறிமுகப்படுத்துவதன் மூலம். பிராந்திய அனுமானத்தைப் பயன்படுத்தும் அமைப்புகளில் இந்த வகை சிக்கலை பிழைத்திருத்தம் செய்வது குறிப்பாக கடினம், அங்கு புரோகிராமர் அடிப்படை அனுமான வழிமுறையைப் புரிந்து கொள்ள வேண்டும், அல்லது சிக்கலைக் கண்டறிய வினைச்சொல் இடைநிலை பிரதிநிதித்துவத்தை ஆராய வேண்டும். குப்பை சேகரிப்பாளர்களைக் கண்டுபிடிப்பது நிரல் மாற்றங்கள் இல்லாமல் இந்த வகை தரவை சரியான நேரத்தில் ஒதுக்குவதில் மிகவும் பயனுள்ளதாக இருக்கும்; இது கலப்பின பகுதி/ஜி. சி அமைப்புகளுக்கு ஒரு நியாயப்படுத்தலாகும். மறுபுறம், மீண்டும் ஒருபோதும் பயன்படுத்தப்படாத தரவுகளுக்கான குறிப்புகள் தக்கவைக்கப்பட்டால், குப்பை சேகரிப்பாளர்களைக் கண்டுபிடிப்பது நுட்பமான கசிவுகளையும் வெளிப்படுத்தலாம். பிராந்தியங்களின் எண்ணிக்கை ஒப்பீட்டளவில் சிறியதாகவும், ஒவ்வொன்றிலும் பல பொருள்கள் இருக்கும்போது பிராந்திய அடிப்படையிலான நினைவக மேலாண்மை சிறப்பாக செயல்படுகிறது; பல அரிதான பகுதிகளைக் கொண்ட நிரல்கள் உள் துண்டுப்பிரசுரத்தை வெளிப்படுத்தும், இது வீணாக நினைவகம் மற்றும் பிராந்திய நிர்வாகத்திற்கு நேர மேல்நிலைக்கு வழிவகுக்கும். மீண்டும், பிராந்திய அனுமானத்தின் முன்னிலையில் இந்த சிக்கலைக் கண்டறிவது மிகவும் கடினமாக இருக்கும். ஹைப்ரிட் முறைகள் மேலே குறிப்பிட்டுள்ளபடி, ஆர். சி. பிராந்தியங்கள் மற்றும் குறிப்பு எண்ணிக்கையின் கலப்பினத்தைப் பயன்படுத்துகிறது, இது குறிப்பு எண்ணிக்கையின் மேல்நிலையைக் கட்டுப்படுத்துகிறது, ஏனெனில் பிராந்தியங்களுக்குள் உள்ள குறிப்புகள் அவை மாற்றியமைக்கப்படும்போது எண்ணிக்கையை புதுப்பிக்கத் தேவையில்லை. இதேபோல், சில மார்க்-பிராந்திய கலப்பின முறைகள் பகுதிகளுடன் குப்பை சேகரிப்பைக் கண்டுபிடிப்பதை இணைக்கின்றன; இவை குவியலை பகுதிகளாகப் பிரிப்பதன் மூலம் செயல்படுகின்றன, உயிருள்ள பொருட்களைக் கொண்ட எந்தப் பகுதிகளும் குறிக்கப்படும் ஒரு மார்க்-ஸ்வீப் பாஸை நிகழ்த்துகின்றன, பின்னர் குறிக்கப்படாத பகுதிகளை விடுவிக்கின்றன. இவை பயனுள்ளதாக இருக்க தொடர்ச்சியான டிஃப்ராக்மென்டேஷன் தேவைப்படுகிறது. குறிப்புகள் நினைவக மேலாண்மை