.. _glossary: ********** Glossary ********** .. :sorted: .. glossary:: classic process A :term:`process` with only one thread. context switch Switching from running a user level process to the OS kernel and often to other user processes before the current process is resumed. See :ref:`switch` CPU scheduling Determine which process in memory is executed by the CPU at any given point. critical section A portion of a program that modifies a shared resources. If other processes or threads also modify the shared resource at the same time, data inconsistencies could occur. .. seealso:: :ref:`race_condition` deadlock The condition where two or more processes are not able to continue because they are waiting on each other to either release a resource or do something, but that will not happen because they are waiting on the other. demand paging A virtual memory management scheme where the pages of process are loaded only as they are needed. logical address The memory address used internally within each process. This address space is contiguous and usually begins at zero and can extend to the largest address allowed (4GB for 32 bit systems). Also called :term:`virtual address`. memory management Keeping track of what programs are in memory and where in memory they reside. monitor An abstract data type for which only one process/thread may be executing of of its member procedures at any given time. multiprogramming The technique of keeping multiple programs in main memory at the same time. These programs compete for access to the CPU so that they can execute mutual exclusion Allowing only one process to access a :term:`critical section` at one time. page fault A CPU generated trap occuring a referenced physical memory frame is not currently loaded in physical memory. process An instance of a program in execution. A thread may contain one or more :term:`thread`. process management Keeping track the progress of processes and all of their intermediate states. process control block A data structure in the OS kernel's memory holding all data that the OS needs about a process. All of the process control blocks are kept in an array indexed by the PID for each process. See :ref:`switch`, :ref:`pcb`. process scheduling The act of determining which process in the ready state should be moved to the running state. That is, decide which :term:`process` should run on the CPU next. physical address The memory address used to locate data in the computer's physical memory banks. race condition When correct execution depends on the timing of processes or threads running a :term:`critical section` of code. semaphore A fundamental locking mechanism that can be used to allow a varied number (1 is the default) of processes or threads access to a :term:`critical section`. starvation When a lower priority item is unfairly delayed by higher priority items that arrive later. This can occur in both :ref:`scheduler` and disk scheduling. system call A request from an application program for the operating system to perform some hardware action on behalf of the application. System calls are initiated with a software interrupt assembly language instruction. The argument to the interrupt instruction is a number, which corresponds to the index of an array in the OS kernel with pointers to the functions that provide the requested service. .. seealso:: :ref:`system_calls` thread The basic unit to which the operating system allocates processor time. A thread can execute any part of the :term:`process` code, including parts currently being executed by another thread. virtual address See :term:`logical address`. virtual machine The allusion provided to each process that they are the only process running on the computer. virtual memory Memory on a secondary storage device, such as a hard drive or solid state drive, that augments the computer's physical radom access memory. Virtual memory is used to give the computer users the benefit of more memory than is physically present in the computer.