ऑपरेटिंग सिस्टम एक बड़ा और जटिल सॉफ्टवेयर है, जो बड़ी संख्या में कई सारे फंक्शन्स का समर्थन करता हैं; अत: ऑपरेटिंग सिस्टम का डेवलपमेंट एक मोनोलिथिक सॉफ्टवेयर (monolithic software) के रूप में न होकर कई छोटे-छोटे मॉड्यूल्स (modules) के समूह के रूप में होना चाहिए, इनमें से प्रत्येक मॉड्यूल्स के इनपुट्स (inputs,) आउटपुट्स (outputs) तथा कार्य (function) अच्छी तरह से परिभाषित होने चाहिए।
लेयर्ड स्ट्रक्चर एप्रोच (Layered Structure Approach)
लेयर्ड स्ट्रक्चर एप्रोच, ऑपरेटिंग सिस्टम को विभिन्न सतहों (layers) में विभाजित कर, उसे डेवलप करने की एक विधि है। प्रत्येक सतह नीचे वाले सतह के शीर्ष पर बनाए जाते हैं। सबसे नीचे की सतह हार्डवेयर की होती है। जबकि सबसे ऊपर की सतह यूजर इंटरफेस की होती है।
लेयर्ड स्ट्रक्चर्ड एप्रोज के तहत सर्वप्रथम THE नामक ऑपरेटिंग सिस्टम को E. W. Dijkistra तथा उनके शिष्यों द्वारा सन् 1968 ई. में निर्मित किया गया। THE ऑपरेटिंग सिस्टम एक बैच ऑपरेटिंग सिस्टम (Batch Operating System) था, जिसमें 6 सतहें (layers) थे, जिन्हें नीचे दिए चित्र में दर्शाया गया है।
THE ऑपरेटिंग सिस्टम में Layer 0 हार्डवेयर को डील (deal) करता था। Layer1, CPU की शिड्यूलिंग (CPU Scheduling) अर्थात् जॉब्स को प्रोसेसर के लिए एलोकेट करता था। Layer2, मेमोरी मैनेजमेंट का कार्य करता था। Layer3, ऑपरेटिंग के कॉनसोल (console) के लिए डिवाइस ड्राइवर को धारण (contain) करता था जबकि layer4, इनपुट/आउटपुट डिवाइसेस के लिए बफरिंग (Buffering) किया करते थे।
ये सभी सतहें (layers) इस तरह डिजाइन किए गए हैं कि प्रत्येक सतह (layer) केवल अपने नीचे वाला सतह (layer) के ऑपरेशन (operation) ओर सर्विसेस का ही प्रयोग कर सकता है। चूंकि प्रत्येक सतह (layer) अपने से उच्चतर सतहों (higher levels) से ऑपरेशन्स, के क्रियान्वयन (implementation) को छिपाता, (hide) हैं, अत: किसी सतह के उच्चतर (higher) सतह को यह जानने की आवश्यकता नहीं होती है, कि किस तरह ऑपरेशन्स को कार्यान्वित (implement) किया जाता है, बल्कि उसे केवल यह जानने की आवश्यकता होती है कि ऑपरेशन्स क्या करता हैं। चूंकि प्रत्येक सतह के अलग-अलग कार्य हैं, अत: किसी भी सतह को बिना किसी भी सतह से सम्बन्ध रखते हुए डिबग (debug) किया जा सकता है।
लेयर्ड एप्रोच (Layered Approach) का मुख्य लाभ यह है कि यह ऑपरेटिंग सिस्टम के डिजाइन को मॉड्यूलरिटी (modularity) प्रदान करता हैं, जिसके कारण ऑपरेटिंग सिस्टम को आसानीपूर्वक डिजाइन तथा वेरिफाई (verify) किया जा सकता है। लेयर्ड एप्रोच (Layered Approach) के साथ सबसे बड़ी परेशानी यह हैं कि इसमें नए स्तर (level) को परिभाषित (define) करना कठिन होता है; अर्थात् इसमें एक स्तर को दूसरे स्तर से अलग करने में काफी सावधानी की आवश्यकता होती हैं; क्योंकि कोई सतह (layer) अपने नीचे वाले सतह (layer) सर्विसेस (services) का प्रयोग करता है। उदाहरणस्वरूप, सेकेण्डरी मेमोरी (Secondary Memory) के डिवाइस ड्राइवर्स (Device Drivers) को मेमोरी मैनेजमेंट रूटीन्स (memory management routines) के नीचे वाले सतह (lower later) में परिभाषित होना चाहिए; क्योंकि मेमोरी मैनेजमेंट में सेकेण्डरी मेमोरी का प्रयोग किया जाता है।
कर्नल एप्रोच (Kernel Approach)
कर्नल एप्रोच में ऑपरेटिंग सिस्टम को दो अलग-अलग भागों में बांटकर डिजाइन और डेवलप किया जाता है। अर्थात् कर्नल एप्रोच द्वारा बनाया गया ऑपरेटिंग सिस्टम दो अलग-अलग भागों का बना होता है। एक भाग को कर्नल (kernel) कहा जाता है तथा दूसरे भाग में सिस्टम प्रोग्राम्स (System Program) होते हैं। Kernel ऑपरेटिंग सिस्टम का वह भाग है, जो हार्डवेयर सिस्टम में इन्टरफेस (interface) स्थापित करता है। Kernel के निम्नलिखित प्रमुख कार्य हैं –
- प्रोसेसेस को क्रिएट तथा डिलीट करने का मैकेनिज्म (mechanism) प्रदान करना।
- प्रोसेसर शिड्यूलिंग (processor scheduling), मेमोरी मैनेजमेंट (memory management) तथा इनपुट/आउटपुट मैनेजमेंट (I/O Management) करना।
- प्रोसेसेस को सिनक्रोनाइज (synchronize) करने का मैकेनिज्म (mechanism) प्रदान करना।
- इन्टरप्रोसेस कॉम्यूनिकेशन (Inter-process Communication) के लिए मैकेनिज्म (mechanism) प्रदान करना।
UNIX और लिनक्स (Linux) ऑपरेटिंग सिस्टम कर्नल एप्रोच पर आधारित हैं। UNIX और लिनक्स ऑपरेटिंग सिस्टम दो अलग-अलग भागों का बना हुआ हैं – Kernel और System Programs, जिसे नीचे दिए गए चित्र में दर्शाया गया हैं।
दिए गए चित्र में आप देख सकते हैं, कि कर्नल (kernel), सिस्टम प्रोग्राम्स (System Program) और हार्डवेयर (Hardware) के मध्य अवस्थित है। कर्नल (Kernel), सिस्टम कॉल्स (System Calls) के माध्यम से फाइल सिस्टम (File System), प्रोसेसर शिड्यूलिंग (Process Scheduling) मेमोरी मैनेजमेंट (Memory Management) तथा ऑपरेटिंग सिस्टम के अन्य कार्यों (Function) को सम्पादित करता हैं। UNIX ऑपरेटिंग सिस्टम कॉफी अधिक संख्या में सिस्टम कॉल्स (System Calls) का समर्थन करता है, तथा सिस्टम कॉल्स, कर्नल (kernel) के सर्विसेस (services) का प्रयोग करते हैं।