The operating system owns the daemon programs discussed in the previous section
A Couple of Processes. These daemons perform a variety of activities, from managing computer resources to providing standard services such as printing.
While operating systems can have many independently executing components, a program can as well, accomplished in various ways. One programming model splits the work off into somewhat independent tasks within the same process. This is the
threads model.
Figure 19 also shows the daemon processes that are executing. (The figures in the rest of this chapter won’t show these daemons.)
In this computing model, a program (the main thread) creates threads. If they need to, these newly created threads can also create threads. Each thread executes relatively independently from other threads. You can, of course, program them to share data and to synchronize how they execute.
The debugging issue here is similar to the problem of processes running on different machines. In both, a debugger must intervene with more than one executing entity, having to understand multiple address spaces and multiple contexts.