1890-1950 - ऑपरेशन सिस्टम में निहित है
बहुत शुरुआती कंप्यूटरों के बराबर था कि एक ओएस अब उनमें क्या बनाता है। आप (आपरेटर) ऑपरेटिंग सिस्टम का भी हिस्सा थे। आपने रजिस्टर स्विच को फ़्लिप किया (या एक पंच कार्ड का उपयोग किया) और शारीरिक रूप से स्वैप किए गए बस तारों (पुराने फैशन टेलीफोन ऑपरेटर स्टेशन के बारे में सोचें) और मेमोरी को सीधे (शारीरिक तारों के माध्यम से) प्रकाश बल्ब (दिन की निगरानी) और प्रिंटर के साथ जोड़ा गया था ( दीर्घकालिक भंडारण) इस तरह से कि प्रोग्राम आउटपुट सीधे प्रकाश में आएगा और डिवाइस पर सीधे प्रिंट होगा क्योंकि यह आउटपुट मेमोरी बफर में रखा जा रहा था। इन चीजों के लिए किसी ड्राइवर की जरूरत नहीं थी क्योंकि (जिस तरह से उन भौतिक तारों को चलाया गया था) उन्होंने 'सिर्फ काम किया' (इन दिनों में मॉनिटर जैसी कोई चीज भी नहीं थी)। वास्तव में इस युग में अभी भी कुछ दशक होने जा रहे थे जब तक कि एक डिजिटल संख्यात्मक प्रदर्शन का आविष्कार नहीं किया जाएगा ताकि आप वास्तव में उन संख्याओं को देख सकें जिन्हें आपने पहले ही रजिस्टर और आउटपुट में दशमलव संख्याओं के रूप में दर्ज किया था; प्रिंटर इस पूरे युग पर नज़र रखता है। उन्हें सही ढंग से काम करने के लिए आवश्यक रूप से तार दिया गया था। इस भाग में से कोई भी वास्तव में मैकेनिकल (1890) से इलेक्ट्रिक एनालॉग (1910s) से डिजिटल (1930) तक स्विच के साथ बहुत बदल गया। इस समय के दौरान 'प्लग एन प्ले' आर्किटेक्चर को रुकावट प्रणाली के साथ बदल दिया गया था और देर से नब्बे के दशक तक फिर से पुनरुत्थान नहीं करेगा; तब तक बहुत कम प्लग-इन होगा। इंटरप्ट के साथ, उपकरणों को सीपीयू समय लेने की अनुमति दी गई थी जो आर्किटेक्चर की अनुमति देते थे t सीधे हार्डवेयर से बंधा हुआ है, लेकिन इसके लिए कई पीढ़ियों का समय लिया गया है ताकि हम वास्तव में सुव्यवस्थित प्रक्रिया को x86 आर्च (और नए) में देख सकें; प्रारंभिक सिस्टम अक्सर भयानक दौड़ की स्थिति, हार्डवेयर संगतता \ विलंब की समस्याओं, और अन्य विषम व्यवहारों में भाग लेते हैं जहां व्यवधान चिंतित होते हैं। क्योंकि इस अवधि में प्रत्येक मशीन मौलिक रूप से अलग (एक प्रयोगात्मक) आर्किटेक्चर का उपयोग करती थी; लगभग सभी उपकरण कस्टम मशीन पर काम करने के लिए बनाए गए थे।
1950-1973 - एक प्रणाली के भीतर ऑपरेशन
इस युग ने उन अधिकांश विशेषताओं के आगमन को देखा जिनके बारे में हम सोचते हैं कि जब हम एक सच्चे ऑपरेटिंग सिस्टम के बारे में बात करते हैं। डिबगिंग, प्रोग्रामिंग लैंग्वेज, मल्टी यूजर, मल्टी टास्किंग, टर्मिनल, डिस्क टाइप ड्राइव, नेटवर्किंग, कंपोनेंट्स का मानकीकरण, आदि सभी इस युग में पेश किए गए थे। इस बार इस के मानकीकरण की दिशा में एक विशाल छलांग देखी गई, जिसका अर्थ था कि हमारे पास अधिक मानकीकृत उपकरण थे, लेकिन फिर भी प्रत्येक ओएस को प्रत्येक मशीन के लिए तैयार किया गया था, जिसका अर्थ था कि ओएस कार्यक्षमता उन इंजीनियरों द्वारा गंभीर रूप से सीमित थी जो उस विशेष प्रणाली को डिजाइन करने के लिए तय किए गए थे। । इस समय के दौरान, एक ग्रे ग्रे क्षेत्र था जो एक ऑपरेटिंग सिस्टम था, क्योंकि विभिन्न आर्किटेक्चर बहुत अलग तरीके से बात करते हैं और एक सामान्य उद्देश्य मशीन को एक मशीन की तुलना में बहुत अधिक ओएस की आवश्यकता होती है जिसमें समान नौकरियों को संभालने के लिए हार्डवेयर शामिल होता है। तथ्य यह है कि हार्डवेयर हमेशा सॉफ़्टवेयर की तुलना में तेज़ होने वाला है और व्यावहारिक रूप से सॉफ़्टवेयर में किया गया कुछ भी सैद्धांतिक रूप से हार्डवेयर में किया जा सकता है (यह लागत \ लचीलेपन \ size \ time \ etc) है जो हमें सब कुछ के लगभग शुद्ध हार्डवेयर संस्करण बनाने से सीमित करता है दिन)। एक ओएस एक विशेष कंप्यूटर या कंप्यूटर के प्रकार के लिए बनाया गया था; यह कहीं और काम नहीं करेगा। प्रत्येक नए कंप्यूटर डिज़ाइन को किसी विशेष मशीन मॉडल के साथ काम करने के लिए स्क्रैच से फिर से लिखे जाने के लिए सभी निम्न स्तर के ओएस सॉफ़्टवेयर की आवश्यकता होती है। इस समय के अंत के आसपास एक नया OS उभरा जो जल्द ही इस प्रतिमान को बदल देगा, केन थॉम्पसन और डेनिस रिची द्वारा बेल लैब्स में लिखे गए UNIX।
1973 - सिस्टम के बीच संचालन
एक एकल कार्यक्रम ने यह सब बदल दिया लेकिन यह UNIX नहीं था। यह सी संकलक था (जो बेल लैब्स द्वारा काटे जाने के बाद केन थॉम्पसन और डेनिस रिची द्वारा एक गैरेज में प्रसिद्ध रूप से बनाया गया था)। इस बिंदु तक, किसी भी समय आपने जो कोड लिखा था, वह या तो मशीन कोड था (कोड जिसे मशीन सीधे समझती है, लेकिन पोर्टेबल नहीं है) या यह एक भाषा में लिखा गया था, जिसने आपके कोड को बाइट कोड (कोड जिसे दूसरे प्रोग्राम द्वारा व्याख्या किया गया है, के रूप में संकलित किया है) रन)। सी के साथ लाए गए OSes के लिए बहुत बड़ा अंतर वह करने की क्षमता थी जिसे मशीन कोड में क्रॉस कंपाइलिंग के रूप में जाना जाता है। इसका मतलब है कि कोड एक बार लिखा जा सकता है और कई अलग-अलग मशीन प्रकारों को मूल रूप से चलाने के लिए संकलित किया जा सकता है जब तक कि उस मशीन के लिए एक कंपाइलर लिखा गया हो। ऑपरेटिंग सिस्टम को मशीन कोड में लिखा जाना चाहिए क्योंकि मशीन कोड का शाब्दिक अर्थ केवल कोड होता है जिसे मशीन जानता है।
मैं कहूंगा कि यह तब तक नहीं था जब तक केन और डेनिस ने पहली बार UNIX कर्नेल को C संकलक का उपयोग करके संकलित नहीं किया था कि आधुनिक अर्थों में एक सच्चा OS पैदा हुआ था। इससे पहले, एक ओएस या तो एक भौतिक वस्तु थी या विशेष रूप से किसी विशेष मशीन के लिए डिज़ाइन किए गए मेमोरी स्पेस का एक प्रारंभिक प्रारंभिक हिस्सा था। सिस्टम में नए उपकरणों को जोड़ना शाब्दिक रूप से आवश्यक है कि 'कर्नेल' कोड को फिर से लिखा जाए। अब, UNIX OS, जिसे उन्होंने किसी विशेष मशीन के लिए डिज़ाइन किया था, को पुन: स्थापित किया जा सकता है और अन्य मशीनों पर बिना किसी पुनर्लेखन के चलाया जा सकता है (जब तक कि मशीन बूटस्ट्रैप वातावरण से C संकलक को संकलित करने में सक्षम थी, बाकी OS में लिखा जा सकता है। अपेक्षाकृत उच्च स्तर C कोड)।