4.2.7 · HinglishOperating Systems

Threads — user-level vs kernel-level, one-to-one, many-to-many

1,850 words8 min readRead in English

4.2.7 · Coding › Operating Systems


Hum threads chahte kyun hain?


Thread precisely kya hota hai?


Core distinction: thread ko manage kaun karta hai?

Property User-level (ULT) Kernel-level (KLT)
Managed by user library OS kernel
Context switch cost bahut sasta (koi trap nahi) mehnga (mode switch)
Blocking call blocks... whole process sirf woh thread
True multicore parallelism ❌ (1 kernel slot)
OS ke across portable ❌ (OS-specific)

Mapping models: ULTs ko KLTs se connect karna

Library user threads ko kernel threads par teen tarike se map kar sakti hai.

Figure — Threads — user-level vs kernel-level, one-to-one, many-to-many

Common Mistakes (Steel-manned)


Flashcards

Threaded process mein CPU scheduling ki unit kya hai?
Thread (har ek ka apna PC, registers, stack hota hai).
Sibling threads kya share karte hain aur kya private rakhte hain?
Share: code, data/heap, open files, address space. Private: stack, registers, PC, thread state.
User-level threads ko kaun schedule karta hai?
Ek user-space thread library; kernel sirf ek process dekhta hai.
Many-to-One mein, jab ek thread blocking system call kare toh kya hota hai?
Puri process block ho jaati hai (kernel sirf ek schedulable entity dekhta hai).
User-level thread switches kernel-level ones se saste kyun hote hain?
Koi mode switch / kernel mein trap nahi — switching sirf user-space bookkeeping hai.
Kaun sa mapping model sabse kam kernel overhead per user thread ke saath true multicore parallelism deta hai?
Many-to-Many (M:N).
Modern Linux pthreads aur Windows kaun sa model use karte hain?
One-to-One (1:1).
M:N mein m user aur n kernel threads ke saath n par constraint kya hai?
, aur ideally number of cores.
One-to-One ka main drawback kya hai?
Ek kernel thread (TCB) per user thread → kernel overhead thread count limit karta hai.
Threads ko synchronization kyun chahiye lekin alag processes ko mostly nahi?
Threads memory share karte hain (heap/globals) → race conditions.

Recall Feynman: ek 12-saal ke bachche ko samjhao

Ek kitchen imagine karo (process). Cooks threads hain — woh sab ek hi fridge, counter, aur ingredients share karte hain (shared memory), lekin har cook ka apna chota sa chopping board hota hai (stack). Ab, cooks ko kab kaam karna hai yeh kaun batata hai?

  • Agar kitchen ke andar head chef karta hai (user-level), toh poore restaurant ka manager (kernel) sochta hai ki kitchen sirf ek worker hai. Toh agar ek cook basement ke freezer mein jaake stuck ho jaaye (blocking call), manager sochta hai puri kitchen ruk gayi aur stove doosri kitchen ko de deta hai — chahe baaki cooks ready hon!
  • Agar restaurant manager har cook ko directly schedule kare (kernel-level), sirf stuck cook wait karta hai; baaki cooking karte rehte hain — aur woh kai stoves ek saath use kar sakte hain (cores). Lekin manager se har choti cheez ke liye poochna slow hai.
  • Many-to-Many: kuch cooks rakh lo jinhe manager jaanta ho, aur extra helpers ko woh slots share karne do — fast bhi aur poori kitchen freeze bhi nahi hoti.

Connections

  • Process vs Thread
  • Context Switching
  • CPU Scheduling
  • Race Conditions and Synchronization
  • System Calls and Mode Switch
  • Goroutines and M-N Scheduling
  • TLB and Address Space Switching

Concept Map

contains

owns private

shares

is unit of

managed by whom?

user library

OS kernel

blocking call blocks

cheap switch no trap

blocks only

mode switch

mapped via M:1

mapped via

Process shared space

Thread

Stack PC registers

Heap code files

CPU scheduling

Who schedules

User-level thread

Kernel-level thread

Whole process

Fast but no parallelism

That one thread

Costly but true parallelism

Many-to-One

One-to-One Many-to-Many