Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Class 38 - Thread

🧵 Thread কী?

  • Thread হল কোন process এর একটি execution unit.
  • একটি process creation এর সাথে সাথে by default একটি thread create হয় যাকে main thread ও বলা হয়।
  • Thread মূলত RAM এ load করা instruction/program code গুলো execute করে থাকে।

🧠 Thread কোথায় থাকে?

                User software/program এ double click করে
                                  ⬇️
            RAM এ লোড হওয়া program এর binary executable code load হয়
                                  ⬇️
                      OS একটি process create করে
                                  ⬇️
                      default thread create হয়

  • Thread কে process এর একটি অংশ বলা যায়।
  • Process creation এর শুরুতে thread এবং process একই থাকে।
  • Process is container, thread is executor

🔍 Thread কে Virtual Process কেন বলা হয়?

  • New Process create ➡️ Default Thread Create হয়
  • Thread এর Code Segment, Data Segment, Stack, Heap ইত্যাদি থাকে ➡️ Process এর অনুরূপ
  • Process এর মতোই behave করে থাকে।
  • Logical Process বলা হয়।

🧶🔄 Multi-threading

একটি process এর মধ্যে অনেকগুলো কাজ বা functionality execute করার জন্য, OS ওই process এর ভেতরে একাধিক execution unit তৈরি করে, যেগুলো একসাথে কাজ করে, তখন তাকে Multi-threading বলে।

✨ একই Process এর অন্তর্ভুক্ত Multiple Threads এর কিছু Characteristics

  • প্রতিটি Thread এর নিজস্ব CPU state (যেমন: Register, Program Counter) এবং Stack থাকে।
  • সব Thread একই Process এর code section, data section এবং OS resources (e.g. open files and signals) share করে।
  • প্রতিটি Thread এর নিজস্ব TCB (Thread Control Block) থাকে।
  • Thread গুলো lightweight হওয়ায় context switching দ্রুত হয়।
  • একে অপরের সাথে সহজে Data শেয়ার করতে পারে → Fast Communication সম্ভব।
  • এক Thread এ bug থাকলে পুরো process crash করতে পারে।
  • Data sharing এর জন্য synchronization দরকার (mutex/semaphore)।

🧵 Visualization: Multi-threading Inside a Process

                  +-----------------------------+
                  |         Process             |
                  |  (e.g., Media Player App)   |
                  |                             |
                  |  +-----------------------+  |
                  |  |       Thread 1        |  |  --> Play Audio
                  |  +-----------------------+  |
                  |                             |
                  |  +-----------------------+  |
                  |  |       Thread 2        |  |  --> Display Video
                  |  +-----------------------+  |
                  |                             |
                  |  +-----------------------+  |
                  |  |       Thread 3        |  |  --> Handle User Input
                  |  +-----------------------+  |
                  |                             |
                  +-----------------------------+

🔍 Explanation

Process হচ্ছে একটি চলমান প্রোগ্রাম (যেমন: VLC Player)। সেই প্রোগ্রামের ভেতরে একাধিক Thread কাজ করছে। যেমন:

  • 🎵 Thread 1: অডিও প্লে করছে
  • 📺 Thread 2: ভিডিও দেখাচ্ছে
  • 🎮 Thread 3: ইউজারের কীবোর্ড/মাউস ইনপুট নিচ্ছে

সব thread মিলে একটি process এর কাজকে দ্রুত ও কার্যকর করে।

🔄 Context Switching in Thread

  • Thread ➡️ একটি নির্দিষ্ট কাজ/functionality এর জন্য দায়ী
  • Process দ্রুত execute করার লক্ষ্যে ➡️ OS, multiple thread create করে
  • Program Counter একটি নির্দিষ্ট সময়ে শুধু একটি thread এর instruction address ধরে রাখতে পারে ➡️ CPU একসাথে সব থ্রেড চালাতে পারে না
  • CPU কিছু সময় একটি thread execute করে ➡️ একটি thread এর সময় শেষ বা thread blocked (যেমন: I/O wait)
  • OS সেই thread এর current state (registers, stack pointer, program counter) সংরক্ষণ করে ➡️ TCB (Thread Control Block)
  • এরপর OS অন্য thread এর state load করে
  • এই পুরো প্রক্রিয়াটিকেই বলা হয় ➡️ Thread Context Switching

Thread Pool 🧵🧵

Thread pool হলো আগেই তৈরি করা কিছু Thread, যেগুলো Process এ বসে থাকে আর কাজ এলে তা করে ফেলে। প্রতিবার নতুন Thread না বানিয়ে আগের তৈরি Thread ব্যবহার করায় সময় ও রিসোর্স বাঁচে; বিশেষভাবে ছোট ও অনেক কাজ থাকলে এটা খুবই উপকারী।

⚙️ Process Vs Thread 🧵

FeatureProcessThread
🔒 Resource Isolationপ্রতিটি Process এর নিজস্ব memory ও resources থাকেএকই Process এর মধ্যে সব Thread একই memory ও resources শেয়ার করে
🔄 Communicationজটিল; Inter-Process Communication (IPC) mechanisms প্রয়োজন হয়সহজ; shared memory ব্যবহার করে Thread গুলো একে অপরের সাথে যোগাযোগ করে
OverheadProcess তৈরি ও পরিচালনার জন্য বেশি overhead লাগেThread তৈরি ও পরিচালনা তুলনামূলকভাবে কম overhead
⏱️ ConcurrencyConcurrency সম্ভব, তবে cost বেশিএকই Process এর মধ্যে concurrency অর্জনে বেশি কার্যকর
🛡️ Isolationএক Process অন্য Process এর memory তে সরাসরি প্রবেশ করতে পারে নাThreads একে অপরের উপর প্রভাব ফেলতে পারে, কারণ তারা memory শেয়ার করে
📌 Exampleপ্রতিটি browser tab আলাদা Process হিসেবে চলেrendering, networking, JavaScript execution ইত্যাদি আলাদা Thread এ হয়

[Author: @nazma98 Date: 2025-06-02 Category: interview-qa/class-wise ]