A process is program in execution in a modern time-sharing computer. A process needs resources such as CPU, memory, and input-output devices. OS is responsible for creating, deleting, and maintaining process information.
Therefore, we can safely say the following things about the process:
- A process is an instance of a program in execution in a time-sharing computer.
- All processes are executed sequentially.
- A process may or may not call another process.
- A process is an ongoing activity of computer, defined by the program counter and data contents of processor registers.
Each process gets address space (virtual) which consists following:
- Stack address space
- Data address space
- Space for source code
See the figure below.
Stack Address space
The stack space is used for functions and system calls. The system calls are functions that belong to OS.
Data Address Space
A process will not execute unless all the required information is available. The process keeps both static and dynamic allocated variables in its data space.
Source Code Space
The source code section contains read-only code so that the process does not modify it. This address space contains only text information.
Many instances of a program mean multiple addresses will be created, one for each instance.
The operation on the process is:
- creating a new process
- terminating a process
Every time a new process is created it gets an ID. The getpid
() and getppid
() allows a process to get their process id. A process is created by OS as soon as a program is loaded into the memory. The OS provides the necessary resources for the process. The running process can change state and can be terminated using various system calls.
Creates a new child process which is a copy of the parent with a new pid. The child process gets its own pid, address space, but return different values.
The exec() runs a list of system calls and replaces the current process with a named program. The entire address space of the current process is replaced with a new program.
signal(), kill(), exit() and abort()
abort() terminates the process and claim the resources of the terminated process.
Process Control Block (PCB)
The OS represents a process with a process control block, also known as the task control block. It contains the following information about the process.
Process state – A process could be in any state after it is created such as new, ready,
Process ID – Every new process gets a unique number called process ID to uniquely identify the process.
Program Counter – It contains the address of the next instruction to be executed.
CPU Registers – When an interrupt occurs the current process state is saved, this allows the process to continue later.
CPU Scheduling information – The PCB contains process scheduling information in the form of process priority, a pointer to scheduling queue, and other process scheduling information.
Memory Management Information – Depending on the memory management technique, PCB contains information such as the address of base and limit registers, segments tables or page tables.
Accounting Information – This information includes CPU usage, account number, process number, and so on.
I/O Status – It includes a list of devices assigned to the process and list of open files, etc.
- Abraham Silberschatz, Peter B. Galvin, Greg Gagne (July 29, 2008) Operating System Concepts, 8 edn., : Wiley.
- Tanenbaum, Andrew S. (March 3, 2001) Modern Operating Systems, 2nd edn., : Prentice Hall.