Header Ads

Header ADS

Context Switching


Context Switching & PCB (Process Control Block) — Full Detailed Documentation


1) আগে Basic Foundation: Program, Process, CPU

Program কী?

Program হলো disk-এ থাকা instructions-এর set
যেমন:

  1. chrome.exe

  2. code.exe

  3. তোমার a.out

এগুলো এখনো running না, শুধু file আকারে আছে।


Process কী?

যখন Program execute হয়, তখন সেটা Process হয়।

অর্থাৎ:

Program + Running State + Memory + Resources = Process

একটা Process-এর থাকে:

  1. নিজস্ব PID
  2. নিজস্ব memory space

  3. program counter

  4. register values

  5. stack

  6. heap

  7. open files

  8. scheduling information


CPU কী করে?

CPU একসাথে সাধারণত একটি core-এ একটি instruction stream execute করে।

কিন্তু OS-এ অনেক Process ready থাকে।
তাই CPU-কে এক Process থেকে আরেক Process-এ যেতে হয়।

এই যাওয়া-আসার পুরো প্রক্রিয়াটাই Context Switching


2) Context কী?

Context মানে হলো কোনো Process/Thread-এর সেই execution state, যেটা save করে রাখলে পরে আবার ঠিক যেখানে থেমেছিল সেখান থেকে চালানো যাবে।

একটা Process-এর Context-এর মধ্যে সাধারণত থাকে:

  1. Program Counter (PC) → next instruction কোথায়
  2. CPU Registers → current register values

  3. Stack Pointer (SP)

  4. Processor status / flags

  5. Process state

  6. Memory mapping information

  7. Scheduling info

  8. Open file info (broader process state হিসেবে)

সহজ ভাষায়:

“একটা process এখন ঠিক কোন অবস্থায় আছে, CPU-তে কী কী মান loaded আছে, পরের instruction কোথায়—এসবের snapshot-ই context।”


3) Context Switching কী?

Context Switching হলো সেই OS operation যেখানে CPU বর্তমানে চলমান Process/Thread-এর state save করে, তারপর অন্য Process/Thread-এর saved state load করে তাকে execute করতে দেয়। 


4) Real-Life Analogy

ধরো তুমি ৩টা কাজ করছো:

  1. Math পড়া

  2. Go শেখা

  3. LinkedIn post লেখা

এখন তুমি Math করতে করতে হঠাৎ Go শেখায় গেলে, তারপর আবার Math-এ ফিরে এলে—Math-এ ঠিক কোথায় ছিলে সেটা মনে রাখতে হবে।

তাই তুমি bookmark রাখলে:

  1. কোন page-এ ছিলে
  2. কোন line-এ ছিলে

  3. কোন formula solve করছিলে

এটাই OS-এর ভাষায় context save করা।

তারপর Go শেখার bookmark load করলে → Go continue
আবার Math bookmark load করলে → Math continue

এই bookmark switching = Context Switching


5) Context Switching কেন দরকার?

কারণ 1: Multitasking

একটা CPU-তে অনেক Process/Thread চালাতে হয়।

যেমন একসাথে:

  1. Browser
  2. VS Code

  3. Music player

  4. Terminal

  5. OS background services

CPU যদি শুধু এক Process-কে ধরে রাখে, তাহলে অন্যরা চলতে পারবে না।


কারণ 2: Fair CPU Sharing

OS চায় CPU time সবাই ভাগাভাগি করে পাক।

যেমন Round Robin Scheduling-এ:

  1. P1 → 5 ms

  2. P2 → 5 ms

  3. P3 → 5 ms

এই process switching করতে context switch লাগে।


কারণ 3: Responsiveness

যদি একটা process I/O wait-এ যায় (যেমন disk read, network wait), CPU বসে থাকবে কেন?

OS তখন অন্য ready process-কে চালায়।


কারণ 4: Priority Handling

যদি high priority process ready হয়ে যায়, OS current process suspend করে high priority process চালাতে পারে।


6) PCB কী?

PCB = Process Control Block

PCB হলো Operating System kernel-এর একটি data structure, যেখানে প্রতিটি process সম্পর্কে প্রয়োজনীয় তথ্য রাখা হয়। 

সহজ ভাষায়:

PCB হলো Process-এর “identity card + execution snapshot + resource record”।

OS প্রতিটি process-এর জন্য একটি PCB তৈরি করে।


7) PCB কেন দরকার?

OS যদি কোনো process manage করতে চায়, তাহলে তাকে জানতে হবে:

  1. Process-এর PID কত
  2. Process ready/running/waiting কোন state-এ আছে

  3. CPU registers-এ কী ছিল

  4. Next instruction কোথায়

  5. কোন memory pages process-এর

  6. কোন file open আছে

  7. কত CPU time খরচ করেছে

  8. priority কত

এই সব তথ্য PCB-তে রাখা হয়।


8) PCB কোথায় থাকে?

PCB সাধারণত kernel memory-তে থাকে, user space-এ না। কারণ PCB খুব sensitive তথ্য ধারণ করে—যদি user process ইচ্ছামতো PCB modify করতে পারত, পুরো OS নষ্ট হয়ে যেত। 


9) PCB-তে কী কী থাকে?

একটা PCB-তে সাধারণত নিচের তথ্যগুলো থাকে:


9.1 Process ID (PID)

প্রতিটি process-এর একটি unique id থাকে।

উদাহরণ:

Chrome  -> PID 101
VSCode  -> PID 205
Go App  -> PID 310

OS PCB-তে PID রেখে process-কে uniquely identify করে।


9.2 Process State

Process কোন state-এ আছে:

  1. New

  2. Ready

  3. Running

  4. Waiting / Blocked

  5. Terminated

PCB-তে এই state রাখা হয়।


9.3 Program Counter (PC)

Program Counter বলে দেয়:

“পরের কোন instruction execute হবে?”

যদি process মাঝপথে থেমে যায়, পরে resume করতে হলে PC save করা বাধ্যতামূলক।


9.4 CPU Registers

CPU registers-এ current process-এর temporary working data থাকে।

যেমন:

  1. general purpose registers

  2. accumulator / index registers

  3. status register

  4. flags

Process switch হলে এগুলো save না করলে process resume করে ভুল জায়গা থেকে কাজ করবে।


9.5 Stack Pointer (SP)

বর্তমান stack-এর top কোথায় আছে সেটা SP বলে।

Function call, local variables, return address—সব stack-এর সাথে জড়িত।

Process resume করার জন্য stack pointer save করা জরুরি।


9.6 Scheduling Information

OS scheduler-এর জন্য দরকার:

  1. priority
  2. time quantum

  3. queue pointer

  4. CPU burst estimate

  5. arrival time / waiting time

এসব PCB-তে থাকে।


9.7 Memory Management Information

প্রতিটি process-এর memory map আলাদা হতে পারে।
তাই PCB-তে থাকতে পারে:

  1. base/limit info

  2. page table pointer

  3. segment table info

  4. virtual memory mapping info


9.8 I/O / Open File Information

একটি process কোন কোন file open করেছে, কোন I/O device ব্যবহার করছে, file descriptors কী—এসবও PCB-তে tracked থাকতে পারে। 


9.9 Accounting / Statistics

যেমন:

  1. CPU time used

  2. user id / group id

  3. memory usage

  4. job/account info

  5. start time


9.10 Parent / Child / Links

অনেক OS PCB-তে parent process, child process, linked queue pointers ইত্যাদিও রাখে।


10) PCB-এর Structure — Conceptual View

একটা simplified PCB কল্পনা করো:

+----------------------------------+
| Process Control Block (PCB)      |
+----------------------------------+
| PID                              |
| Process State                    |
| Program Counter                  |
| CPU Registers                    |
| Stack Pointer                    |
| Scheduling Info                  |
| Memory Management Info           |
| Open Files / I/O Status          |
| Accounting Info                  |
| Parent/Child/Queue Pointers      |
+----------------------------------+

11) Process Table কী?

OS সাধারণত সব active process-এর PCB-গুলো একটি process table বা related kernel structure-এ maintain করে। (GeeksforGeeks)

অর্থাৎ:

Process Table
   ├── PCB of Process 1
   ├── PCB of Process 2
   ├── PCB of Process 3
   └── ...

12) Context Switching এবং PCB-এর সম্পর্ক

এখন সবচেয়ে গুরুত্বপূর্ণ অংশ:

Context Switching করতে PCB কেন দরকার?

কারণ context switch-এর সময় running process-এর state কোথাও save করতে হবে।
সেই জায়গাটাই PCB।


13) Context Switching Step by Step

ধরো 2টা process আছে:

  1. P1

  2. P2

শুরুতে P1 চলছে।


Step 1: P1 Running

CPU এখন P1 execute করছে।

CPU registers-এ আছে P1-এর data:

  1. PC = next instruction of P1
  2. SP = stack position of P1
  3. registers = P1-এর working values

Step 2: Interrupt / Time Slice Expire / I/O Wait

হঠাৎ event হলো:

  1. timer interrupt

  2. higher priority process এসেছে

  3. P1 I/O wait-এ গেছে

  4. scheduler decide করল অন্য process run হবে

এখন context switch দরকার।


Step 3: CPU trap into kernel

CPU OS kernel mode-এ যায়, কারণ user process নিজে নিজে context switch করতে পারে না।


Step 4: Save current process state into PCB of P1

OS P1-এর context save করে:

  1. current PC
  2. CPU registers

  3. SP

  4. status flags

  5. process state

সব PCB(P1)-এ লিখে রাখে। (GeeksforGeeks)

অর্থাৎ:

CPU ----save----> PCB(P1)

Step 5: Update P1 state

যদি P1 time slice শেষ করে ready queue-তে যায়:

P1 state = READY

যদি I/O wait-এ যায়:

P1 state = WAITING

Step 6: Scheduler chooses next process

Scheduler ready queue থেকে P2 select করল।


Step 7: Load P2 state from PCB(P2)

এখন OS PCB(P2) থেকে P2-এর saved context load করবে:

  1. PC
  2. registers

  3. SP

  4. flags

PCB(P2) ----load----> CPU

Step 8: Update P2 state = RUNNING

P2 এখন Running।


Step 9: CPU resumes P2

CPU এখন P2-র ঠিক আগের saved instruction থেকে continue করবে।


14) পুরো Flow Diagram

P1 running
   |
   | (interrupt / quantum expire / I/O wait)
   v
Save P1 context into PCB(P1)
   |
   v
Scheduler selects P2
   |
   v
Load P2 context from PCB(P2)
   |
   v
P2 running

15) Example দিয়ে বোঝি

ধরো:

Process P1

কাজ করছে:

x = x + 1
y = y * 2

ধরো CPU registers-এ আছে:

R1 = x
R2 = y
PC = instruction #25
SP = 0xABC

এখন timer interrupt হলো।

OS save করল:

PCB(P1):
- PC = 25
- R1 = x value
- R2 = y value
- SP = 0xABC
- State = READY

তারপর P2 load করল।

পরে আবার P1 run করলে OS PCB(P1) থেকে এই মানগুলো CPU-তে ফেরত দেবে। তখন P1 ঠিক instruction #25 থেকে continue করবে।


16) Context Switch কখন হয়?

সাধারণত কয়েকটি ক্ষেত্রে:


16.1 Time Quantum Expire

Preemptive scheduling-এ একটা process নির্দিষ্ট সময় CPU ব্যবহার করতে পারে। সময় শেষ হলে switch।

উদাহরণ:

  1. Round Robin

16.2 I/O Request

Process যদি disk/network input-এর জন্য অপেক্ষা করে, CPU অন্য process-এ switch করবে।


16.3 Interrupt

যেমন:

  1. timer interrupt
  2. device interrupt


16.4 Higher Priority Process Arrives

Low priority process চলছিল, হঠাৎ high priority process ready হলো → preemption।


16.5 System Call / Blocking Event

কিছু system call process-কে block করতে পারে।


17) Context Switching কি শুধু Process-এর মধ্যে হয়?

না। দুইভাবে হতে পারে:

17.1 Process Context Switch

এক process থেকে আরেক process-এ switch।

এখানে সাধারণত বেশি overhead, কারণ:

  1. different address space
  2. memory mapping change

  3. process-level state বেশি


17.2 Thread Context Switch

একই process-এর thread A থেকে thread B-তে switch।

এটা তুলনামূলক lighter হতে পারে, কারণ threads অনেক resource share করে। 


18) Context Switch-এ ঠিক কী কী Save/Restore হয়?

সব OS/architecture-এ exact same না, কিন্তু সাধারণত:

Save হয়

  1. Program Counter

  2. Stack Pointer

  3. CPU registers

  4. Processor status word / flags

  5. scheduling/accounting info updates

  6. sometimes memory context reference

Restore হয়

  1. নতুন process/thread-এর Program Counter

  2. Stack Pointer

  3. Registers

  4. flags/status

  5. memory context if needed


19) Context Switching-এর Overhead কী?

Context switch overhead হলো সেই সময়/কাজ, যেটা CPU useful program work না করে কেবল switch করার জন্য ব্যয় করে।

অর্থাৎ এই সময় CPU আসলে তোমার application-এর business logic execute করছে না; শুধু old state save করছে, new state load করছে।


20) কেন Context Switching Costly?

কারণ এতে অনেক low-level কাজ হয়:

  1. kernel mode-এ যাওয়া

  2. registers save করা

  3. PCB update করা

  4. scheduler চালানো

  5. next process select করা

  6. next PCB থেকে registers load করা

  7. memory context switch হতে পারে

  8. cache/TLB effects হতে পারে


21) Context Switching-এর Performance Cost

21.1 CPU Time Loss

Switch করতে সময় লাগে, কিন্তু এই সময় useful কাজ হয় না।


21.2 Cache Pollution

P1 চলার সময় CPU cache-এ P1-এর data ছিল।
P2 এলে cache-এ নতুন data আসবে।
পরে P1 এলে আবার cache warm করতে হবে।


21.3 TLB Effects

Different process হলে address space change হতে পারে, ফলে TLB flush বা refill cost হতে পারে (architecture/OS dependent)।


21.4 Scheduler Overhead

কোন process run হবে সেটাও compute করতে হয়।


22) Context Switching-এর সুবিধা

22.1 Multitasking সম্ভব করে

এক CPU-তে অনেক process চালানো যায়।

22.2 CPU Utilization বাড়ায়

এক process wait করলে অন্য process run করে।

22.3 Responsiveness বাড়ায়

UI freeze কম হয়, interactive system responsive থাকে।

22.4 Fairness

সব process CPU time পায়।


23) Context Switching-এর অসুবিধা

23.1 Overhead

Useful কাজ ছাড়া সময় খরচ হয়।

23.2 Too Frequent Switching ক্ষতিকর

খুব বেশি switch হলে throughput কমে যায়।

23.3 Cache/TLB penalties

Performance degrade হতে পারে।


24) Process State Diagram-এর সাথে Context Switch

একটা process সাধারণত এই states-এর মধ্যে ঘোরে:

NEW -> READY -> RUNNING -> WAITING -> READY -> RUNNING -> TERMINATED

Context switch মূলত বেশি দেখা যায় যখন:

  1. RUNNING → READY
  2. RUNNING → WAITING

  3. READY → RUNNING


25) Example: Round Robin Scheduling + Context Switch

ধরো 3টা process আছে:

  1. P1

  2. P2

  3. P3

Time quantum = 4 ms

Execution:

Time 0-4   : P1
Time 4-8   : P2
Time 8-12  : P3
Time 12-16 : P1

এখানে 4 ms পরপর OS context switch করছে।

প্রতিবার:

  1. current process-এর PCB-তে context save
  2. next process-এর PCB থেকে context load


26) PCB Lifecycle

Process Create হলে কী হয়?

যখন process create হয়:

  1. OS PID assign করে

  2. memory allocate করে

  3. PCB create করে

  4. initial state set করে

  5. ready queue-তে পাঠায়


Process Running হলে

PCB continuously update হতে পারে:

  1. state change

  2. CPU time usage

  3. scheduling info

  4. open resources


Process Terminate হলে

PCB remove/cleanup করা হয়।


27) PCB-র গুরুত্বপূর্ণ Fields — Exam Style Table

Fieldকাজ
PIDProcess uniquely identify করে
Process Stateready/running/waiting/terminated state রাখে
Program Counternext instruction কোথায় execute হবে
CPU Registersresume করার জন্য register values
Stack Pointerstack-এর current top
Scheduling Infopriority, queue info, quantum
Memory Infopage table/base-limit/memory map
Open Files / I/Ofile descriptors, device status
Accounting InfoCPU time, usage stats
Parent/Link Pointersprocess relationship / queue linking

28) Context Switching — Exam Definition

তুমি exam-এ এভাবে লিখতে পারো:

Context Switching হলো Operating System-এর এমন একটি প্রক্রিয়া যেখানে CPU বর্তমানে চলমান process বা thread-এর execution state (যেমন program counter, registers, stack pointer ইত্যাদি) save করে এবং অন্য process/thread-এর saved state load করে তাকে CPU-তে execute করতে দেয়। এই state সাধারণত PCB/TCB-তে সংরক্ষিত থাকে।


29) PCB — Exam Definition

Process Control Block (PCB) হলো Operating System kernel-এর একটি data structure যেখানে একটি process সম্পর্কিত প্রয়োজনীয় তথ্য—যেমন process ID, process state, program counter, CPU registers, stack pointer, scheduling information, memory management information, open files ইত্যাদি—সংরক্ষিত থাকে। Context switching, scheduling এবং process management-এর জন্য PCB অত্যন্ত গুরুত্বপূর্ণ।


30) Context Switching + PCB — একসাথে Short Concept

Running Process-এর state কোথায় save হবে? -> PCB
পরে resume করতে কী লাগবে? -> PCB-তে saved context
OS switch কীভাবে করে? -> old PCB-তে save, new PCB থেকে load

31) Context Switching বনাম Dispatch Latency

এগুলো এক জিনিস না।

Context Switch

পুরনো process-এর state save + নতুন process-এর state load

Dispatch Latency

scheduler process select করার পর actual CPU control handover করতে যত delay হয়, সেই total delay/latency

এদের সম্পর্ক আছে, কিন্তু same না। (GeeksforGeeks)


32) Context Switching বনাম Swapping

Context Switching

CPU execution state switch

Swapping

Process memory-কে RAM ↔ disk move করা

দুটো আলাদা concept। 


33) Process Context Switch বনাম Thread Context Switch

বিষয়Process SwitchThread Switch
Switch between     Different processes      Threads
Address spaceDifferent হতে পারে     Same process হলে shared
Overheadবেশি    কম হতে পারে
PCB/TCBPCB heavy role     TCB বেশি relevant

34) খুব সহজ বাস্তব analogy

ধরো তুমি ৩টা subject পড়ছো:

  1. OS

  2. Go

  3. DBMS

প্রতিটি subject-এর জন্য তুমি একটা notebook page-এ লিখে রাখলে:

  1. কোন topic-এ ছিলে

  2. কোন page-এ ছিলে

  3. next কী পড়বে

এই notebook page = PCB

এক subject থেকে আরেক subject-এ যাওয়ার সময় bookmark save/load = Context Switch


35) Viva / Interview-এর জন্য গুরুত্বপূর্ণ প্রশ্নোত্তর

Q1) PCB কী?

PCB হলো process-এর সমস্ত management ও execution related তথ্য রাখার kernel data structure।


Q2) Context switch কী?

এক process/thread-এর CPU state save করে অন্য process/thread-এর state load করার প্রক্রিয়া।


Q3) Context switch-এর সময় কী save হয়?

Program counter, registers, stack pointer, flags, process state ইত্যাদি।


Q4) Context switch-এর সময় state কোথায় save হয়?

সাধারণত process-এর PCB-তে (thread হলে TCB-তে)।


Q5) PCB কেন দরকার?

Scheduling, process management, resource tracking, context switching, accounting—সবকিছুর জন্য।


Q6) Context switch overhead কেন?

কারণ save/restore, scheduling, kernel transition, cache/TLB impact—এসব useful app work না।


Q7) PCB user space-এ থাকে না কেন?

কারণ PCB sensitive kernel data; user modify করলে OS নিরাপত্তা ও stability নষ্ট হবে।


36) One-shot Revision

PCB মনে রাখো এভাবে:

PCB = Process-এর Full Record

এতে থাকে:

  1. PID

  2. State

  3. PC

  4. Registers

  5. SP

  6. Memory info

  7. Scheduling info

  8. I/O info


Context Switch মনে রাখো এভাবে:

Save old process context → choose next → load next context → resume


37) Final Summary

PCB কী?

PCB হলো OS kernel-এর একটি data structure যেখানে একটি process সম্পর্কিত execution state, scheduling info, memory info, registers, program counter, stack pointer, open files ইত্যাদি সংরক্ষিত থাকে। এটি process management-এর কেন্দ্রবিন্দু।

Context Switching কী?

Context Switching হলো CPU-র control এক process/thread থেকে অন্য process/thread-এ স্থানান্তর করার প্রক্রিয়া। এতে running task-এর context save করা হয় এবং next task-এর saved context load করা হয়। Multitasking, fairness, responsiveness এবং CPU utilization বজায় রাখতে এটি অপরিহার্য।

PCB এবং Context Switching-এর সম্পর্ক

Context switch সম্ভব হয় কারণ OS running process-এর context PCB-তে save করে এবং next process-এর context তার PCB থেকে restore করে।

Powered by Blogger.