43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
id: zadl
 | 
						|
title: Threads
 | 
						|
tags: [operating-systems]
 | 
						|
created: Wednesday, June 26, 2024
 | 
						|
---
 | 
						|
 | 
						|
# Threads
 | 
						|
 | 
						|
A  is a running instance of a given program. A program
 | 
						|
runs sequentially handling one task at a time, however we may need to run
 | 
						|
certain tasks in parallel.
 | 
						|
 | 
						|
Think of a program that is downloading a resource from the internet and wants to
 | 
						|
update the UI at the same time to show the download process.
 | 
						|
 | 
						|
If the program is strictly sequential, once the program starts the download, the
 | 
						|
UI is neglected since the CPU time dedicated to the process must be focused
 | 
						|
elsewhere.
 | 
						|
 | 
						|
We need the UI update and the download to execute in parallel. This is achieved
 | 
						|
via operating system **threads of execution**.
 | 
						|
 | 
						|
> A thread is a schedulable unit of execution within a process. It runs within a
 | 
						|
> process, shares its memory address and can execute any program code loaded
 | 
						|
> within it.
 | 
						|
 | 
						|
Each thread has an identifier called a _thread ID_ (TID).
 | 
						|
 | 
						|
Both procesess in [user space](User_Space.md) and the [kernel](The_kernel.md)
 | 
						|
utilise threads.
 | 
						|
 | 
						|
## Hardware considerations
 | 
						|
 | 
						|
Each [processor core](./CPU_architecture.md) can only run one thread at a time
 | 
						|
so the number of cores that a device's CPU has deterimines how many threads can
 | 
						|
run at once. In practice, then, the CPU shuffles between multiple threads in
 | 
						|
[clock segments](./Clock_signals.md). This is known as scheduling and is managed
 | 
						|
by the process that the thread belongs to.
 | 
						|
 | 
						|
## Related notes
 | 
						|
 | 
						|

 |