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

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

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

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

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

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

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

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

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

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

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

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

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

सिस्टम सपोर्ट
आज, लगभग सभी ऑपरेटिंग सिस्टम विंडोज, मैकओएस, लिनक्स (एंड्रॉइड सहित) और आईओएस के वर्तमान संस्करणों सहित प्रीमेप्टिव मल्टीटास्किंग का समर्थन करते हैं।

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

प्रारंभिक पीसी ऑपरेटिंग सिस्टम जैसे एमएस-डॉस और पीसी डॉस, मल्टीटास्किंग का समर्थन बिल्कुल नहीं करते थे, हालाँकि वैकल्पिक ऑपरेटिंग सिस्टम जैसे एमपी/एम-86 (1981) और समवर्ती सीपी/एम-86 ने प्रीमेप्टिव मल्टीटास्किंग का समर्थन किया था। मिनिक्स और सुसंगत सहित अन्य यूनिक्स जैसी प्रणालियों ने 1980 के दशक के पर्सनल कंप्यूटरों पर प्रीमेप्टिव मल्टीटास्किंग प्रदान किया।

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

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

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

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

यह भी देखें

 * कंप्यूटर मल्टीटास्किंग
 * कोआपरेटिव मल्टीटास्किंग

संदर्भ
Multitasking