सिस्टम कॉल, प्रक्रियाएँ, थ्रेड व CPU नियोजन

कंप्यूटर विज्ञान पेपर का खंड 8, और खंड 2 से 7 की भाँति इसके लिए किसी अन्य सत्यापित पेपर का पाठ्यक्रम नहीं पढ़ा गया। प्रचालन तंत्र को एक प्रश्न के उत्तर के रूप में समझना सर्वोत्तम है: किसी प्रोग्राम पर हार्डवेयर का भरोसा नहीं किया जा सकता, अतः जब उसे हार्डवेयर चाहिए तो वह क्या करता है? वह माँगता है। सिस्टम कॉल वही निवेदन है — उपयोक्ता मोड से कर्नेल मोड में एकमात्र नियंत्रित द्वार — और यही वह वस्तु है जिसे पाठ्यक्रम-संशोधन ने जोड़ा, अतः उसे ठीक-ठीक जानना उपयोगी है: सिस्टम कॉल फलन-कॉल नहीं, मोड-परिवर्तन है, और इसीलिए उसकी लागत परिमाण-क्रम में अधिक है। उस द्वार के ऊपर दो अमूर्तन बैठते हैं जिनका भेद प्रश्न कभी नहीं छोड़ते। प्रक्रिया प्रोग्राम तथा उसका अपना पता-स्थान है; थ्रेड एक पता-स्थान के भीतर नियंत्रण का प्रवाह है। उसी एक भेद से प्रत्येक परीक्षणीय बात निकलती है — क्या साझा है, क्या निजी, fork की लागत क्या, और अवरोधक कॉल उपयोक्ता-स्तरीय थ्रेड हेतु कर्नेल-स्तरीय से भिन्न व्यवहार क्यों करती है। तत्पश्चात् नियोजन, जहाँ अंकगणित रहता है। चार कलनविधियाँ, प्रश्न का एक आकार: आगमन व स्फोट समय दिए, औसत प्रतीक्षा समय निकालें। उसमें से निकलने का विश्वसनीय मार्ग गैंट चार्ट बनाकर संख्याएँ पढ़ लेना है, क्योंकि प्रतीक्षा समय = परिवर्तन समय − स्फोट समय एक तत्समक है जिसे समापन समय ज्ञात होने पर यांत्रिक रूप से लगाया जा सकता है। और किसी गणना से पूर्व एक तथ्य साथ ले जाने योग्य है: लघुतम-शेष-समय-प्रथम औसत प्रतीक्षा समय न्यूनतम करती है, सिद्ध रूप से, अतः यदि कोई विकल्प दावा करे कि उसी निवेश पर कोई अन्य कलनविधि उससे आगे निकली, तो अंकगणित कहीं गलत है।

द्वार: सिस्टम कॉल की वास्तविक लागत

उपयोक्ता कोड उपयोक्ता मोड में चलता है, जहाँ विशेषाधिकृत अनुदेश — किसी युक्ति से बात करना, पृष्ठ-सारणी बदलना, संसाधक रोकना — सरलतः अनुपलब्ध हैं। सिस्टम कॉल पार जाने का एकमात्र वैध मार्ग है: प्रोग्राम कॉल-संख्या व उसके तर्क वहाँ रखता है जहाँ परिपाटी कहती है, एक ट्रैप अनुदेश निष्पादित करता है, और हार्डवेयर कर्नेल मोड में बदलकर एक नियत हैंडलर पर कूद जाता है। तब कर्नेल प्रत्येक तर्क सत्यापित करता है, क्योंकि बुलाने वाले पर भरोसा नहीं, कार्य करता है, और लौटता है। open, read, write, fork, exec, wait व exit को सिस्टम कॉल पढ़ें; printf को पुस्तकालय फलन पढ़ें जो अंततः एक सिस्टम कॉल करता है। वह भेद सीधे परीक्षित होता है, और उसका महत्व लागत है: साधारण फलन-कॉल एक कूद है, जबकि सिस्टम कॉल दूसरी ओर तर्क-सत्यापन सहित मोड-परिवर्तन है।

🧠 fork की शृंखला से बनने वाली प्रक्रियाएँ गिनना
fork() दो बार लौटता है: संतान को 0 मिलता है और जनक को संतान का PID, और वही एक असममिति fork के पश्चात् आने वाले कोड का सम्पूर्ण आधार है। गिनती का प्रश्न उसी से निकलता है। लगातार n अशर्त fork के पश्चात् प्रत्येक विद्यमान प्रक्रिया प्रत्येक चरण पर fork करती है, अतः जनसंख्या हर बार दुगुनी होती है: कुल 2n प्रक्रियाएँ विद्यमान होती हैं और उनमें 2n − 1 नई। अतः तीन fork 8 प्रक्रियाएँ व 7 संतानें देते हैं — 3 नहीं, और 4 नहीं। जाल if (fork() == 0) के भीतर का fork है, जहाँ केवल एक शाखा fork करती रहती है, और तब दुगुना होना रुक जाता है और वृक्ष बनाना पड़ता है। बनाइए; दुगुना करने का सूत्र केवल तब वैध है जब fork अशर्त हों।
ℹ️ प्रक्रिया की पाँच अवस्थाएँ, तथा वह एक संक्रमण जो प्रक्रिया का चयन नहीं
नई, तैयार, चालू, अवरुद्ध (प्रतीक्षारत) व समाप्त। प्रति CPU केवल एक प्रक्रिया चालू है; तैयार का अर्थ चलने योग्य पर चयनित नहीं; अवरुद्ध का अर्थ चलने योग्य नहीं, I/O या किसी घटना की प्रतीक्षा में। तीन संक्रमण प्रक्रिया के स्वयं के हैं — नियोजक द्वारा चुने जाने पर तैयार → चालू, कुछ माँगने पर चालू → अवरुद्ध, वह कुछ आने पर अवरुद्ध → तैयार। चौथा नहीं है: चालू → तैयार पूर्वाधिकरण है, जो टाइमर व्यवधान पर नियोजक द्वारा प्रक्रिया के साथ किया जाता है, और वही संक्रमण पूर्वाधिकारी कलनविधि को अपूर्वाधिकारी से अलग करता है। ध्यान दें सूची में क्या अनुपस्थित है: अवरुद्ध → चालू विद्यमान नहीं। प्रतीक्षा समाप्त करने वाली प्रक्रिया तैयार पंक्ति में जाती है और सबकी भाँति अपनी बारी की प्रतीक्षा करती है, और इसके विपरीत दावा करते विकल्प मानक भ्रामक हैं।

थ्रेड: एक पता-स्थान, कई प्रवाह

एक प्रक्रिया के थ्रेड क्या साझा करते हैं, और प्रत्येक अपने पास क्या रखता है
संसाधनसाझा या निजी?वह ऐसा क्यों होना ही है
कोड (टेक्स्ट) खंडसाझाएक प्रोग्राम; थ्रेड उन्हीं अनुदेशों के भिन्न भाग चलाते हैं
वैश्विक व हीप आँकड़ेसाझायही कारण है कि थ्रेड से संचार सस्ता है — और यही कि उन्हें ताले चाहिए
खुली फ़ाइलें, संकेत हैंडलरसाझावे प्रक्रिया-स्तरीय संसाधन हैं, प्रति-प्रवाह नहीं
स्टैकनिजीप्रत्येक प्रवाह की अपनी कॉल-शृंखला व अपने स्थानीय चर हैं
रजिस्टर, प्रोग्राम काउंटरनिजीप्रत्येक प्रवाह भिन्न अनुदेश पर है — वही उसे प्रवाह बनाता है
⚠️ अवरुद्ध होता उपयोक्ता-स्तरीय थ्रेड सबको अवरुद्ध कर देता है
उपयोक्ता-स्तरीय व कर्नेल-स्तरीय थ्रेड में परीक्षणीय भेद गति नहीं, यह है कि कर्नेल क्या देख सकता है। उपयोक्ता-स्तरीय थ्रेड प्रक्रिया के भीतर एक पुस्तकालय द्वारा नियोजित होते हैं, अतः कर्नेल एक नियोजनीय इकाई देखता है। दो परिणाम निकलते हैं, और वे विपरीत चिह्न के हैं। उनके बीच परिवर्तन अत्यंत सस्ता है — कोई मोड-परिवर्तन नहीं, उपयोक्ता स्थान में केवल रजिस्टर-विनिमय। किंतु जब उनमें कोई अवरोधक सिस्टम कॉल करता है, तो कर्नेल उस एकमात्र वस्तु को अवरुद्ध करता है जिसे वह जानता है, अर्थात् सम्पूर्ण प्रक्रिया, अतः प्रत्येक अन्य थ्रेड रुक जाता है यद्यपि वे पूर्णतः चलने योग्य थे। कर्नेल-स्तरीय थ्रेड प्रत्येक दृश्य व पृथक् नियोजनीय हैं, अतः अवरोध केवल बुलाने वाले को प्रभावित करता है और बहुसंसाधक कई को एक साथ चला सकता है, प्रति परिवर्तन एक मोड-परिवर्तन की लागत पर। उपयोक्ता-स्तरीय थ्रेड कई CPU का लाभ नहीं उठा सकते उसी कारण से: एक नियोजनीय इकाई को एक CPU मिलता है।

चार कलनविधियाँ, एक प्रक्रिया-समुच्चय, गणना सहित

नीचे की तुलना एक प्रक्रिया-समुच्चय को चारों कलनविधियों से चलाती है, क्योंकि चार पृथक् उदाहरण क्रम के विषय में कुछ नहीं सिखाते। लें P1(आगमन 0, स्फोट 8), P2(1, 4), P3(2, 9), P4(3, 5)। गैंट चार्ट बनाएँ, प्रत्येक समापन समय पढ़ें, फिर दो तत्समक लगाएँ: परिवर्तन = समापन − आगमन तथा प्रतीक्षा = परिवर्तन − स्फोट। यहाँ कुछ भी स्मरण रखने योग्य नहीं — चलाने योग्य है, और उसी क्रम में, क्योंकि प्रतीक्षा समय पर सीधे तर्क करने का प्रयास ही वहाँ है जहाँ अंकगणित बिगड़ता है।

P1(0,8) P2(1,4) P3(2,9) P4(3,5) — प्रत्येक कलनविधि में औसत प्रतीक्षा समय
कलनविधिसमापन समयऔसत प्रतीक्षाऔसत परिवर्तन
SRTF (पूर्वाधिकारी SJF)17, 5, 26, 106.513
SJF, अपूर्वाधिकारी8, 12, 26, 177.7514.25
FCFS8, 12, 21, 268.7515.25
राउंड रॉबिन, क्वांटम 420, 8, 26, 2511.7518.25
🎯 SRTF क्यों जीतती है, और राउंड रॉबिन अपने 11.75 से क्या खरीद रही है
क्रम 6.5 < 7.75 < 8.75 < 11.75 इस निवेश का संयोग नहीं है। SRTF औसत प्रतीक्षा समय हेतु सिद्ध रूप से इष्टतम है: न्यूनतम शेष कार्य वाला काम पहले चलाने का अर्थ है कि आप जो भी समय-इकाई व्यय करते हैं वही इकाई है जो कुछ शीघ्रतम समाप्त करती है, और किसी दीर्घतर काम की ओर कोई भी विनिमय कुल बढ़ाता है। अपूर्वाधिकारी SJF वही विचार बँधे हाथों सहित है — वह समय 1 पर लघुतर P2 के आने पर P1 को बाधित नहीं कर सकती, अतः 1.25 खोती है। FCFS अधिक खोती है, और कारण का नाम है: कारवाँ प्रभाव, जहाँ शीर्ष पर एक दीर्घ काम अपने पीछे के प्रत्येक लघु काम को अपनी पूरी लंबाई प्रतीक्षा कराता है। और राउंड रॉबिन इस मापक पर निकृष्टतम है जबकि वही है जिसे आप वस्तुतः तैनात करेंगे, और वही वास्तविक पाठ है: वह औसत प्रतीक्षा समय अनुकूलित ही नहीं कर रही, वह प्रत्युत्तर समय अनुकूलित कर रही है — किसी काम के प्रथम बार चलने से पूर्व की प्रतीक्षा, जिसे राउंड रॉबिन (n−1)q पर परिबद्ध करती है जबकि SJF उसे अपरिबद्ध छोड़ती है। FCFS में 9-इकाई बैच काम के पीछे कोई लघु सहभागी काम कुछ भी कहने हेतु 9 इकाई प्रतीक्षा करता है। राउंड रॉबिन में वह अधिकतम 12 प्रतीक्षा करता है और फिर प्रत्येक चक्र चलता है। नियोजक चुनने का अर्थ है यह चुनना कि आप किस संख्या को बड़ी होने देने से इनकार करते हैं।
⚠️ राउंड रॉबिन के क्वांटम के दो अपभ्रष्ट सिरे हैं
दोनों सीमाएँ पूछी जाती हैं, और दोनों स्मरण के बजाय निष्पादित करने योग्य हैं। जैसे क्वांटम दीर्घतम स्फोट से बड़ा होता है, किसी का पूर्वाधिकरण कभी नहीं होता और राउंड रॉबिन FCFS बन जाती है। जैसे क्वांटम शून्य की ओर घटता है, परिवर्तन-लागत प्रभावी हो जाती है: क्वांटम q व संदर्भ-परिवर्तन लागत s सहित, उपयोगी कार्य करते CPU का अंश q/(q+s) है, अतः अत्यल्प क्वांटम संसाधक का लगभग सम्पूर्ण परिवर्तन पर व्यय करता है — वह व्यवहार जिसे कभी संसाधक-साझन कहा जाता है, और व्यवहार में नियोजक का मंथन। इसीलिए प्रश्न “कौन-सा क्वांटम औसत प्रतीक्षा समय न्यूनतम करता है?” का अनुपयोगी ईमानदार उत्तर सर्वाधिक बड़ा है, और इसीलिए वास्तविक तंत्र क्वांटम किसी प्रत्युत्तर-समय लक्ष्य से चुनते हैं।

दूसरा आधा: डिस्क का नियोजन

पाठ्यक्रम की वस्तु CPU व I/O नियोजन है, और दूसरा आधा उसी आकार की भिन्न समस्या है। डिस्क निवेदन की लागत अधिकांशतः अन्वेषण समय है, शीर्ष की यात्रा, अतः नियोजक प्रतीक्षा समय के बजाय कुल शीर्ष-गति न्यूनतम करता है — और मापक पार किए सिलिंडर हैं, जिन्हें आप निवेदन-क्रम से ठीक वैसे गिनते हैं जैसे गैंट चार्ट गिना था। एक उदाहरण, छहों कलनविधियों हेतु गणना सहित: शीर्ष सिलिंडर 53 पर, डिस्क 0 से 199, लंबित निवेदन 98, 183, 37, 122, 14, 124, 65, 67।

शीर्ष 53 पर, निवेदन 98 183 37 122 14 124 65 67 — कुल पार किए सिलिंडर
कलनविधिसेवा-क्रमगति
FCFS98, 183, 37, 122, 14, 124, 65, 67640
SSTF65, 67, 37, 14, 98, 122, 124, 183236 — यहाँ न्यूनतम
SCAN (199 तक, फिर उलट)65, 67, 98, 122, 124, 183, 199, 37, 14331
C-SCAN (199 तक, 0 पर कूद)65, 67, 98, 122, 124, 183, 199, 0, 14, 37382
LOOK (अंतिम निवेदन पर मुड़ना)65, 67, 98, 122, 124, 183, 37, 14299
C-LOOK65, 67, 98, 122, 124, 183, 14, 37322
🎯 SSTF 63% से जीतती है और तब भी डिस्क वही प्रयोग नहीं करती
SSTF, FCFS के 640 सिलिंडर घटाकर 236 करती है, 63% बचत, और उसे तब भी अस्वीकार करने का कारण वही है जिससे CPU हेतु SJF अस्वीकृत है: दूरी पर लोभी होने का अर्थ भुखमरी। वर्तमान शीर्ष-स्थिति के निकट निवेदनों की सतत धारा शीर्ष को उसी पड़ोस में अनिश्चित काल रोक सकती है जबकि सिलिंडर 183 का निवेदन अपरिबद्ध प्रतीक्षा करता रहे। SCAN उसे समंजन के बजाय संरचनात्मक रूप से सुधारती है: शीर्ष एक दिशा में बहता है, मार्ग में सब सेवित करते हुए, अतः किसी निवेदन की प्रतीक्षा एक पूर्ण बहाव से परिबद्ध है, वह कहीं भी हो। वही परिबंध अतिरिक्त 95 सिलिंडर खरीदते हैं। C-SCAN और आगे जाती है और कुछ भी सेवित किए बिना आरंभ पर लौटती है, जिसकी लागत यहाँ और अधिक (382) है, और वह कुछ विशिष्ट खरीदती है — सादी SCAN में मध्य के सिलिंडर प्रति आवागमन दो बार देखे जाते हैं और किनारे एक बार, अतः C-SCAN प्रतीक्षा को केवल परिबद्ध के बजाय डिस्क भर में एकरूप बना देती है। और LOOK व C-LOOK वही दो कलनविधियाँ एक परिष्कार सहित हैं: डिस्क के भौतिक सिरे के बजाय अंतिम वास्तविक निवेदन पर मुड़ना, और इसीलिए LOOK के 299, SCAN के 331 को समरूप सेवा-क्रम सहित हरा देते हैं। साथ ले जाने योग्य प्रतिरूप वही है जो CPU नियोजन से था: श्रेष्ठतम औसत वाली कलनविधि विरले ही तैनात होती है, क्योंकि परिबद्ध निकृष्टतम स्थिति मूल्य चुकाने योग्य है।

मुख्य बिंदु

  • सिस्टम कॉल मोड-परिवर्तन है, फलन-कॉल नहीं — उसकी लागत वहीं से आती है।
  • n अशर्त fork 2n प्रक्रियाएँ देते हैं; सशर्त fork दुगुना करना तोड़ता है, अतः वृक्ष बनाएँ।
  • थ्रेड कोड, वैश्विक चर, हीप व खुली फ़ाइलें साझा करते हैं; स्टैक, रजिस्टर व PC निजी रखते हैं।
  • उपयोक्ता-स्तरीय थ्रेड में अवरोधक कॉल सम्पूर्ण प्रक्रिया अवरुद्ध करती है, और ऐसी एक प्रक्रिया को एक CPU मिलता है।
  • पहले समापन समय निकालें, फिर परिवर्तन = समापन − आगमन, फिर प्रतीक्षा = परिवर्तन − स्फोट।
  • औसत प्रतीक्षा समय हेतु SRTF इष्टतम है; यदि कोई विकल्प उसी निवेश पर उससे आगे निकले, अंकगणित गलत है।
  • राउंड रॉबिन औसत प्रतीक्षा समय के बदले परिबद्ध प्रत्युत्तर समय लेती है; विशाल क्वांटम उसे FCFS बना देता है।
  • चालू → तैयार पूर्वाधिकरण है, और अवरुद्ध → चालू विद्यमान नहीं।
  • डिस्क नियोजन सिलिंडर गिनता है: मानक उदाहरण पर FCFS 640, SSTF 236, SCAN 331, LOOK 299।
  • SSTF दूरस्थ निवेदनों को भूखा रखती है, इसीलिए SCAN है — SJF बनाम राउंड रॉबिन वाला वही सौदा।

अभ्यास प्रश्न (9)

उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।

  1. कोई प्रोग्राम बिना किसी शर्त व बिना किसी प्रक्रिया के शीघ्र समाप्त होने fork(); fork(); fork(); निष्पादित करता है। अंतिम कथन पूर्ण होने पर कितनी प्रक्रियाएँ विद्यमान हैं?

    1. 4
    2. 7
    3. 8
    4. 6
    उत्तर देखें

    उत्तर: C — 8

    8। प्रत्येक प्रक्रिया जो किसी fork पर विद्यमान है उसे निष्पादित करती है, अतः जनसंख्या तीनों कॉल में से प्रत्येक पर दुगुनी होती है: 1 → 2 → 4 → 8। बनी संतानों की गिनती एक कम, 7 है, और विकल्प B वही संख्या उस प्रश्न हेतु देता है जो पूछा नहीं गया — पढ़ें कि प्रश्न “विद्यमान प्रक्रियाएँ” कहता है या “बनी संतान प्रक्रियाएँ”। विकल्प A प्रति कॉल एक संतान गिनता है, जो केवल तब सही होता यदि एकमात्र प्रक्रिया सारा fork करती और संतानें आगे कूद जातीं। दुगुना होना यहाँ ठीक इसलिए टिकता है कि fork अशर्त हैं; दूसरे को if (fork() == 0) के भीतर रखें और केवल संतानें आगे बढ़ती हैं, अतः वृक्ष बनाना पड़ता है।
  2. प्रक्रियाएँ P1, P2, P3, P4 क्रमशः 0, 1, 2, 3 समय पर आती हैं, CPU स्फोट क्रमशः 8, 4, 9, 5। लघुतम-शेष-समय-प्रथम (पूर्वाधिकारी) नियोजन में औसत प्रतीक्षा समय, समय-इकाइयों में, ______ है

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 6.5

    6.5। गैंट चार्ट बनाएँ। P1, 0–1 चलती है; P2, स्फोट 4 सहित P1 के शेष 7 के सामने आती है, अतः पूर्वाधिकरण करके 1–5 पूर्णता तक चलती है। t=5 पर शेष कार्य P1 7, P3 9, P4 5 है, अतः P4, 5–10 चलती है, फिर P1, 10–17, फिर P3, 17–26। समापन समय P1 17, P2 5, P3 26, P4 10 हैं। परिवर्तन = समापन − आगमन देता है 17, 4, 24, 7; प्रतीक्षा = परिवर्तन − स्फोट देता है 9, 0, 15, 2, जिनका योग 26, चार प्रक्रियाओं पर = 6.5। दो जाँचें करने योग्य हैं: P2 शून्य प्रतीक्षा करती है क्योंकि उसने आगमन पर तत्काल पूर्वाधिकरण किया, और उत्तर उसी निवेश पर FCFS (8.75) से अधिक नहीं होना चाहिए, क्योंकि इस मापक हेतु SRTF इष्टतम है। 7.75 मिलना अर्थात् t=1 का पूर्वाधिकरण छूटा — वह अपूर्वाधिकारी SJF है।
  3. दो थ्रेड एक ही प्रक्रिया के हैं। निम्नलिखित में से कौन उनके बीच साझा हैं?

    1. हीप
    2. खुले फ़ाइल विवरणकों की सारणी
    3. स्टैक
    4. वैश्विक चर
    उत्तर देखें

    उत्तर: A — हीप; B — खुले फ़ाइल विवरणकों की सारणी; D — वैश्विक चर

    A, B व D। थ्रेड पता-स्थान साझा करने हेतु विद्यमान हैं, अतः उस स्थान में रहने वाला और प्रति-प्रवाह न होने वाला सब कुछ साझा है: हीप, वैश्विक चर, तथा प्रक्रिया-स्तरीय संसाधन जैसे खुली-फ़ाइल सारणी व संकेत हैंडलर। C अपवाद है और थ्रेड का सम्पूर्ण अभिप्राय वही है: नियंत्रण का प्रत्येक प्रवाह भिन्न कॉल-शृंखला सहित भिन्न अनुदेश पर है, अतः प्रत्येक को अपना स्टैक चाहिए, अपने रजिस्टर व प्रोग्राम काउंटर सहित। वही असममिति थ्रेड को सस्ता व संकटपूर्ण दोनों बनाती है — सस्ता क्योंकि दो थ्रेड बिना कर्नेल के किसी हस्तक्षेप के वैश्विक चर से आँकड़े दे सकते हैं, संकटपूर्ण क्योंकि उसी वैश्विक चर को ताला चाहिए। एक उपयोगी प्रति-जाँच: जिसे अमूर्तन तोड़े बिना दोहराया नहीं जा सकता (स्टैक, PC, रजिस्टर) वह निजी है; शेष सब साझा।
  4. उन्हीं चार प्रक्रियाओं हेतु — आगमन 0, 1, 2, 3 व स्फोट 8, 4, 9, 5 — औसत प्रतीक्षा समय SRTF में 6.5, अपूर्वाधिकारी SJF में 7.75, FCFS में 8.75 तथा क्वांटम 4 सहित राउंड रॉबिन में 11.75 है। कौन-सा निष्कर्ष सही है?

    1. राउंड रॉबिन खराब नियोजक है और व्यवहार में प्रयोग नहीं होना चाहिए
    2. राउंड रॉबिन औसत प्रतीक्षा समय पर हारती है क्योंकि वह उसके स्थान पर परिबद्ध प्रत्युत्तर समय अनुकूलित कर रही है
    3. बड़ा क्वांटम राउंड रॉबिन को औसत प्रतीक्षा समय पर SRTF से आगे कर देगा
    4. यदि सभी स्फोट समान होते तो क्रम उलट जाता
    उत्तर देखें

    उत्तर: B — राउंड रॉबिन औसत प्रतीक्षा समय पर हारती है क्योंकि वह उसके स्थान पर परिबद्ध प्रत्युत्तर समय अनुकूलित कर रही है

    चारों संख्याएँ एक ही वस्तु मापती हैं, और राउंड रॉबिन उसे न्यूनतम करने का प्रयास ही नहीं कर रही। उसकी प्रत्याभूति प्रत्युत्तर समय पर है — n प्रक्रियाओं व क्वांटम q सहित, कोई काम प्रथम बार चलने से पूर्व लगभग (n−1)q से अधिक प्रतीक्षा नहीं करता — और सहभागी तंत्र उसी संख्या की चिंता करता है, तथा SJF-कुल के नियोजक उसे अपरिबद्ध छोड़ देते हैं। विकल्प A एकमात्र मापक से गलत पाठ निकालता है। विकल्प C जिस दिशा का दावा करता है उसमें असंभव है: औसत प्रतीक्षा समय हेतु SRTF सिद्ध रूप से इष्टतम है, अतः उसी निवेश पर कोई उससे आगे नहीं निकल सकता; बड़ा क्वांटम राउंड रॉबिन को केवल FCFS के 8.75 की ओर धकेलता है, जो अभी भी निकृष्ट है। विकल्प D उलटी दिशा में जाता है — समान स्फोट व समान आगमन-क्रम सहित FCFS, SJF व SRTF सब वही अनुसूची बनाती हैं, अतः क्रम उलटने के बजाय ढह जाता है।
  5. उपयोक्ता-स्तरीय थ्रेड प्रयोग करती किसी प्रक्रिया में एक थ्रेड अवरोधक read सिस्टम कॉल करता है। उस प्रक्रिया के अन्य थ्रेड का क्या होता है?

    1. वे चलते रहते हैं, क्योंकि केवल बुलाने वाला थ्रेड प्रतीक्षा में है
    2. वे सब अवरुद्ध हो जाते हैं, क्योंकि कर्नेल केवल एक नियोजनीय इकाई देखता है
    3. थ्रेड पुस्तकालय उन्हें किसी अन्य CPU पर स्थानांतरित कर देता है
    4. वे केवल तब चलते रहते हैं यदि प्रक्रिया के पास एक से अधिक कर्नेल थ्रेड हों
    उत्तर देखें

    उत्तर: B — वे सब अवरुद्ध हो जाते हैं, क्योंकि कर्नेल केवल एक नियोजनीय इकाई देखता है

    वे सब अवरुद्ध हो जाते हैं। उपयोक्ता-स्तरीय थ्रेड प्रक्रिया के भीतर एक पुस्तकालय द्वारा नियोजित होते हैं, अतः कर्नेल ठीक एक नियोजनीय इकाई के विषय में जानता है — प्रक्रिया — और अवरोध वह है जो कर्नेल अपनी ज्ञात इकाइयों के साथ करता है। अतः वह प्रक्रिया अवरुद्ध करता है, और प्रत्येक अन्य थ्रेड रुक जाता है यद्यपि प्रत्येक पूर्णतः चलने योग्य था। विकल्प A कर्नेल-स्तरीय थ्रेड का उत्तर है, जो व्यक्तिगत रूप से दृश्य व पृथक् नियोजनीय हैं, और वह वैषम्य ही परीक्षणीय विषय है। विकल्प C ऐसा कुछ वर्णित करता है जो उपयोक्ता-स्तरीय पुस्तकालय नहीं कर सकता: उसके पास एक CPU है क्योंकि उसके पास एक नियोजनीय इकाई है, और इसीलिए उपयोक्ता-स्तरीय थ्रेड बहुसंसाधक का लाभ नहीं उठा सकते। विकल्प D वास्तविक संकर अभिकल्प (अनेक-से-अनेक) है किंतु प्रश्न वह निर्दिष्ट नहीं करता, और “उपयोक्ता-स्तरीय” को “संकर” पढ़ लेना ही वह चूक है जिसकी परीक्षा हो रही है।
  6. कौन-सा प्रक्रिया-अवस्था संक्रमण प्रक्रिया द्वारा नहीं अपितु नियोजक द्वारा कराया जाता है?

    1. चालू → अवरुद्ध
    2. अवरुद्ध → तैयार
    3. चालू → तैयार
    4. चालू → समाप्त
    उत्तर देखें

    उत्तर: C — चालू → तैयार

    चालू → तैयार पूर्वाधिकरण है, और सूची में वही एकमात्र संक्रमण है जिसे प्रक्रिया घटित नहीं कराती। नियोजक उसे टाइमर व्यवधान पर करता है, ऐसी प्रक्रिया से CPU लेते हुए जो उसे प्रयोग करने को अभी भी इच्छुक थी — और ठीक वही किसी नियोजन कलनविधि को पूर्वाधिकारी बनाता है। शेष सब प्रक्रिया के स्वयं के कार्य हैं या उसका परिणाम: चालू → अवरुद्ध इसलिए होता है कि प्रक्रिया ने ऐसा कुछ माँगा जिसकी उसे प्रतीक्षा करनी है, चालू → समाप्त क्योंकि उसने exit बुलाया, और अवरुद्ध → तैयार जब प्रतीक्षित घटना आती है (I/O समापन हैंडलर उसे हिलाता है, पर प्रतीक्षा प्रक्रिया ने कराई)। एक संक्रमण सम्पूर्ण सूची से अनुपस्थित है और अन्यत्र सामान्य भ्रामक है: अवरुद्ध → चालू विद्यमान नहीं। प्रतीक्षा समाप्त करने वाली प्रक्रिया तैयार पंक्ति में सम्मिलित होती है और सबकी भाँति नियोजित होती है।
  7. प्रत्येक प्रक्रिया के CPU स्फोट से बड़े क्वांटम सहित राउंड रॉबिन नियोजन किसके समरूप व्यवहार करता है?

    1. लघुतम काम प्रथम
    2. प्रथम आगत प्रथम सेवित
    3. लघुतम शेष समय प्रथम
    4. वृद्धि सहित प्राथमिकता नियोजन
    उत्तर देखें

    उत्तर: B — प्रथम आगत प्रथम सेवित

    FCFS। राउंड रॉबिन किसी प्रक्रिया का पूर्वाधिकरण केवल उसका क्वांटम समाप्त होने पर करती है; यदि क्वांटम प्रत्येक स्फोट से बड़ा है, तो कोई क्वांटम कभी समाप्त नहीं होता, अतः प्रत्येक प्रक्रिया तैयार पंक्ति में प्रवेश के क्रम में पूर्णता तक चलती है — और वही FCFS की परिभाषा है। ध्यान दें उत्तर किस पर निर्भर नहीं है: राउंड रॉबिन के चयन में स्फोट-लंबाई की कोई भूमिका नहीं, और इसीलिए क्वांटम कैसे भी नियत हो वह SJF या SRTF (विकल्प A व C) में अपभ्रष्ट नहीं हो सकती। उन्हें स्फोट-लंबाई की सूचना चाहिए जिसे राउंड रॉबिन कभी नहीं देखती। विकल्प D ऐसा तंत्र जोड़ता है जो राउंड रॉबिन के पास नहीं। दूसरी सीमा इसके साथ रखने योग्य है: जैसे क्वांटम शून्य की ओर घटता है, संदर्भ-परिवर्तन लागत s हेतु CPU का उपयोगी अंश q/(q+s) है, अतः उपरिव्यय कार्य को डुबो देता है।
  8. उन्हीं चार प्रक्रियाओं पर (आगमन 0, 1, 2, 3; स्फोट 8, 4, 9, 5) FCFS औसत प्रतीक्षा समय 8.75 देती है जबकि अपूर्वाधिकारी SJF 7.75। 1.0 का अंतर किससे आता है?

    1. समय 1 पर P2 के आने पर SJF द्वारा P1 का पूर्वाधिकरण
    2. समय 12 पर SJF द्वारा P3 से पूर्व P4 चलाना, जो 9 इकाई प्रतीक्षा P4 से हटाकर P3 पर डालता है
    3. SJF द्वारा लघुतर क्वांटम का प्रयोग
    4. SJF की न्यूनतर संदर्भ-परिवर्तन लागत
    उत्तर देखें

    उत्तर: B — समय 12 पर SJF द्वारा P3 से पूर्व P4 चलाना, जो 9 इकाई प्रतीक्षा P4 से हटाकर P3 पर डालता है

    दोनों कलनविधियाँ P1 को 0–8 व P2 को 8–12 चलाती हैं, अतः वे t=12 तक सहमत हैं। वहाँ FCFS, P3 (जो 2 पर आई) लेती है और SJF लघुतर P4, और वही एक पुनर्क्रमण सम्पूर्ण अंतर है। प्रतीक्षा समय FCFS के 0, 7, 10, 18 से SJF के 0, 7, 15, 9 हो जाते हैं: P4, 9 बचाती है और P3, 5 खोती है, चार प्रक्रियाओं पर 4 की शुद्ध बचत = 1.0, जो ठीक वही अंतर है। विकल्प A, SRTF वर्णित करता है, अपूर्वाधिकारी SJF नहीं — वह पूर्वाधिकरण अतिरिक्त 1.25 का है और औसत को 6.5 पर ले जाता है, अतः उसे यहाँ जोड़ना दोहरी गिनती है। विकल्प C व D राउंड रॉबिन का क्वांटम तथा ऐसा लागत-प्रतिरूप ले आते हैं जिसे कोई भी कलनविधि प्रयोग नहीं करती; ऊपर के दोनों औसत शून्य परिवर्तन-लागत सहित निकाले गए हैं।
  9. किसी डिस्क में सिलिंडर 0 से 199 हैं और शीर्ष सिलिंडर 53 पर है। लंबित निवेदन, आगमन-क्रम में, 98, 183, 37, 122, 14, 124, 65, 67 हैं। SSTF डिस्क नियोजन में शीर्ष कुल कितने सिलिंडर पार करता है? ______

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 236

    236। SSTF सदा निकटतम लंबित निवेदन पर जाती है, अतः उसे अनुरेखित करें: 53 से निकटतम 65 है (12 सिलिंडर), फिर 67 (2), फिर निकटतम 98 के बजाय 37 है (30), फिर 14 (23), और अब ही शीर्ष डिस्क पार करके 98 (84), फिर 122 (24), 124 (2) व 183 (59) जाता है। जोड़ने पर: 12 + 2 + 30 + 23 + 84 + 24 + 2 + 59 = 236। उसी पंक्ति पर FCFS से तुलना करें, जो आगमन-क्रम में सेवा देती है और 640 पार करती है — SSTF 63% बचाती है, और वह एकमात्र महँगी चाल (14 से 98, 84 सिलिंडर) अपरिहार्य है क्योंकि पंक्ति में शीर्ष के दोनों ओर निवेदन हैं। सर्वाधिक सामान्य त्रुटि एक दिशा में बहना है, जो उसके स्थान पर SCAN के 331 या LOOK के 299 देती है: SSTF में दिशा की धारणा ही नहीं, और वह जब भी निकटतम निवेदन पीछे हो तब उलट जाती है।