पूर्वक्रय (कम्प्यूटिंग)

From Vigyanwiki

कम्प्यूटिंग में, पूर्वक्रय एक क्रियान्वित कार्य को अस्थायी रूप से बाधित करने का कार्य है, जिसे बाद में फिर से शुरू करने के उद्देश से किया जाता है। यह रुकावट एक बाहरी अनुसूचक द्वारा बिना किसी सहायता या कार्य के सहयोग के किया जाता है।[1]: 153  यह प्रीमेप्टिव शेड्यूलर आमतौर पर सबसे विशेषाधिकार प्राप्त सुरक्षा रिंग में चलता है, जिसका अर्थ है कि रुकावट और फिर से शुरू होना बेहद सुरक्षित क्रियाएं मानी जाती हैं। एक प्रोसेसर के वर्तमान में निष्पादित कार्य में इस तरह के परिवर्तन को संदर्भ स्विचिंग के रूप में जाना जाता है।

उपयोगकर्ता मोड और कर्नेल मोड

किसी भी दिए गए सिस्टम डिज़ाइन में, सिस्टम द्वारा किए गए कुछ ऑपरेशन प्रीपेटेबल नहीं हो सकते हैं। यह आमतौर पर कर्नेल फ़ंक्शंस और सर्विस इंटरप्ट्स पर लागू होता है, जिसे पूरा करने के लिए चलाने की अनुमति नहीं दी जाती है, जो डेडलॉक के परिणामस्वरूप दौड़ की स्थिति पैदा कर सकती है। अनुसूचक को कार्यों को पूर्वनिर्धारित करने से रोकते हुए जब वे कर्नेल कार्यों को संसाधित कर रहे हैं तो सिस्टम जवाबदेही की कीमत पर कर्नेल डिज़ाइन को सरल बनाता है। उपयोगकर्ता मोड और कर्नेल मोड के बीच अंतर, जो सिस्टम के भीतर विशेषाधिकार स्तर निर्धारित करता है, का उपयोग यह भेद करने के लिए भी किया जा सकता है कि क्या कोई कार्य वर्तमान में पूर्व-योग्य है।

अधिकांश आधुनिक ऑपरेटिंग सिस्टम में प्रीमेप्टिव कर्नेल होते हैं, जिन्हें कर्नेल मोड में होने पर भी कार्यों को प्रीमेप्ट करने के लिए डिज़ाइन किया गया है। ऐसे ऑपरेटिंग सिस्टम के उदाहरण हैं सोलारिस 2.0/सनओएस 5.0,[2] विंडोज एनटी, लिनक्स कर्नेल (2.5.4 और नए),[3] एआईएक्स और कुछ बीएसडी सिस्टम (नेटबीएसडी, संस्करण 5 से)।

प्रीमेप्टिव मल्टीटास्किंग

प्रीमेप्टिव मल्टीटास्किंग शब्द का उपयोग एक मल्टीटास्किंग ऑपरेटिंग सिस्टम को अलग करने के लिए किया जाता है, जो एक सहकारी मल्टीटास्किंग सिस्टम से कार्यों के प्रीमेशन की अनुमति देता है, जिसमें प्रक्रियाओं या कार्यों को स्पष्ट रूप से प्रोग्राम किया जाना चाहिए ताकि उन्हें सिस्टम संसाधनों की आवश्यकता न हो।

सरल शब्दों में: प्रीमेप्टिव मल्टीटास्किंग में एक इंटरप्ट मैकेनिज्म (व्यवधान तंत्र) का उपयोग शामिल होता है जो वर्तमान में निष्पादित प्रक्रिया को निलंबित कर देता है और यह निर्धारित करने के लिए शेड्यूलर को आमंत्रित करता है कि कौन सी प्रक्रिया को आगे निष्पादित किया जाना चाहिए। इसलिए, सभी प्रक्रियाओं को किसी भी समय सीपीयू समय की कुछ मात्रा प्राप्त होगी।

प्रीमेप्टिव मल्टीटास्किंग में, ऑपरेटिंग सिस्टम कर्नेल (ऑपरेटिंग सिस्टम) शेड्यूलिंग (कंप्यूटिंग) की प्राथमिकता बाधा को संतुष्ट करने के लिए एक संदर्भ स्विच भी आरंभ कर सकता है, इस प्रकार सक्रिय कार्य को प्राथमिकता देता है। सामान्य तौर पर, प्रीमेशन का मतलब पूर्व जब्ती है। जब उस उदाहरण पर उच्च-प्राथमिकता वाला कार्य वर्तमान में चल रहे कार्य को जब्त कर लेता है, तो इसे प्रीमेप्टिव शेड्यूलिंग के रूप में जाना जाता है।

प्रीमेप्टिव मल्टीटास्किंग शब्द का उपयोग कभी-कभी गलती से किया जाता है, जब इच्छित अर्थ अधिक विशिष्ट होता है, इसके बजाय शेड्यूलिंग नीतियों के वर्ग को 'टाइम-शेयर्ड शेड्यूलिंग' या 'टाइम-शेयरिंग' के रूप में जाना जाता है।

प्रीमेप्टिव मल्टीटास्किंग कंप्यूटर सिस्टम को ऑपरेटिंग समय के नियमित "स्लाइस" की प्रत्येक प्रक्रिया को अधिक विश्वसनीय रूप से गारंटी देने की अनुमति देता है। यह सिस्टम को आने वाले डेटा जैसी महत्वपूर्ण बाहरी घटनाओं से तेजी से निपटने की अनुमति देता है, जिसके लिए एक या किसी अन्य प्रक्रिया पर तत्काल ध्यान देने की आवश्यकता हो सकती है।

किसी भी विशिष्ट समय पर, प्रक्रियाओं को दो श्रेणियों में बांटा जा सकता है: वे जो इनपुट या आउटपुट की प्रतीक्षा कर रहे हैं ("आई/ओ बाउंड" कहा जाता है), और वे जो पूरी तरह से सीपीयू ("सीपीयू बाउंड") का उपयोग कर रहे हैं। प्रारंभिक प्रणालियों में, अनुरोधित इनपुट (जैसे डिस्क, कीबोर्ड या नेटवर्क इनपुट) की प्रतीक्षा करते समय प्रक्रियाएँ अक्सर "पोल" या "व्यस्त-प्रतीक्षा" होती हैं। इस समय के दौरान, प्रक्रिया उपयोगी कार्य नहीं कर रही थी, लेकिन फिर भी सीपीयू पर पूर्ण नियंत्रण बनाए रखा। इंटरप्टिव और प्रीमेप्टिव मल्टीटास्किंग के आगमन के साथ, इन I/O बाध्य प्रक्रियाओं को "अवरुद्ध" किया जा सकता है, या होल्ड पर रखा जा सकता है, आवश्यक डेटा के आगमन के लंबित होने पर, अन्य प्रक्रियाओं को सीपीयू का उपयोग करने की अनुमति देता है। जैसा कि अनुरोधित डेटा के आगमन में बाधा उत्पन्न होगी, अवरुद्ध प्रक्रियाओं को निष्पादन के लिए समय पर वापसी की गारंटी दी जा सकती है।

हालांकि मल्टीटास्किंग तकनीकों को मूल रूप से कई उपयोगकर्ताओं को एक मशीन साझा करने की अनुमति देने के लिए विकसित किया गया था, यह स्पष्ट हो गया कि उपयोगकर्ताओं की संख्या की परवाह किए बिना मल्टीटास्किंग उपयोगी थी। कई ऑपरेटिंग सिस्टम, मेनफ्रेम डाउन से लेकर सिंगल-यूज़र पर्सनल कंप्यूटर और नो-यूज़र कंट्रोल सिस्टम (जैसे रोबोटिक अंतरिक्ष यान में), ने कई कारणों से मल्टीटास्किंग सपोर्ट की उपयोगिता को पहचाना है। मल्टीटास्किंग एक ही उपयोगकर्ता के लिए एक ही समय में कई एप्लिकेशन चलाना संभव बनाता है, या कंप्यूटर पर नियंत्रण बनाए रखते हुए "पृष्ठभूमि" प्रक्रियाओं को चलाने के लिए संभव बनाता है।

समय का टुकड़ा

समय की अवधि जिसके लिए एक प्रीमेप्टिव मल्टीटास्किंग सिस्टम में एक प्रक्रिया को चलने की अनुमति दी जाती है, उसे आमतौर पर टाइम स्लाइस या क्वांटम कहा जाता है।[1]: 158  चलाने के लिए अगली प्रक्रिया को चुनने के लिए शेड्यूलर को हर बार स्लाइस में एक बार चलाया जाता है। प्रत्येक समय स्लाइस की लंबाई सिस्टम प्रदर्शन बनाम प्रक्रिया जवाबदेही को संतुलित करने के लिए महत्वपूर्ण हो सकती है - यदि समय का टुकड़ा बहुत छोटा है, तो अनुसूचक बहुत अधिक प्रसंस्करण समय का उपभोग करेगा, लेकिन यदि समय का टुकड़ा बहुत लंबा है, तो प्रक्रियाओं को प्रतिक्रिया देने में अधिक समय लगेगा इनपुट।

ऑपरेटिंग सिस्टम कर्नेल (ऑपरेटिंग सिस्टम) को प्रक्रियाओं के बीच स्विच करने की अनुमति देने के लिए एक व्यवधान निर्धारित किया जाता है जब उनका समय समाप्त हो जाता है, प्रभावी रूप से प्रोसेसर के समय को कई कार्यों के बीच साझा करने की अनुमति देता है, यह भ्रम देता है कि यह समानांतर में इन कार्यों से निपट रहा है। (इसके साथ ही)। इस तरह के डिजाइन को नियंत्रित करने वाले ऑपरेटिंग सिस्टम को मल्टी-टास्किंग सिस्टम कहा जाता है।

सिस्टम सपोर्ट

आज, लगभग सभी ऑपरेटिंग सिस्टम Microsoft Windows, macOS, Linux (Android (ऑपरेटिंग सिस्टम) सहित) और iOS के वर्तमान संस्करणों सहित प्रीमेप्टिव मल्टीटास्किंग का समर्थन करते हैं।

प्रीमेप्टिव मल्टीटास्किंग की विशेषता वाले घरेलू उपयोगकर्ताओं के लिए उपलब्ध कुछ शुरुआती ऑपरेटिंग सिस्टम सिंक्लेयर QDOS थे[citation needed] (1984[4]) और AmigaOS (1985)। ये दोनों मेमोरी प्रबंधन के बिना मोटोरोला 68000-फ़ैमिली माइक्रोप्रोसेसरों पर चलते थे। अमिगा ओएस ने एक ही फ्लैट एड्रेस स्पेस में सभी प्रक्रियाओं को प्रीमेप्टिवली मल्टीटास्क करने के लिए रिलोकेटेबल कोड ब्लॉक (दोस्त हंक अमिगा शब्दजाल में) की गतिशील लोडिंग का इस्तेमाल किया।

आरंभिक IBM PC संगत ऑपरेटिंग सिस्टम जैसे MS-DOS और IBM PC DOS, मल्टीटास्किंग का बिल्कुल भी समर्थन नहीं करते थे, हालाँकि वैकल्पिक ऑपरेटिंग सिस्टम जैसे MP/M-86 (1981) और समवर्ती CP/M-86 ने प्रीमेप्टिव मल्टीटास्किंग का समर्थन किया था। मिनिक्स और सुसंगत (ऑपरेटिंग सिस्टम) सहित अन्य यूनिक्स जैसी प्रणालियों ने 1980 के दशक के व्यक्तिगत कंप्यूटरों पर प्रीमेप्टिव मल्टीटास्किंग प्रदान की।

बाद के डॉस संस्करण मूल रूप से प्रीमेप्टिव मल्टीटास्किंग/मल्टीथ्रेडिंग का समर्थन करते हैं जिसमें समवर्ती डॉस, बहुउपयोगकर्ता डॉस, उपन्यास दो (जिसे बाद में काल्डेरा ओपनडोस और DR-डॉस 7.02 और उच्चतर कहा जाता है) शामिल हैं। समवर्ती डॉस 386 के बाद से, वे वर्चुअल डॉस मशीनों में समवर्ती रूप से कई डॉस प्रोग्राम भी चला सकते थे।

प्रीमेप्टिव मल्टीटास्किंग के एक सीमित रूप का समर्थन करने के लिए विंडोज का सबसे पुराना संस्करण विंडोज/386|विंडोज/386 2.0 था, जो आभासी मशीन ों में डॉस एप्लिकेशन चलाने के लिए i386 के वर्चुअल 8086 मोड का उपयोग करता था, जिसे आमतौर पर डॉस बॉक्स के रूप में जाना जाता था, जिसे प्रीमेप्ट किया जा सकता था। Windows 9x|Windows 95, 98 और Me में, 32-बिट अनुप्रयोगों को एक अलग पता स्थान में प्रत्येक को चलाकर प्रीमेप्टिव बनाया गया था, लेकिन 16-बिट अनुप्रयोग पिछड़े संगतता के लिए सहकारी बने रहे।[5] विंडोज 3.1x (संरक्षित मोड) में, कर्नेल और वर्चुअल डिवाइस ड्राइवर प्रीमेप्टिव रूप से चलते थे, लेकिन सभी 16-बिट एप्लिकेशन गैर-प्रीमेप्टिव थे और एक ही पता स्थान साझा करते थे।

प्रीमेप्टिव मल्टीटास्किंग को हमेशा विंडोज एनटी (सभी वर्जन), ओएस/2 (नेटिव एप्लिकेशन), यूनिक्स और यूनिक्स जैसी सिस्टम (जैसे लिनक्स, बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन और मैकओएस), ओपन VMS , ओएस/360, और कई अन्य ऑपरेटिंग द्वारा समर्थित किया गया है। अकादमिक और मध्यम से बड़े व्यापार बाजारों में उपयोग के लिए डिज़ाइन की गई प्रणालियाँ।

यद्यपि क्लासिक मैक ओएस में पाए जाने वाले सहकारी मल्टीटास्किंग को एक प्रीमेप्टिव मॉडल में अपग्रेड करने की योजना थी (और एक प्रीमेप्टिव एपीआई मैक ओएस 9 में मौजूद था, हालांकि एक सीमित अर्थ में रेफरी नाम = प्री-एम्प्टिव मल्टीटास्किंग>"पुन: नौसिखिया प्रश्न: ब्लू टास्क क्या है". Archived from the original on 2007-10-13. Retrieved 2007-03-29.</ref>), इन्हें macOS|Mac OS X (अब macOS कहा जाता है) के पक्ष में छोड़ दिया गया था, जो पुराने Mac सिस्टम स्टाइल और NeXTSTEP के हाइब्रिड के रूप में, Mac (कर्नेल) कर्नेल पर आधारित एक ऑपरेटिंग सिस्टम है और आंशिक रूप से बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन से व्युत्पन्न, जिसने हमेशा यूनिक्स की तरह प्रीमेप्टिव मल्टीटास्किंग प्रदान किया था।

यह भी देखें

  • कंप्यूटर मल्टीटास्किंग
  • सहकारी मल्टीटास्किंग

संदर्भ

  1. 1.0 1.1 Tanenbaum, Andrew (2015). आधुनिक ऑपरेटिंग सिस्टम (in English). Boston: Pearson. ISBN 978-0-13-359162-0. OCLC 870646449.
  2. Khanna, S.; Sebree, M.; Zolnovsky, J. "Realtime scheduling in SunOS 5.0". Proceedings of the USENIX Winter Conference, 1992: 375–390.
  3. "Release notes for v2.5.4". The Linux Kernel Archives. Linux Kernel Organization, Inc. Retrieved 2021-07-03.
  4. "QL History FAQ: Firmware".
  5. {{Cite web|url=http://support.microsoft.com/kb/117567%7Ctitle=विंडोज 95 (Q117567) में कैसे 16-बिट और 32-बिट प्रोग्राम मल्टीटास्क|access-date=2008-01-17|url-status=dead|archive-url=https://web.archive.org/web/20080117085655/http://support.microsoft.com/kb/117567%7Carchive-date=2008-01-17}