ProcessAccounting describes generally the ''resource distribution'' within a software system, where a 'resource' is any precious and limited commodity that can be distributed. Example resources: CPU time, HDD space, RAM. For a laptop, one might also add power and energy consumption, and heat production. Within a POSIX or Windows OS, one might need to add File Handles to that list. A goal for ProcessAccounting is to achieve it ''without'' sacrificing safety, performance, or security. Performance is sacrificed if resources are under-utilized because they are being "reserved". Safety is sacrificed if resources are unavailable when required, or if they can be revoked without well-defined revocation behavior on part of the process from which the resource was revoked. Security is sacrificed if process A can delay process B to a degree that service B is effectively denied without having ''authority'' to do so, as might happen if process A holds a lock upon which process B is waiting. These contentious forces make ProcessAccounting one of the huge, untamed frontiers for possibly massive improvements in ComputerScience. A good design for ProcessAccounting would help with: * RealTime programming - programs that have an upper-bound on time to achieve certain behaviors. * Well-timed programs - programs that have a lower-bound on time to achieve or begin certain behaviors (i.e. multi-media programs, actuation programs) * Embedded systems - systems that have tightly managed memory resources * Safety-critical systems - i.e. medical devices, sensors and actuation for vehicles (i.e. anti-lock breaks) * Multi-user systems - i.e. shared multi-user OperatingSystem''''''s, or open distributed programming languages. Existing designs involve: * priority specifications - for resources that can be safely revoked (like CPU time), priority specification allows a process with higher priority to control the resource or to have a larger slice of it. * quotas - upper-limits on resources "held" by particular processes. This one runs into many challenges, such as the possibility that multiple processes share or partake of a resource, and the issue of what to do when the quota is reached (crash? that's not safe). * reservation - ensuring that a resource will be available or will be offered for some time-slot in the future. Reservation often runs into performance challenges. Related to ProcessAccounting is SystemAdministration, which determines which process-configurations are running and policies for distributing resources to them.