Blocking (computing)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
This article is about the computer process scheduling concept. For the input/output technique, see Block (data storage).

In computing, a process is an instance of a computer program that is being executed. A process always exists in exactly one process state. A process that is blocked is one that is waiting for some event, such as a resource becoming available or the completion of an I/O operation.[1]

In a multitasking computer system, individual tasks, or threads of execution, must share the resources of the system. These resources might be:

  • the CPU
  • network
  • memory
  • disk

When one task is using a resource, it is generally not possible, or desirable, for another task to access it. The techniques of mutual exclusion are used to prevent this concurrent use. When the other task is blocked, it is unable to execute until the first task has finished using the shared resource.

Programming languages and scheduling algorithms are designed to minimize this blocking, and to prevent the case of deadlock, where two or more tasks are blocked, waiting for a resource that the other holds.

Once the event occurs for which the process is waiting ("is blocked on"), the process is advanced from blocked state to an imminent one, such as runnable.

See also[edit]


  • Stallings, William (2004). Operating Systems: Internals and Design Principles (5th ed.). Prentice Hall.