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

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

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

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

{{Anchor|PREEMPTIVE}प्रीमेप्टिव मल्टीटास्किंग
प्रीमेप्टिव मल्टीटास्किंग शब्द का उपयोग एक कंप्यूटर मल्टीटास्किंग को अलग करने के लिए किया जाता है, जो सहकारी मल्टीटास्किंग सिस्टम से कार्यों के प्रीमेशन की अनुमति देता है, जिसमें प्रक्रियाओं या कार्यों को स्पष्ट रूप से उपज (मल्टीथ्रेडिंग)  के लिए प्रोग्राम किया जाना चाहिए, जब उन्हें सिस्टम संसाधनों की आवश्यकता नहीं होती है।

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

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

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

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

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

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

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

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

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

प्रीमेप्टिव मल्टीटास्किंग की विशेषता वाले घरेलू उपयोगकर्ताओं के लिए उपलब्ध कुछ शुरुआती ऑपरेटिंग सिस्टम सिंक्लेयर QDOS थे (1984 ) और 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-बिट अनुप्रयोग पिछड़े संगतता के लिए सहकारी बने रहे। विंडोज 3.1x (संरक्षित मोड) में, कर्नेल और वर्चुअल डिवाइस ड्राइवर प्रीमेप्टिव रूप से चलते थे, लेकिन सभी 16-बिट एप्लिकेशन गैर-प्रीमेप्टिव थे और एक ही पता स्थान साझा करते थे।

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

यद्यपि क्लासिक मैक ओएस में पाए जाने वाले सहकारी मल्टीटास्किंग को एक प्रीमेप्टिव मॉडल में अपग्रेड करने की योजना थी (और एक प्रीमेप्टिव एपीआई मैक ओएस 9 में मौजूद था, हालांकि एक सीमित अर्थ में रेफरी नाम = प्री-एम्प्टिव मल्टीटास्किंग> ), इन्हें macOS|Mac OS X (अब macOS कहा जाता है) के पक्ष में छोड़ दिया गया था, जो पुराने Mac सिस्टम स्टाइल और NeXTSTEP के हाइब्रिड के रूप में, Mac (कर्नेल) कर्नेल पर आधारित एक ऑपरेटिंग सिस्टम है और आंशिक रूप से बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन से व्युत्पन्न, जिसने हमेशा यूनिक्स की तरह प्रीमेप्टिव मल्टीटास्किंग प्रदान किया था।

यह भी देखें

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

संदर्भ
Multitasking