இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

இயக்க முறைமைகளுக்கான அறிமுகம்

ஹே ஹப்ர்! எனது கருத்தில் ஒரு சுவாரஸ்யமான இலக்கியத்தின் தொடர்ச்சியான கட்டுரைகள்-மொழிபெயர்ப்புகளை உங்கள் கவனத்திற்குக் கொண்டு வர விரும்புகிறேன் - OSTEP. இந்த பொருள் யுனிக்ஸ் போன்ற இயக்க முறைமைகளின் வேலையை மிகவும் ஆழமாக விவாதிக்கிறது, அதாவது, செயல்முறைகள், பல்வேறு திட்டமிடுபவர்கள், நினைவகம் மற்றும் நவீன OS ஐ உருவாக்கும் பிற ஒத்த கூறுகளுடன் வேலை செய்கிறது. அனைத்து பொருட்களின் அசல் தன்மையையும் இங்கே காணலாம் இங்கே. மொழிபெயர்ப்பானது தொழில்சார்ந்த முறையில் (மிகவும் சுதந்திரமாக) செய்யப்பட்டது என்பதைக் கவனத்தில் கொள்ளவும், ஆனால் நான் பொதுவான அர்த்தத்தைத் தக்க வைத்துக் கொண்டேன் என்று நம்புகிறேன்.

இந்த விஷயத்தில் ஆய்வக வேலைகளை இங்கே காணலாம்:

மற்ற பாகங்கள்:

எனது சேனலையும் நீங்கள் பார்க்கலாம் தந்தி =)

திட்டமிடல்: பல நிலை கருத்து வரிசை

இந்த விரிவுரையில், மிகவும் பிரபலமான அணுகுமுறைகளில் ஒன்றை வளர்ப்பதில் உள்ள சிக்கல்களைப் பற்றி பேசுவோம்
திட்டமிடல், இது அழைக்கப்படுகிறது பல நிலை கருத்து வரிசை (MLFQ). MLFQ திட்டமிடுபவர் முதன்முதலில் 1962 இல் பெர்னாண்டோ ஜே. கார்பேட்டால் ஒரு அமைப்பில் விவரிக்கப்பட்டது.
இணக்கமான நேர-பகிர்வு அமைப்பு (CTSS). இந்த வேலைகள் (பின்னர் வேலை செய்வது உட்பட
மல்டிக்ஸ்) பின்னர் டூரிங் விருதுக்கு பரிந்துரைக்கப்பட்டது. திட்டமிடுபவர்
பின்னர் மேம்படுத்தப்பட்டு ஏற்கனவே காணக்கூடிய தோற்றத்தைப் பெற்றது
சில நவீன அமைப்புகள்.

MLFQ அல்காரிதம் 2 அடிப்படை ஒன்றுடன் ஒன்று சிக்கல்களைத் தீர்க்க முயற்சிக்கிறது.
முதலாவதாக, இது டர்ன்அரவுண்ட் நேரத்தை மேம்படுத்த முயற்சிக்கிறது, இது முந்தைய விரிவுரையில் நாம் விவாதித்தபடி, வரிசையின் தொடக்கத்தில் தொடங்கும் முறையால் உகந்ததாக உள்ளது.
குறுகிய பணிகள். இருப்பினும், ஒரு குறிப்பிட்ட செயல்முறை எவ்வளவு காலம் இயங்கும் என்பது OS க்கு தெரியாது, மேலும் இது
SJF, STCF அல்காரிதம்களின் செயல்பாட்டிற்கு தேவையான அறிவு. இரண்டாவதாக, MLFQ முயற்சிக்கிறது
பயனர்களுக்கு (உதாரணமாக, உட்காருபவர்களுக்கு மற்றும்
பணி முடிவடையும் வரை திரையை வெறித்துப் பார்க்கவும்) இதனால் நேரத்தை குறைக்கவும்
பதில் துரதிர்ஷ்டவசமாக, RR போன்ற அல்காரிதம்கள் மறுமொழி நேரத்தை மேம்படுத்துகின்றன, ஆனால் மிகவும்
டர்ன்அரவுண்ட் நேர அளவீட்டில் மோசமான தாக்கத்தை ஏற்படுத்தும். எனவே எங்கள் பிரச்சனை: எப்படி வடிவமைப்பது
எதையும் அறியாமல் நமது தேவைகளைப் பூர்த்தி செய்யும் ஒரு திட்டமிடுபவர்
பொதுவாக செயல்முறையின் தன்மை? பணிகளின் சிறப்பியல்புகளை திட்டமிடுபவர் எவ்வாறு கற்றுக்கொள்வது,
இது எதைத் தொடங்குகிறது மற்றும் சிறந்த திட்டமிடல் முடிவுகளை எடுக்கிறது?

பிரச்சனையின் சாராம்சம்: சரியான அறிவு இல்லாமல் பணிகளின் அமைப்பை எவ்வாறு திட்டமிடுவது?
ஒரே நேரத்தில் மறுமொழி நேரத்தைக் குறைக்கும் திட்டமிடலை எவ்வாறு வடிவமைப்பது
ஊடாடும் பணிகளுக்கு மற்றும் அதே நேரத்தில் தெரியாமல் திரும்பும் நேரத்தை குறைக்கிறது
பணியை நிறைவேற்றும் நேரம் பற்றிய அறிவு?

குறிப்பு: முந்தைய நிகழ்வுகளிலிருந்து கற்றுக்கொள்கிறோம்

MLFQ வரிசையானது கற்றுக் கொள்ளும் அமைப்பிற்கு ஒரு சிறந்த எடுத்துக்காட்டு
எதிர்காலத்தை கணிக்க கடந்த கால நிகழ்வுகள். இதே போன்ற அணுகுமுறைகள் பெரும்பாலும் உள்ளன
OS இல் காணப்படும் (மற்றும் கிளைகள் உட்பட கணினி அறிவியலின் பல கிளைகள்
வன்பொருள் கணிப்புகள் மற்றும் கேச்சிங் அல்காரிதம்கள்). இதே போன்ற பயணங்கள்
பணிகள் நடத்தை நிலைகளைக் கொண்டிருக்கும்போது தூண்டப்படுகின்றன, இதனால் கணிக்கக்கூடியவை.
இருப்பினும், இந்த நுட்பத்துடன் நீங்கள் கவனமாக இருக்க வேண்டும், ஏனெனில் கணிப்புகள் மிகவும் எளிதானது
தவறானதாக மாறி, கணினியை விட மோசமான முடிவுகளை எடுக்க வழிவகுக்கும்
அறிவு இல்லாமல் இருக்கும்.

MLFQ: அடிப்படை விதிகள்

MLFQ அல்காரிதத்தின் அடிப்படை விதிகளைப் பார்ப்போம். இந்த வழிமுறையின் செயலாக்கங்கள் என்றாலும்
பல உள்ளன, அடிப்படை அணுகுமுறைகள் ஒத்தவை.
நாம் பார்க்கவிருக்கும் செயல்படுத்தலில், MLFQ பலவற்றைக் கொண்டிருக்கும்
தனித்தனி வரிசைகள், ஒவ்வொன்றும் வெவ்வேறு முன்னுரிமையைக் கொண்டிருக்கும். எப்போது வேண்டுமானாலும்,
செயல்பாட்டிற்குத் தயாராக இருக்கும் பணி ஒரு வரிசையில் உள்ளது. MLFQ முன்னுரிமைகளைப் பயன்படுத்துகிறது,
எந்த பணியை நிறைவேற்றுவது என்பதை முடிவு செய்ய, அதாவது. உயர்ந்த பணி
முன்னுரிமை (அதிக முன்னுரிமையுடன் வரிசையில் இருந்து பணி) முதலில் தொடங்கப்படும்
வரிசை.
நிச்சயமாக, கொடுக்கப்பட்ட வரிசையில் ஒன்றுக்கு மேற்பட்ட பணிகள் இருக்கலாம்
அதனால் அவர்களுக்கு ஒரே முன்னுரிமை இருக்கும். இந்த வழக்கில், இயந்திரம் பயன்படுத்தப்படும்
இந்தப் பணிகளில் ஒரு ஓட்டத்தைத் திட்டமிட ஆர்.ஆர்.
எனவே MLFQ க்கான இரண்டு அடிப்படை விதிகளுக்கு வருகிறோம்:

  • விதி1: முன்னுரிமை(A) > முன்னுரிமை(B), பணி A தொடங்கப்படும் (B இல்லை)
  • விதி2: முன்னுரிமை(A) = முன்னுரிமை(B), A&B RRஐப் பயன்படுத்தி தொடங்கப்பட்டால்

மேலே உள்ளவற்றின் அடிப்படையில், MLFQ திட்டமிடுவதற்கான முக்கிய கூறுகள்
முன்னுரிமைகளாகும். ஒவ்வொருவருக்கும் ஒரு நிலையான முன்னுரிமை கொடுப்பதற்கு பதிலாக
பணி, MLFQ கவனிக்கப்பட்ட நடத்தையைப் பொறுத்து அதன் முன்னுரிமையை மாற்றுகிறது.
எடுத்துக்காட்டாக, விசைப்பலகை உள்ளீட்டிற்காக காத்திருக்கும் போது ஒரு பணியானது CPU இல் தொடர்ந்து வேலைகளை வீசிக்கொண்டிருந்தால்,
MLFQ செயல்முறை முன்னுரிமையை அதிகமாக வைத்திருக்கும், ஏனெனில் அதுதான்
ஒரு ஊடாடும் செயல்முறை வேலை செய்ய வேண்டும். மாறாக, பணி தொடர்ந்து மற்றும்
நீண்ட காலத்திற்கு CPU ஐப் பயன்படுத்துகிறது, MLFQ அதைக் குறைக்கும்
ஒரு முன்னுரிமை. எனவே, MLFQ அவை இயங்கும் போது செயல்முறைகளின் நடத்தையைப் படிக்கும்
மற்றும் நடத்தைகளைப் பயன்படுத்தவும்.
ஒரு கட்டத்தில் வரிசைகள் எப்படி இருக்கும் என்பதற்கு ஒரு உதாரணம் வரைவோம்
நேரம் மற்றும் பின்னர் நீங்கள் இதைப் போன்ற ஒன்றைப் பெறுவீர்கள்:
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

இந்தத் திட்டத்தில், A மற்றும் B ஆகிய 2 செயல்முறைகள் அதிக முன்னுரிமை வரிசையில் உள்ளன. செயல்முறை
C எங்கோ நடுவில் உள்ளது, மற்றும் செயல்முறை D வரிசையின் முடிவில் உள்ளது. மேலே சொன்னபடி
MLFQ அல்காரிதத்தின் விளக்கங்களின்படி, திட்டமிடுபவர் அதிகபட்சமாக மட்டுமே பணிகளைச் செய்வார்.
RR இன் படி முன்னுரிமை, மற்றும் பணிகள் C, D ஆகியவை வேலை இல்லாமல் இருக்கும்.
இயற்கையாகவே, ஒரு நிலையான ஸ்னாப்ஷாட் MLFQ எவ்வாறு செயல்படுகிறது என்பதற்கான முழுமையான படத்தைக் கொடுக்காது.
காலப்போக்கில் படம் எவ்வாறு மாறுகிறது என்பதைப் புரிந்துகொள்வது அவசியம்.

முயற்சி 1: முன்னுரிமையை எப்படி மாற்றுவது

இந்த கட்டத்தில் MLFQ எவ்வாறு முன்னுரிமை நிலையை மாற்றும் என்பதை நீங்கள் தீர்மானிக்க வேண்டும்
பணிகள் (இதனால் வரிசையில் உள்ள பணியின் நிலை) அதன் வாழ்க்கைச் சுழற்சியில் முன்னேறும்போது. க்கு
பணிப்பாய்வுகளை மனதில் கொள்ள இது அவசியம்: ஒரு குறிப்பிட்ட அளவு
குறுகிய இயக்க நேரங்களுடன் ஊடாடும் பணிகள் (இதனால் அடிக்கடி வெளியீடு
CPU) மற்றும் பல நீண்ட காலப் பணிகள், CPUவை அவற்றின் அனைத்து வேலை நேரங்களிலும் பயன்படுத்துகின்றன
அத்தகைய பணிகளுக்கு பதில் நேரம் முக்கியமல்ல. இந்த வழியில் நீங்கள் உங்கள் முதல் முயற்சி செய்யலாம்
MLFQ அல்காரிதத்தை பின்வரும் விதிகளுடன் செயல்படுத்தவும்:

  • விதி 3: ஒரு பணி கணினியில் நுழையும் போது, ​​அது மிக உயர்ந்த வரிசையில் வைக்கப்படும்
  • முன்னுரிமை.
  • விதி 4a: ஒரு பணி அதற்கு ஒதுக்கப்பட்ட முழு நேர சாளரத்தையும் பயன்படுத்தினால், அது
  • முன்னுரிமை குறைக்கப்படுகிறது.
  • Rule4b: ஒரு பணி அதன் நேர சாளரம் காலாவதியாகும் முன் CPU ஐ வெளியிட்டால், அது
  • அதே முன்னுரிமையுடன் உள்ளது.

எடுத்துக்காட்டு 1: ஒற்றை நீண்ட காலப் பணி

இந்த எடுத்துக்காட்டில் காணக்கூடியது போல, சேர்க்கை பணி மிக உயர்ந்ததாக அமைக்கப்பட்டுள்ளது
முன்னுரிமை. 10ms நேர சாளரத்திற்குப் பிறகு, செயல்முறை முன்னுரிமையில் குறைக்கப்படுகிறது
திட்டமிடுபவர். அடுத்த முறை சாளரத்திற்குப் பிறகு, பணி இறுதியாகத் தரமிறக்கப்படும்
அமைப்பில் மிகக் குறைந்த முன்னுரிமை, அது இருக்கும் இடத்தில்.
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

எடுத்துக்காட்டு 2: ஒரு குறுகிய பணி வழங்கப்பட்டது

இப்போது MLFQ எப்படி SJFஐ அணுக முயற்சிக்கும் என்பதற்கான உதாரணத்தைப் பார்ப்போம். அதில்
உதாரணமாக, இரண்டு பணிகள்: A, இது ஒரு நீண்ட காலப் பணியாகும்
CPU மற்றும் B ஐ ஆக்கிரமித்தல், இது ஒரு குறுகிய ஊடாடும் பணியாகும். என்று வைத்துக்கொள்வோம்
பணி B வருவதற்குள் A ஏற்கனவே சிறிது நேரம் வேலை செய்து கொண்டிருந்தது.
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

இந்த வரைபடம் காட்சியின் முடிவுகளைக் காட்டுகிறது. பணி A, எந்தப் பணியையும் போல,
CPU பயன்பாடு மிகவும் கீழே இருந்தது. பணி B T=100 நேரத்தில் வந்து சேரும்
அதிக முன்னுரிமை வரிசையில் வைக்கப்பட்டுள்ளது. அதன் இயக்க நேரம் குறைவாக இருப்பதால், பின்னர்
கடைசி வரிசையை அடைவதற்குள் அது நிறைவடையும்.

இந்த எடுத்துக்காட்டில் இருந்து, அல்காரிதத்தின் முக்கிய இலக்கை புரிந்து கொள்ள வேண்டும்: அல்காரிதம் இல்லை என்பதால்
ஒரு பணி நீண்டதா அல்லது குறுகியதா என்பது அவருக்குத் தெரியும், முதலில் அவர் பணி என்று கருதுகிறார்
குறுகிய மற்றும் அதிக முன்னுரிமை கொடுக்கிறது. இது மிகவும் குறுகிய பணி என்றால், பிறகு
அது விரைவாக முடிக்கப்படும், இல்லையெனில் அது நீண்ட பணியாக இருந்தால், அது மெதுவாக நகரும்
முன்னுரிமை குறைந்து, அவள் உண்மையில் செய்யாத ஒரு நீண்ட பணி என்பதை விரைவில் நிரூபிப்பாள்
பதில் தேவை.

எடுத்துக்காட்டு 3: I/O பற்றி என்ன?

இப்போது I/O உதாரணத்தைப் பார்ப்போம். விதி 4b இல் கூறப்பட்டுள்ளபடி,
ஒரு செயல்முறை அதன் முழு செயலி நேரத்தையும் பயன்படுத்தாமல் செயலியை வெளியிட்டால்,
பின்னர் அது அதே முன்னுரிமை மட்டத்தில் இருக்கும். இந்த விதியின் நோக்கம் மிகவும் எளிமையானது
- ஊடாடும் வேலை நிறைய I/O செயல்பாடுகளைச் செய்தால், எடுத்துக்காட்டாக, காத்திருப்பு
பயனர் விசை அல்லது மவுஸ் அழுத்தங்களிலிருந்து, அத்தகைய பணி செயலியை விடுவிக்கும்
ஒதுக்கப்பட்ட சாளரத்திற்கு முன். அத்தகைய பணியின் முன்னுரிமையைக் குறைக்க நாங்கள் விரும்பவில்லை,
இதனால் அது அதே அளவில் இருக்கும்.
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

அத்தகைய செயல்முறைகளுடன் அல்காரிதம் எவ்வாறு செயல்படும் என்பதை இந்த எடுத்துக்காட்டு காட்டுகிறது - இன்டராக்டிவ் ஜாப் B, செயல்படுத்துவதற்கு முன் 1ms க்கு மட்டுமே CPU தேவைப்படும்.
I/O செயல்முறை மற்றும் நீண்டகாலமாக இயங்கும் Job A, இது CPU ஐப் பயன்படுத்தி தனது முழு நேரத்தையும் செலவிடுகிறது.
MLFQ செயல்முறை B ஐ அதிக முன்னுரிமையில் வைத்திருக்கிறது, ஏனெனில் அது தொடர்கிறது
CPU ஐ விடுவிக்கவும். பி ஒரு ஊடாடும் பணி என்றால், அல்காரிதம் அடைந்தது
ஊடாடும் பணிகளை விரைவாக இயக்குவதே உங்கள் குறிக்கோள்.

தற்போதைய MLFQ அல்காரிதத்தில் உள்ள சிக்கல்கள்

முந்தைய எடுத்துக்காட்டுகளில் MLFQ இன் அடிப்படைப் பதிப்பை உருவாக்கினோம். மேலும் அவர் என்று தெரிகிறது
அதன் பணியை சிறப்பாகவும் நேர்மையாகவும் செய்கிறது, CPU நேரத்தை இடையே சமமாக விநியோகிக்கிறது
நீண்ட பணிகள் மற்றும் குறுகிய அல்லது அதிக அளவிலான பணிகளை அனுமதிக்கிறது
I/O இல் விரைவாக வேலை செய்யுங்கள். துரதிர்ஷ்டவசமாக, இந்த அணுகுமுறை பலவற்றைக் கொண்டுள்ளது
தீவிர பிரச்சனைகள்.
முதலாவதாக, பசியின் பிரச்சனை: கணினியில் பல ஊடாடுதல் இருந்தால்
பணிகள், பின்னர் அவை அனைத்து செயலி நேரத்தையும் உட்கொள்கின்றன, இதனால் நீண்ட காலத்திற்கு ஒன்று கூட இருக்காது
பணியை நிறைவேற்ற முடியாது (அவர்கள் பட்டினி கிடக்கிறார்கள்).

இரண்டாவதாக, ஸ்மார்ட் பயனர்கள் தங்கள் நிரல்களை எழுதலாம்
திட்டமிடுபவரை முட்டாளாக்கு. வற்புறுத்துவதற்கு ஏதாவது செய்வதில் ஏமாற்றம் உள்ளது
திட்டமிடுபவர் செயல்முறைக்கு அதிக CPU நேரத்தை வழங்குகிறது. அல்காரிதம் என்று
மேலே விவரிக்கப்பட்ட இதே போன்ற தாக்குதல்களுக்கு மிகவும் பாதிக்கப்படக்கூடியது: நேர சாளரம் நடைமுறையில் உள்ளது
முடிந்தது, நீங்கள் I/O செயல்பாட்டைச் செய்ய வேண்டும் (சிலருக்கு, எந்தக் கோப்பாக இருந்தாலும்)
இதனால் CPU ஐ விடுவிக்கவும். இத்தகைய நடத்தை உங்களை அப்படியே இருக்க அனுமதிக்கும்
வரிசையே மீண்டும் CPU நேரத்தின் அதிக சதவீதத்தைப் பெறுகிறது. நீங்கள் செய்தால்
இது சரியானது (உதாரணமாக, CPU ஐ வெளியிடும் முன் 99% சாளர நேரத்தை இயக்கவும்),
அத்தகைய பணியானது செயலியை ஏகபோகமாக்குகிறது.

இறுதியாக, ஒரு நிரல் காலப்போக்கில் அதன் நடத்தையை மாற்ற முடியும். அந்த பணிகள்
CPU ஐப் பயன்படுத்தியது ஊடாடக்கூடியதாக மாறும். எங்கள் எடுத்துக்காட்டில், ஒத்த
மற்றவர்கள் பெறுவது போல, பணிகளுக்கு அவர்கள் தகுதியான சிகிச்சையை திட்டமிடுபவரிடம் இருந்து பெற மாட்டார்கள்
(ஆரம்ப) ஊடாடும் பணிகள்.

பார்வையாளர்களுக்கான கேள்வி: நவீன உலகில் திட்டமிடுபவர் மீது என்ன தாக்குதல்கள் நடத்தப்படலாம்?

முயற்சி 2: முன்னுரிமையை அதிகரிப்பது

விதிகளை மாற்ற முயற்சிப்போம் மற்றும் சிக்கல்களைத் தவிர்க்க முடியுமா என்று பார்ப்போம்
உண்ணாவிரதம். அதை உறுதி செய்ய நாம் என்ன செய்ய முடியும்
CPU பணிகள் அவற்றின் நேரத்தைப் பெறும் (நீண்டதாக இல்லாவிட்டாலும் கூட).
சிக்கலுக்கு எளிய தீர்வாக, நீங்கள் அவ்வப்போது பரிந்துரைக்கலாம்
கணினியில் இதுபோன்ற அனைத்து பணிகளின் முன்னுரிமையை உயர்த்தவும். பல வழிகள் உள்ளன
இதை அடைய, உதாரணத்திற்கு எளிமையான ஒன்றைச் செயல்படுத்த முயற்சிப்போம்: மொழிபெயர்க்கவும்
அனைத்து பணிகளும் உடனடியாக அதிக முன்னுரிமை அளிக்கப்படுகின்றன, எனவே புதிய விதி:

  • விதி 5: ஒரு குறிப்பிட்ட காலத்திற்குப் பிறகு S, கணினியில் உள்ள அனைத்து பணிகளையும் மிக உயர்ந்த வரிசையில் நகர்த்தவும்.

எங்கள் புதிய விதி ஒரே நேரத்தில் இரண்டு பிரச்சனைகளை தீர்க்கிறது. முதலில், செயல்முறைகள்
பட்டினி கிடக்காது என்று உத்தரவாதம் அளிக்கப்படுகிறது: அதிக முன்னுரிமையில் இருக்கும் பணிகள் பிரிக்கப்படும்
RR அல்காரிதம் படி CPU நேரம் இதனால் அனைத்து செயல்முறைகளும் பெறும்
CPU நேரம். இரண்டாவதாக, முன்பு பயன்படுத்தப்பட்ட சில செயல்முறைகள்
செயலி மட்டுமே ஊடாடக்கூடியதாக மாறும், அது மிக உயர்ந்த வரிசையில் இருக்கும்
முன்னுரிமையில் ஒரு முறை அதிக பட்ச முன்னுரிமையை பெற்ற பிறகு முன்னுரிமை.
ஒரு உதாரணத்தைப் பார்ப்போம். இந்த சூழ்நிலையில், ஒரு செயல்முறையைப் பயன்படுத்துவதைக் கவனியுங்கள்
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

CPU மற்றும் இரண்டு ஊடாடும், குறுகிய செயல்முறைகள். படத்தில் இடதுபுறத்தில், முன்னுரிமை பதவி உயர்வு இல்லாத நடத்தையை படம் காட்டுகிறது, இதனால் கணினியில் இரண்டு ஊடாடும் பணிகள் வந்த பிறகு நீண்ட காலமாக இயங்கும் பணி பட்டினியாகத் தொடங்குகிறது. வலதுபுறத்தில் உள்ள படத்தில், ஒவ்வொரு 50msக்கும் முன்னுரிமை அதிகரிப்பு செய்யப்படுகிறது, இதனால் அனைத்து செயல்முறைகளும் CPU நேரத்தைப் பெறுவதற்கு உத்தரவாதம் அளிக்கப்பட்டு அவ்வப்போது தொடங்கப்படும். இந்த வழக்கில் 50ms ஒரு உதாரணமாக எடுத்துக் கொள்ளப்படுகிறது; உண்மையில் இந்த எண்ணிக்கை சற்று அதிகமாக உள்ளது.
வெளிப்படையாக, குறிப்பிட்ட கால அதிகரிப்பு நேரத்தைச் சேர்ப்பது S வழிவகுக்கிறது
ஒரு தர்க்கரீதியான கேள்வி: என்ன மதிப்பை அமைக்க வேண்டும்? மரியாதைக்குரியவர்களில் ஒருவர்
சிஸ்டம்ஸ் இன்ஜினியர்களான ஜான் ஓஸ்டர்ஹவுட் அமைப்புகளில் உள்ள அளவுகளை வூ-டூ என அழைத்தார்
நிலையானது, ஏனென்றால் அவர்களுக்கு ஏதோ ஒரு வகையில் சூனியம் தேவைப்பட்டது
காட்சிப்படுத்துகிறது. மற்றும், துரதிருஷ்டவசமாக, எஸ் அத்தகைய வாசனை உள்ளது. நீங்கள் மதிப்பையும் அமைத்தால்
பெரிய - நீண்ட பணிகள் பட்டினி கிடக்க ஆரம்பிக்கும். நீங்கள் மதிப்பை மிகக் குறைவாக அமைத்தால்,
ஊடாடும் பணிகள் சரியான CPU நேரத்தைப் பெறாது.

முயற்சி 3: சிறந்த கணக்கியல்

இப்போது நாம் தீர்க்க மற்றொரு சிக்கல் உள்ளது: எப்படி இல்லை
எங்கள் திட்டமிடுபவரை முட்டாளாக்க அனுமதிக்கவா? இந்த சாத்தியக்கூறுகளுக்கு மக்கள்தான் காரணம்
விதிகள் 4a, 4b, இது ஒரு வேலையை முன்னுரிமையைத் தக்கவைக்க அனுமதிக்கிறது, செயலியை விடுவிக்கிறது
ஒதுக்கப்பட்ட நேரம் முடிவடையும் முன். இதை எப்படி சமாளிப்பது?
இந்த வழக்கில் தீர்வு ஒவ்வொரு CPU நேரத்தின் சிறந்த கணக்கியலாக கருதப்படுகிறது
MLFQ நிலை. நிரல் பயன்படுத்திய நேரத்தை மறந்துவிடுவதற்குப் பதிலாக
ஒதுக்கப்பட்ட காலத்திற்கு செயலி, அதை கணக்கில் எடுத்து சேமிக்க வேண்டும். பிறகு
செயல்முறை அதன் ஒதுக்கப்பட்ட நேரத்தை பயன்படுத்திவிட்டது, அது அடுத்ததாக குறைக்கப்பட வேண்டும்
முன்னுரிமை நிலை. செயல்முறை அதன் நேரத்தை எவ்வாறு பயன்படுத்தும் என்பது இப்போது முக்கியமல்ல
செயலியில் அல்லது பல அழைப்புகளாக தொடர்ந்து கணக்கிடுகிறது. இதனால்,
விதி 4 பின்வரும் படிவத்தில் மீண்டும் எழுதப்பட வேண்டும்:

  • விதி 4: ஒரு பணியானது தற்போதைய வரிசையில் ஒதுக்கப்பட்ட நேரத்தைப் பயன்படுத்திய பிறகு (அது CPU-ஐ எத்தனை முறை விடுவித்தாலும்), அந்த பணியின் முன்னுரிமை குறைக்கப்படும் (அது வரிசையில் கீழே நகர்கிறது).

ஒரு உதாரணத்தைப் பார்ப்போம்:
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)»

நீங்கள் திட்டமிடுபவரை முட்டாளாக்க முயற்சித்தால் என்ன நடக்கும் என்பதை படம் காட்டுகிறது
முந்தைய விதிகள் 4a, 4b உடன் இருந்தால், இடதுபுறத்தில் முடிவு பெறப்படும். மகிழ்சி புதிது
விதி என்பது வலதுபுறத்தில் உள்ள விளைவு. பாதுகாப்பிற்கு முன், எந்தவொரு செயல்முறையும் முடிவதற்கு முன் I/O ஐ அழைக்கலாம் மற்றும்
நடத்தையைப் பொருட்படுத்தாமல் பாதுகாப்பை இயக்கிய பிறகு, CPU இல் ஆதிக்கம் செலுத்துகிறது
I/O, அவர் இன்னும் வரிசையில் கீழே நகர்வார், இதனால் நேர்மையற்ற முறையில் செய்ய முடியாது
CPU வளங்களை எடுத்துக் கொள்ளுங்கள்.

MLFQ மற்றும் பிற சிக்கல்களை மேம்படுத்துதல்

மேலே உள்ள மேம்பாடுகளுடன் புதிய சிக்கல்கள் வருகின்றன: முக்கிய ஒன்று
கேள்விகள் - அத்தகைய திட்டமிடலை எவ்வாறு அளவுருவாக்குவது? அந்த. எவ்வளவு இருக்க வேண்டும்
வரிசைகள்? வரிசையில் உள்ள நிரல் சாளரத்தின் அளவு என்னவாக இருக்க வேண்டும்? எப்படி
பட்டினி மற்றும் பட்டினியைத் தவிர்க்க நிரல் முன்னுரிமையை அடிக்கடி அதிகரிக்க வேண்டும்
நிரல் நடத்தை மாற்றத்தை கணக்கில் எடுத்துக்கொள்கிறீர்களா? இந்தக் கேள்விகளுக்கு எளிய பதில் இல்லை
பதில் மற்றும் சுமைகள் மற்றும் அடுத்தடுத்த உள்ளமைவுகளுடன் மட்டுமே சோதனைகள்
திட்டமிடுபவர் சில திருப்திகரமான சமநிலைக்கு வழிவகுக்கும்.

எடுத்துக்காட்டாக, பெரும்பாலான MLFQ செயலாக்கங்கள் வெவ்வேறு ஒதுக்க உங்களை அனுமதிக்கின்றன
வெவ்வேறு வரிசைகளுக்கான நேர இடைவெளிகள். பொதுவாக அதிக முன்னுரிமை வரிசைகள்
குறுகிய இடைவெளிகள் பரிந்துரைக்கப்படுகின்றன. இந்த வரிசைகள் ஊடாடும் பணிகளைக் கொண்டிருக்கும்,
இடையில் மாறுவது மிகவும் உணர்திறன் மற்றும் 10 அல்லது அதற்கும் குறைவாக எடுக்க வேண்டும்
செல்வி. இதற்கு நேர்மாறாக, குறைந்த முன்னுரிமை வரிசைகள் நீண்ட காலப் பணிகளைப் பயன்படுத்தும்
CPU. இந்த விஷயத்தில், நீண்ட கால இடைவெளிகள் நன்றாக பொருந்துகின்றன (100ms).
இயக்க முறைமைகள்: மூன்று எளிதான துண்டுகள். பகுதி 5: திட்டமிடல்: பல நிலை கருத்து வரிசை (மொழிபெயர்ப்பு)

இந்த எடுத்துக்காட்டில், அதிக முன்னுரிமை வரிசை 2 இல் வேலை செய்யும் 20 பணிகள் உள்ளன
ms, 10ms சாளரங்களாக பிரிக்கப்பட்டுள்ளது. நடுத்தர வரிசையில் (40ms சாளரம்) மற்றும் குறைந்த முன்னுரிமையில் 20ms
வரிசை நேர சாளரம் 40ms ஆனது, அங்கு பணிகள் தங்கள் வேலையை முடித்தன.

MLFQ இன் சோலாரிஸ் OS செயல்படுத்தல் என்பது நேர-பகிர்வு திட்டமிடுபவர்களின் வகுப்பாகும்.
திட்டமிடுபவர் சரியாக வரையறுக்கும் அட்டவணைகளின் தொகுப்பை வழங்குவார்
செயல்முறையின் முன்னுரிமை அதன் வாழ்நாளில் மாறுகிறது, அளவு என்னவாக இருக்க வேண்டும்
ஒதுக்கப்பட்ட சாளரம் மற்றும் பணி முன்னுரிமைகளை நீங்கள் எவ்வளவு அடிக்கடி உயர்த்த வேண்டும். நிர்வாகி
அமைப்புகள் இந்த அட்டவணையுடன் தொடர்பு கொள்ளலாம் மற்றும் திட்டமிடுபவரை செயல்பட வைக்கலாம்
வித்தியாசமாக. இயல்பாக, இந்த அட்டவணையில் படிப்படியான அதிகரிப்புடன் 60 வரிசைகள் உள்ளன
சாளர அளவு 20ms (அதிக முன்னுரிமை) முதல் பல நூறு ms வரை (குறைந்த முன்னுரிமை), மற்றும்
வினாடிக்கு ஒரு முறை அனைத்து பணிகளின் ஊக்கத்துடன்.

மற்ற MLFQ திட்டமிடுபவர்கள் அட்டவணையையோ அல்லது குறிப்பிட்டவற்றையோ பயன்படுத்துவதில்லை
இந்த விரிவுரையில் விவரிக்கப்பட்டுள்ள விதிகள், மாறாக, அவர்கள் பயன்படுத்தி முன்னுரிமைகளை கணக்கிடுகின்றனர்
கணித சூத்திரங்கள். எடுத்துக்காட்டாக, FreeBSD திட்டமிடுபவர் ஒரு சூத்திரத்தைப் பயன்படுத்துகிறார்
செயல்முறை எவ்வளவு காலம் உள்ளது என்பதன் அடிப்படையில் ஒரு பணியின் தற்போதைய முன்னுரிமையைக் கணக்கிடுங்கள்
CPU பயன்படுத்தப்பட்டது. கூடுதலாக, CPU பயன்பாடு காலப்போக்கில் சிதைகிறது, மேலும்
எனவே, முன்னுரிமை அதிகரிப்பு மேலே விவரிக்கப்பட்டதை விட சற்றே வித்தியாசமாக நிகழ்கிறது. இது உண்மைதான்
சிதைவு அல்காரிதம்கள் எனப்படும். பதிப்பு 7.1 முதல், FreeBSD ULE திட்டமிடலைப் பயன்படுத்துகிறது.

இறுதியாக, பல திட்டமிடுபவர்கள் மற்ற அம்சங்களைக் கொண்டுள்ளனர். உதாரணமாக, சில
திட்டமிடுபவர்கள் இயக்க முறைமையின் செயல்பாட்டிற்கான மிக உயர்ந்த நிலைகளை ஒதுக்குகின்றனர்
எனவே, எந்தவொரு பயனர் செயல்முறையும் அதிக முன்னுரிமையைப் பெற முடியாது
அமைப்பு. சில அமைப்புகள் உங்களுக்கு உதவ ஆலோசனை வழங்க அனுமதிக்கின்றன
திட்டமிடுபவர் முன்னுரிமைகளை சரியாக அமைக்க முடியும். எடுத்துக்காட்டாக, கட்டளையைப் பயன்படுத்துதல் நல்ல
நீங்கள் ஒரு பணியின் முன்னுரிமையை அதிகரிக்கலாம் அல்லது குறைக்கலாம், இதனால் அதிகரிக்கலாம் அல்லது
CPU நேரத்தைப் பயன்படுத்துவதற்கான நிரலின் வாய்ப்புகளைக் குறைக்கிறது.

MLFQ: சுருக்கம்

MLFQ எனப்படும் திட்டமிடல் அணுகுமுறையை நாங்கள் விவரித்துள்ளோம். அவன் பெயர்
செயல்பாட்டுக் கொள்கையில் இணைக்கப்பட்டுள்ளது - இது பல வரிசைகளைக் கொண்டுள்ளது மற்றும் கருத்துக்களைப் பயன்படுத்துகிறது
பணி முன்னுரிமையை தீர்மானிக்க.
விதிகளின் இறுதி வடிவம் பின்வருமாறு இருக்கும்:

  • விதி 1: முன்னுரிமை(A) > முன்னுரிமை(B), பணி A தொடங்கப்படும் (B இல்லை)
  • விதி 2: முன்னுரிமை(A) = முன்னுரிமை(B), A&B RRஐப் பயன்படுத்தி தொடங்கப்பட்டால்
  • விதி 3: ஒரு பணி கணினியில் நுழையும் போது, ​​அது அதிக முன்னுரிமை வரிசையில் வைக்கப்படும்.
  • விதி 4: ஒரு பணியானது தற்போதைய வரிசையில் ஒதுக்கப்பட்ட நேரத்தைப் பயன்படுத்திய பிறகு (அது CPU-ஐ எத்தனை முறை விடுவித்தாலும்), அந்த பணியின் முன்னுரிமை குறைக்கப்படும் (அது வரிசையில் கீழே நகர்கிறது).
  • விதி 5: ஒரு குறிப்பிட்ட காலத்திற்குப் பிறகு S, கணினியில் உள்ள அனைத்து பணிகளையும் மிக உயர்ந்த வரிசையில் நகர்த்தவும்.

MLFQ பின்வரும் காரணத்திற்காக சுவாரஸ்யமானது - அதற்கு பதிலாக அறிவு தேவை
பணியின் தன்மையை முன்கூட்டியே, அல்காரிதம் பணியின் கடந்தகால நடத்தை மற்றும் தொகுப்புகளை ஆய்வு செய்கிறது
அதன்படி முன்னுரிமைகள். இவ்வாறு, அவர் ஒரே நேரத்தில் இரண்டு நாற்காலிகளில் உட்கார முயற்சிக்கிறார் - சிறிய பணிகளுக்கான உற்பத்தித்திறனை அடைய (SJF, STCF) மற்றும் நேர்மையாக நீண்ட நேரம் ஓட,
CPU-ஏற்றுதல் வேலைகள். எனவே, BSD மற்றும் அவற்றின் வழித்தோன்றல்கள் உட்பட பல அமைப்புகள்,
சோலாரிஸ், விண்டோஸ், மேக் சில வகையான அல்காரிதத்தை திட்டமிடலாகப் பயன்படுத்துகின்றன
ஒரு அடிப்படையாக MLFQ.

கூடுதல் பொருட்கள்:

  1. manpages.debian.org/stretch/manpages/sched.7.en.html
  2. en.wikipedia.org/wiki/Scheduling_(கணினி)
  3. pages.lip6.fr/Julia.Lawall/atc18-bouron.pdf
  4. www.usenix.org/legacy/event/bsdcon03/tech/full_papers/roberson/roberson.pdf
  5. chebykin.org/freebsd-process-scheduling

ஆதாரம்: www.habr.com

கருத்தைச் சேர்