Difference between a Program, a Process, a Task and a Thread?

March 17th, 2010

What is a Program?

  • A program is an executable file residing on the disk (secondary storage) in a directory.
  • Hence, program is also termed as a set of instructions stored in the secondary storage device that are intended to carry out a specific job.
  • It is read into memory and executed by the kernel.
  • Therefore, a program is termed as a ‘passive entity’ which exists in the secondary storage even after the machine reboots.
  • Example:
    • On a Microsoft Windows® system: The ‘Calculator’ executable that is usually stored at “<drive>:\windows\system32\calc.exe”.
    • On a Linux system: The ‘ls’ binary that is normally stored at: “/bin/ls”.

What is a process?

  • An executing instance of a program is called a process.
  • Some operating systems use the term ‘task‘ to refer to  a program that is being executed.
  • A process is always stored in the main memory also termed as the primary memory or random access memory.
  • Therefore, a process is termed as an active entity. It disappears if the machine is rebooted.
  • Several process may be associated with a same program.
  • On a multiprocessor system, multiple processes can be executed in parallel.
  • On a uni-processor system, though true parallelism is not achieved, a process scheduling algorithm is applied and the processor is scheduled to execute each process one at a time yielding  an illusion of concurrency.
  • Example:
    • Executing multiple instances of the ‘Calculator’ program. Each of the instances are termed as a process.

What is a thread?

  • A thread is a subset of the process.
  • It is termed as a ‘lightweight process’, since it is similar to a real process but executes within the context of a process and shares the same resources allotted to the process by the kernel (See http://kquest.co.cc/2010/03/operating-system for more info on the term ‘kernel’).
  • Usually, a process has only one thread of control – one set of machine instructions executing at a time.
  • A process may also be made up of multiple threads of execution that execute instructions concurrently.
  • Multiple threads of control can exploit the true parallelism possible on multiprocessor systems.
  • On a uni-processor system, a thread scheduling algorithm is applied and the processor is scheduled to run each thread one at a time.
  • All the threads running within a process share the same address space, file descriptor, stack and other process related attributes.
  • Since the threads of a process share the same memory, synchronizing the access to the shared data withing the process gains unprecedented importance.

Related posts:

  1. What is an Operating System?
  2. System Call v/s Library function

Leave a Reply