Windows Process and Thread Management
We begin with an overview of the key objects and mechanisms that support application execution in Windows. Note that Windows is an object-oriented environment, as we will be referring to objects quite often.
- An application consists of one or more processes. Each process provides the resources needed to execute a program.
- A thread is the entity within a process that can be scheduled for execution.
- A job object allows groups of processes to be managed as a unit.
- A thread pool is a collection of worker threads that efficiently execute asynchronous callbacks on behalf of the application.
- A fiber is a unit of execution that must be manually scheduled by the application.
- User-mode scheduling (UMS) is a lightweight mechanism that applications can use to schedule their own threads.
In Windows, it primarily works on KLTs, but we also could have some ULTs, which we would need user-mode scheduling mechanisms.
The Windows Process
Important characteristics of Windows processes are the following:
- Windows processes are implemented as objects.
- A process can be created as a new process or as a copy of an existing process.
- An executable process may contain one or more threads.
- Both process and thread objects have built-in synchronization capabilities.
The following could be illustrated the way in which a process relates to the resources it controls or uses.

Figure 4.10 A Windows process and its resources.
<aside>
<img src="/icons/map-pin_gray.svg" alt="/icons/map-pin_gray.svg" width="40px" /> You don’t necessarily have to memorize this figure, it is intended as a review. Just be familiar that when it comes to Windows, everything that we deal with as a process, is as if we’re dealing with an object.
</aside>