Multithreading - aryanjoshi0823/5143-Operating-System GitHub Wiki
Multithreading is a technique where multiple threads within a single process execute concurrently. Each thread shares the process's resources, such as memory, data, and files, but operates independently.
For example, a web browser uses multithreading to handle multiple tasks simultaneously, such as rendering a webpage, downloading files, and running scripts.
Multithreading Models:
Operating systems implement multithreading using the following models:
1. Many-to-One Model:
- Description: Multiple user-level threads are mapped to a single kernel thread.
- Advantages:
- Simple and efficient to implement.
- Suitable for systems with limited kernel thread support.
- Disadvantages:
- One thread's blocking operation can block the entire process.
- Limited utilization of multi-core processors.
2. One-to-One Model:
- Description: Each user-level thread is mapped to a separate kernel thread.
- Advantages:
- Provides true concurrency.
- Allows threads to run on multiple cores simultaneously.
- Disadvantages:
- Higher overhead due to the creation of kernel threads.
- Limited scalability due to restrictions on the number of kernel threads.
3. Many-to-Many Model:
- Description: Multiple user-level threads are mapped to a smaller or equal number of kernel threads.
- Advantages:
- Combines the benefits of many-to-one and one-to-one models.
- Offers better resource utilization and scalability.
- Disadvantages: Complex implementation.
Applications of Multithreading:
- Web Servers: Handle multiple client requests simultaneously.
- Database Systems: Perform parallel queries and manage concurrent transactions.
- Gaming: Separate threads handle rendering, user input, and game logic for smoother performance.
- Real-Time Systems: Ensure responsiveness by allocating threads to time-sensitive tasks.
- Multimedia Applications: Stream audio, video, and process user input concurrently.