Programs such as ps, top, and free must have some way to obtain information from the kernel about a processes and system resources. Similarly, debuggers and other like tools need the ability to control and inspect a running process. These features have been provided by a number of interfaces by different versions of UNIX, and nearly all of them are either machine-specific or tied to a particular kernel design. So far, there has been no universally-accepted interface for this kind of process-kernel interaction.