“ऑपरेटिंग सिस्टम, प्रोग्राम्स का एक समूह (collection) है, जो सिस्टम रिसोर्सेस जैसे प्रोसेसर (processor) मेमोरी (memory), इनपुट/आउटपुट डिवाइसेस (I/O Devices) तथा फाइल सिस्टम (File System) को मैनेज (manage) करता है।” ये सभी सिस्टम रिसोर्सेस मूल्यवान (valuable) होते हैं, जिन्हें ऑपरेटिंग सिस्टम एक-दूसरे से सहयोगी (co-operative) ढ़ग से कार्य करने में सहायता करता है।
ऑपरेटिंग सिस्टम प्रत्येक रिसोर्स (resource) की स्थिति (status) की जानकारी रखता है और निश्चित पॉलिसी (certain policy) के आधार पर विभिन्न प्रोसेसेस के लिए रिसोर्सेस को बांटता (allocate) है तथा यह निर्णय भी लेता है कि कोई प्रोसेस कितनी देर तक रिसोर्सेस का प्रयोग करेगी। अन्त में यह बांटे (allocated) गए रिसोर्सेस को डिएलोकेट (de-allocate) भी करता है।
जहां तक प्रोसेसर मैनेजमेंट का सवाल है, तो ऑपरेटिंग सिस्टम द्वारा फिजिकल प्रोसेसर्स (CPUs) का प्रबन्धन (management) अर्थात् प्रोसेसेस या टास्क्स या जॉब्स (process or tasks or task or jobs) के लिए प्रोसेसर (processor) को एलोकेट (allocate) करना ही प्रोसेसर मैनेजमेंट कहलाता है।
प्रोग्राम की एक्जक्यूट (execute) कर रही अवस्था ही प्रोसेस (process) कहलाती है। अर्थात् कोई भी प्रोग्राम जब चल रहा होता है तो वह एक प्रोसेस कहलाती है, जो किसी खास कार्य को सम्पन्न करता है। उदाहरणस्वरूप, UNIX ऑपरेटिंग सिस्टम में Shell या Command Interpreter भी एक प्रासेस है, जो यूजर द्वारा दिए गए कमाण्ड को एकसेप्ट (accept) करती है तथा इसे एक प्रोसेस के रूप में एक्सीक्यूट करती है। ज्ञातव्य हो कि जब भी कोई प्रोसेस क्रिएट (Create) होती है, तो उसे विभिन्न सिस्टम रिसोर्सेस, जैसे CPU का समय, मेमोरी (memory) रजिस्टर्स (registers), फाइलों (files) इत्यादि की आवश्यकता होती है।
जैसा कि हम जानेते हैं कि टाइम-शेयर्ड (Time Shared System) में एक साथ अनेकों यूजर के प्रोग्राम मेमोरी में रहते (reside) हैं तथा प्रत्येक यूजर के प्रोग्राम के लिए CPU के समय का एक समान भाग जो कुछ सेकण्डों का होता है, बांटा हुआ (allocated) होता है। जब CPU किसी प्रोग्राम या कमाण्ड को एक्जक्यूट करता है, तो एक प्रोसेस क्रिएट होती है। जब एक प्रोसेस अपने एलोकेटेड (allocated) समय के पश्चात् एक्सीक्यूट करना बन्द कर देती है, तो दूसरी प्रोसेस चलना करना प्रारम्भ कर देती है। जब कोई प्रोसेस कुछ समय के लिए (temporarily) ससपेन्ड (suspend) होती है, तो उस प्रोसेस के इनफॉर्मेशन (information) मेमोरी लोकेशन (memory location) में स्टोर हो जाते है, ताकि जब पुन: उस प्रोसेस का एक्जक्यूशन का प्रारम्भ हो तो वह वहीं से एक्जक्यूट करना प्रारम्भ करे, जहां से वह प्रोसेस ससपेन्ड (suspend) हुई थी।
कई ऑपरेटिंग सिस्टम में प्रत्येक प्रोसेस की इनफॉर्मेशन (information), प्रोसेस टेबल (process tables) में स्टोर होती है। ऑपरेटिंग सिस्टम प्रोसेसस को मैनेज (manage) करने के लिए सिस्टम कॉल्स (system calls) भी प्रदान करती है। इन सिस्टम कॉल्स (system calls) में create और kill सिस्टम कॉल्स प्रमुख है।
प्रोसेस कॉनसेप्ट (Process Concept)
प्रोग्राम और प्रोसेस में क्या अन्तर है? ये अब आप जान ही गए होंगे| प्रोग्राम जहां पैसिव इन्टिटी (passive entity) हैं, जैसे, डिस्क पर प्रोग्राम कोड्स को फाइल के रूप में स्टोर करना। वहीं प्रोसेस एक एक्टिव इन्टिटी (active entity) है, जिसके साथ एक प्रोग्राम काउन्टर (program counter) होता है, जो अगले इन्सट्रक्शन (next instruction) को एक्जक्यूट करने को निर्दिष्ट करता हैं तथा प्रोसेस से सम्बन्धित रिसोर्सेस का सेट (set) होता है। केवल एक प्रोसेसर (processor) को कई प्रोसेसेस (processes) के बीच शिड्यूलिंग नीति (Scheduling Policy) द्वारा शेयर किया जा सकता है।
प्रोसेसेस पदानुक्रम(Processes Hierarchies)
जब कोई प्रोसेस क्रिएट (create) होती है, तो वह अन्य प्रोसेसेस को क्रिएट करती है और फिर नये प्रोसेसेस अन्य प्रोसेसेस को क्रिएट कर सकती हैं। जिस प्रोसेस ने अन्य प्रोसेस का निर्माण किया है उसे पैरेन्ट प्रोसेस (parent process) तथा नए प्रोसेसेस (new process) को उस प्रोसेस का चिल्ड्रेन प्रोसेस (children process) कहा जाता है। इस प्रकार एक प्रोसेस द्वारा अन्य प्रोसेसेस को क्रिएट (create) करने के कारण प्रोसेसेस ट्री (process tree) का निर्माण होता है।
प्रोसेस स्थिति(Process State)
निम्नलिखित में से कोई भी एक स्टेट (state) हो सकता है, अर्थात् एक प्रोसेस निम्नलिखित में किसी भी एक स्टेट (state) में हो सकती है।
- न्यू (New)
- रेडी (Ready)
- रनिंग (Running)
- वेटिंग (Waiting)
- टरमिनेटेड (Terminated)
न्यू स्टेट (New State)
इस स्टेट में कोई भी प्रोसेस नयी बनती है।
रेडी स्टेट (Ready State)
कोई भी प्रोसेस शुरू या चालू या क्रिएट (create) होने के पश्चात् शीघ्र ही (immediately) रेडी स्टेट (ready state) में आ जाती है। इस स्टेट में कोई भी प्रोसेस प्रोसेसर के एलोकेट (allocate) होने की प्रतीक्षा करती रहती है।
रनिंग स्टेट (Running State)
जब किसी प्रोसेस के इन्सट्रक्शन्स (instructions) एक्जक्यूट करते रहते हैं, तो वह प्रोसेस रनिंग स्टेट (Running State) में कहलाती है। जब कोई प्रोसेस CPU तथा अन्य सिस्टम रिसोर्सेस से कंट्रोल (control) पाता है, तो वह एक्जक्यूट करना प्रारम्भ कर देती है। रनिंग प्रोसेस (running process) के एक्जक्यूट करने के दरम्यान इनपुट/आउटपुट (I/O) ऑपरेशन्स के क्रम से, रनिंग प्रोसेस (running process) किसी दूसरे प्रोसेस को एक्जक्यूट करने के लिए, कंट्रोल स्थानान्तरित कर सकती है। रनिंग प्रोसेस द्वारा इनपुट/आउटपुट (I/O) ऑपरेशन्स के दरम्यान कंट्रोल को किसी दूसरे प्रोसेस (जो रन करने के लिए रेडी (ready) होगा) या ऑपरेटिंग सिस्टम को स्थानान्तरित किया जाना, ऑपरेटिंग सिस्टम के शिड्यूलिंग नीति (scheduling policy) पर निर्भर करता है।
वेटिंग स्टेट (Waiting State)
इस स्टेट में कोई प्रोसेस किसी इवेंट (event) के घटित होने की प्रतीक्षा करती रहती है। जैसे, इनपुट/आउटपुट (I/O) ऑपरेशन्स के पूर्णरूपेण खत्म होने की प्रतीक्षा करना।
टरमिनेटेड (Terminated)
जब कोई प्रोसेस अपने अन्तिम स्टेटमेंट (last statement) को एक्जक्यूट कर लेती है तो वह ऑपरेटिंग सिस्टम द्वारा टरमिनेट कर दिया जाता है। प्रोसेस का यह स्टेट, टरमिनेटेड स्टेट (Terminated State) कहलाता है| टरमिनेटेड स्टेट में कोई प्रोसेस अपने पैरेन्ट (parent) प्रोसेस को डेटा भी रिटर्न (return) कर सकती है। किसी प्रोसेस को सिस्टम कॉल (system call) द्वारा क्रिएट किए गए दूसरे प्रोसेस से भी टरमिनेट किया जा सकता है।