What is a Process?
A process is a program in execution. Process is not as same as program code but a lot more than it. A process is an 'active' entity as opposed to program which is considered to be a 'passive' entity. Attributes held by process include hardware state, memory, CPU etc.
Process memory is divided into four sections for efficient working :
- The Text section is made up of the compiled program code, read in from non-volatile storage when the program is launched.
- The Data section is made up the global and static variables, allocated and initialized prior to executing the main.
- The Heap is used for the dynamic memory allocation, and is managed via calls to new, delete, malloc, free, etc.
- The Stack is used for local variables. Space on the stack is reserved for local variables when they are declared.
Different Process States
Processes in the operating system can be in any of the following states:
NEW- The process is being created.
READY- The process is waiting to be assigned to a processor.
RUNNING- Instructions are being executed.
WAITING- The process is waiting for some event to occur(such as an I/O completion or reception of a signal).
TERMINATED- The process has finished execution.
Process Control Block
There is a Process Control Block for each process, enclosing all the information about the process. It is a data structure, which contains the following:
- Process State: It can be running, waiting etc.
- Process ID and the parent process ID.
- CPU registers and Program Counter. Program Counter holds the address of the next instruction to be executed for that process.
- CPU Scheduling information: Such as priority information and pointers to scheduling queues.
- Memory Management information: For example, page tables or segment tables.
- Accounting information: The User and kernel CPU time consumed, account numbers, limits, etc.
- I/O Status information: Devices allocated, open file tables, etc.