┌───────────────────────────────┐ ┌───────────────────────────────┐
│ User Process │ │ User Process │
│ ┌───────────────┐ │ │ ┌───────────────┐ │
│ │ User-level │ │ │ │ Kernel-level │ │
│ │ Threads (many)│ │ │ │ Threads (many)│ │
│ └───────────────┘ │ │ └───────────────┘ │
│ │ │ │ │ │
│ ▼ │ │ ▼ │
│ ┌─────────────────────────┐ │ │ ┌─────────────────────────┐ │
│ │ Single Thread to Kernel │ │ │ │ Multiple Threads to Kernel│ │
│ │ (OS sees one thread) │ │ │ │ (OS schedules each thread)│ │
│ └─────────────────────────┘ │ │ └─────────────────────────┘ │
└───────────────────────────────┘ └───────────────────────────────┘
This diagram shows how user-level threads are managed inside a process invisible to the OS, while kernel-level threads are individually managed by the OS.