Saving and restoring program state for called functions (including general purpose registers and return address) Obtaining local memory on the stack Initializing local variables at the start of a program or function Freeing local memory on the stack on exit from a function Garbage collection Data conversion Backup and/or removal of un-needed files and software Execution of disk maintenance utilities (e.g. ScanDisk, hard drive defragmenters, virus scanners)