In a typical operating system, a process represents a program in execution along with associated system resources, which may be physical (such as processor cycles and memory) or abstract[1] (such as the number of files the process can open). The kernel provides an illusion of concurrent execution by scheduling resources between ready-to-run processes. On a multiprocessor or multicore system, more than one process may execute truly concurrently.
In their landmark 1965 paper,[2] Jack B. Dennis and Earl C. Van Horn defined a process as a "locus of control within an instruction sequence . . . an abstract entity which moves through the instructions of a procedure as the procedure is executed by a processor."
In earlier chapters, we saw that the Mac OS X kernel divides the traditional process abstraction into multiple related abstractions. In this chapter, we will look at both kernel-level and user-level details of the Mac OS X process subsystem. |