আপনি যুক্তিযুক্ত আরও মৌলিক প্রশ্ন জিজ্ঞাসা করবেন না, "আমার সিপিইউতে যখন কেবল চারটি কোর থাকবে তখন আমার কীভাবে 290 প্রক্রিয়া থাকতে পারে?" এই উত্তরটি কিছুটা ইতিহাস, যা সুনির্দিষ্ট প্রশ্নের ইতিমধ্যে উত্তর দেওয়া সত্ত্বেও, আপনাকে বড় চিত্রটি বুঝতে সহায়তা করতে পারে। এর মতো, আমি একটি টিএল; ডিআর সংস্করণ দেব না।
একসময় (1950 – '60 এর দশকে ভাবেন) কম্পিউটারগুলি একবারে কেবল একটি কাজ করতে পারে। এগুলি খুব ব্যয়বহুল, পুরো ঘরগুলি ছিল এবং একাধিক লোকের মধ্যে ভাগ করে তাদের কার্যকর ব্যবহার করার জন্য আমাদের একটি উপায়ের প্রয়োজন ছিল। এটি করার প্রথম উপায়টি ছিল ব্যাচ প্রসেসিং , যার মধ্যে ব্যবহারকারীরা কম্পিউটারে কাজগুলি জমা দেবে এবং সেগুলি সারিবদ্ধভাবে স্থাপন করা হবে, একের পর এক মৃত্যুদন্ড কার্যকর করা হবে এবং ফলাফলগুলি ব্যবহারকারীকে ফেরত পাঠানো হবে। এটি ঠিক ছিল তবে এর অর্থ এই ছিল যে আপনি যদি একটি গণনা করতে চান যা বেশ কয়েক দিন সময় লাগছিল, অন্য কেউ সেই সময়ের মধ্যে কম্পিউটারটি ব্যবহার করতে পারত না।
পরবর্তী উদ্ভাবন (ভাবেন, 1960-70 এর দশক) সময় ভাগ করে নেওয়ার ছিল । এখন, পুরো এক টাস্কটি সম্পূর্ণ না করে, তারপরের পরবর্তীটি পুরোটির পরে, কম্পিউটারটি একটি টাস্কের একটি বিট চালায়, তারপরে এটি থামিয়ে পরবর্তী পরবর্তী কিছুটা চালিয়ে যান, ইত্যাদি and সুতরাং, কম্পিউটারটি এমন ধারণা দেয় যে এটি একই সাথে একাধিক প্রক্রিয়া চালাচ্ছে। এর দুর্দান্ত সুবিধাটি হ'ল এখন আপনি একটি গণনা চালাতে পারেন যা কয়েক দিন সময় নেয় এবং এটি এখন আরও বেশি সময় নেয়, কারণ এটি ব্যহত হতে চলেছে, অন্য ব্যক্তিরা সেই সময়ের মধ্যে এখনও মেশিনটি ব্যবহার করতে পারবেন।
এগুলি সবই ছিল বিশাল মেইনফ্রেম স্টাইলের কম্পিউটারগুলির জন্য। যখন ব্যক্তিগত কম্পিউটারগুলি জনপ্রিয় হতে শুরু করেছিল, তারা প্রাথমিকভাবে খুব শক্তিশালী ছিল না এবং আরে, যেহেতু তারা ব্যক্তিগত ছিল তাদের পক্ষে কেবল একটি জিনিস & nbdp; - একবার অ্যাপ্লিকেশন চালানো - একবারে (ভেবে দেখুন, 1980) করা সম্ভব হবে বলে মনে হয়েছিল OK তবে, যেহেতু তারা আরও শক্তিশালী হয়ে উঠেছে (1990 এর দশকের উপস্থাপনাটি ভাবেন), লোকেরা তাদের ব্যক্তিগত কম্পিউটারগুলিও সময় ভাগ করে নেওয়ার জন্য চায়।
সুতরাং আমরা ব্যক্তিগত কম্পিউটারগুলি দিয়ে শেষ করেছি যা সংক্ষিপ্ত সময়ের জন্য একযোগে এক সময় চালিয়ে এবং তারপরে তাদের বিরতি দিয়ে একযোগে একাধিক প্রক্রিয়া চালানোর মায়া দেয়। থ্রেডগুলি মূলত একই জিনিস: অবশেষে, লোকেরা পৃথক প্রক্রিয়াগুলি একসাথে একাধিক কাজ করার বিভ্রান্তি দিতে চেয়েছিল। প্রথমে, অ্যাপ্লিকেশন লেখককে সেগুলি নিজেই পরিচালনা করতে হয়েছিল: গ্রাফিকগুলি আপডেট করার জন্য কিছুটা সময় ব্যয় করুন, বিরতি দিন, গণনার জন্য কিছুটা সময় ব্যয় করুন, বিরতি দিন, অন্য কিছু করার জন্য কিছুটা ব্যয় করুন, ...
তবে একাধিক প্রক্রিয়া পরিচালনা করতে অপারেটিং সিস্টেমটি ইতিমধ্যে ভাল ছিল, এই সাব-প্রসেসগুলি পরিচালনা করতে এটি প্রসারিত করা বোধগম্য হয়েছিল, যাকে থ্রেড বলা হয়। সুতরাং, এখন, আমাদের কাছে একটি মডেল রয়েছে যেখানে প্রতিটি প্রক্রিয়াতে (বা অ্যাপ্লিকেশন) অন্তত একটি থ্রেড থাকে তবে কিছুতে কয়েকটি বা অনেকগুলি থাকে। এই থ্রেডগুলির প্রত্যেকটিই কিছুটা স্বাধীন সাবটাস্কের সাথে মিলে যায়।
তবে, শীর্ষ স্তরে, সিপিইউ এখনও কেবল এই ধারণা দেয় যে এই থ্রেডগুলি একই সাথে চলমান। বাস্তবে, এটি কিছুটা চালিয়ে যাচ্ছে, কিছুটা বিরতি দিন, আরেকটু চালানোর জন্য অন্যটিকে বেছে নেওয়া, ইত্যাদি। আধুনিক সিপিইউগুলি বাদে একবারে একাধিক থ্রেড চালাতে পারে। সুতরাং, বাস্তব বাস্তবে, অপারেটিং সিস্টেমটি "সমস্ত কিছু চালান, বিরতি দিন, কিছুক্ষণের জন্য অন্য কিছু চালান, বিরতি দিন" এই গেমটি একই সাথে সমস্ত কোরগুলিতে খেলছে। সুতরাং, আপনার (এবং আপনার অ্যাপ্লিকেশন ডিজাইনারগণ) যতগুলি থ্রেড চান তা থাকতে পারে তবে সময়ের যে কোনও মুহুর্তে, তাদের কয়েকটি ব্যতীত সমস্তগুলি প্রকৃতপক্ষে বিরতি দেওয়া হবে।