Thread (computing): Difference between revisions

Content deleted Content added
Kernel threads: That just links back here.
Line 29:
===Kernel threads===
{{anchor|kernel thread}}
A ''kernel thread'' is a "lightweight" unit of kernel scheduling. At least one kernel thread exists within each process. If multiple kernel threads exist within a process, then they share the same memory and file resources. Kernel threads are preemptively multitasked if the operating system's process [[Scheduling (computing)|scheduler]] is preemptive. Kernel threads do not own resources except for a [[call stack|stack]], a copy of the [[processor register|registers]] including the [[program counter]], and [[thread-local storage]] (if any), and are thus relatively cheap to create and destroy. Thread switching is also relatively cheap: it requires a context switch (saving and restoring registers and stack pointer), but does not change virtual memory and is thus cache-friendly (leaving TLB valid). The kernel can assign one or more [[software thread|software threads]] to each core in a CPU (it being able to assign itself multiple software threads depending on its support for multithreading), and can swap out threads that get blocked. However, kernel threads take much longer than user threads to be swapped.
 
===User threads===