आप यकीनन अधिक बुनियादी सवाल नहीं पूछते हैं, "जब मेरे सीपीयू में केवल चार कोर होते हैं, तो मुझे 290 प्रक्रियाएं कैसे हो सकती हैं?" यह उत्तर थोड़ा इतिहास है, जो आपको बड़ी तस्वीर को समझने में मदद कर सकता है, भले ही विशिष्ट प्रश्न का उत्तर पहले ही दिया गया हो। जैसे, मैं एक टीएल; डीआर संस्करण देने नहीं जा रहा हूं।
एक बार (सोचिए, 1950- '60 के दशक), कंप्यूटर एक समय में केवल एक ही काम कर सकता था। वे बहुत महंगे थे, पूरे कमरे भरे हुए थे, और हमें उन्हें कई लोगों के बीच साझा करके उनका कुशल उपयोग करने का तरीका चाहिए था। ऐसा करने का पहला तरीका बैच प्रसंस्करण था , जिसमें उपयोगकर्ता कंप्यूटर को कार्य प्रस्तुत करेंगे और उन्हें कतारबद्ध किया जाएगा, एक के बाद एक निष्पादित किया जाएगा और परिणाम उपयोगकर्ता को वापस भेजे जाएंगे। यह ठीक था, लेकिन इसका मतलब यह था कि, यदि आप एक गणना करना चाहते हैं जो कुछ दिनों के लिए लेने वाला था, उस समय कोई अन्य व्यक्ति कंप्यूटर का उपयोग नहीं कर सकता था।
अगला इनोवेशन (सोचो, 1960 का -70 का दशक) समय साझा करने वाला था । अब, पूरे एक कार्य को निष्पादित करने के बजाय, फिर पूरे के पूरे एक, कंप्यूटर एक कार्य को थोड़ा निष्पादित करेगा, फिर इसे रोकें और अगले एक को थोड़ा निष्पादित करें, और इसी तरह। इस प्रकार, कंप्यूटर यह धारणा देगा कि यह कई प्रक्रियाओं को समवर्ती रूप से निष्पादित कर रहा है। इसका महान अवसर यह है कि अब आप एक गणना चला सकते हैं, जिसमें कुछ दिन लगेंगे और हालाँकि अब इसमें और भी अधिक समय लगेगा, क्योंकि यह बाधित होता रहता है, अन्य लोग उस समय के दौरान भी मशीन का उपयोग कर सकते हैं।
यह सब विशाल मेनफ्रेम शैली के कंप्यूटरों के लिए था। जब व्यक्तिगत कंप्यूटर लोकप्रिय होने लगे, तो वे शुरू में बहुत शक्तिशाली नहीं थे और, हे, क्योंकि वे व्यक्तिगत थे, ऐसा लगता था कि उनके लिए केवल एक काम करना और nbdp करने में सक्षम होना ठीक था; - एक बार आवेदन - एक बार में (विचार, 1980 के दशक)। लेकिन, जैसा कि वे और अधिक शक्तिशाली हो गए (विचार करें, 1990 के दशक में पेश करने के लिए), लोग अपने व्यक्तिगत कंप्यूटरों को समय-साझा करना चाहते थे, भी।
इसलिए हमने व्यक्तिगत कंप्यूटरों को समाप्त कर दिया, जो कि कई प्रक्रियाओं को समवर्ती रूप से चलाने का भ्रम देते थे, जो कि उन्हें संक्षिप्त अवधि के लिए एक समय पर चलाते थे और फिर उन्हें रोकते थे। सूत्र अनिवार्य रूप से एक ही बात है: अंततः, लोग चाहते थे कि व्यक्तिगत प्रक्रियाएं भी कई चीजों को समवर्ती रूप से करने का भ्रम दें। सबसे पहले, एप्लिकेशन लेखक को खुद को संभालना था: ग्राफिक्स को अपडेट करते समय थोड़ा सा खर्च करें, उस पर रोक दें, गणना करते समय थोड़ा खर्च करें, उस पर रोकें, कुछ और करते समय थोड़ा खर्च करें, ...
हालांकि, ऑपरेटिंग सिस्टम पहले से ही कई प्रक्रियाओं का प्रबंधन करने में अच्छा था, इसे इन उप-प्रक्रियाओं को प्रबंधित करने के लिए विस्तारित करने के लिए समझ में आया, जिन्हें थ्रेड्स कहा जाता है। तो, अब, हमारे पास एक मॉडल है जहां हर प्रक्रिया (या एप्लिकेशन) में कम से कम एक धागा होता है, लेकिन कुछ में कई या कई होते हैं। इनमें से प्रत्येक थ्रेड कुछ हद तक स्वतंत्र उपमा से मेल खाता है।
लेकिन, शीर्ष स्तर पर, सीपीयू अभी भी केवल यह भ्रम दे रहा है कि ये धागे एक ही समय में चल रहे हैं। वास्तव में, यह एक छोटे से एक के लिए चल रहा है, इसे रोकते हुए, दूसरे को थोड़ा सा चलाने के लिए चुन रहा है, और इसी तरह। सिवाय इसके कि आधुनिक सीपीयू एक ही बार में एक से अधिक थ्रेड चला सकते हैं। तो, वास्तविक वास्तविकता में, ऑपरेटिंग सिस्टम एक साथ सभी कोर पर "बिट के लिए रन, पॉज़, बिट के लिए कुछ और रन, पॉज़" का यह गेम खेल रहा है। तो, आपके पास (और आपके एप्लिकेशन डिज़ाइनर) जितने चाहें उतने धागे हो सकते हैं, लेकिन, किसी भी समय, सभी लेकिन उनमें से कुछ वास्तव में रोक दिए जाएंगे।