Introduction of Process Management
Program vs Process: A process is a program in execution. For example,
when we write a program in C or C++ and compile it, the compiler creates
binary code. The original code and binary code are both programs. When we
actually run the binary code, it becomes a process.
A process is an ‘active’ entity instead of a program, which is considered a
‘passive’ entity. A single program can create many processes when run
multiple times; for example, when we open a .exe or binary file multiple
times, multiple instances begin (multiple processes are created).
Process Management
If operating system supports multiple users than services under this are very
important . In this regard operating systems has to keep track of all the
completing processes , Schedule them, dispatch them one after another. But
user should feel that he has the full control of the CPU.
some of the systems calls in this category are as follows.
1. create a child process identical to the parent.
2. Terminate a process
3. Wait for a child process to terminate
4. Change the priority of process
5. Block the process
6. Ready the process
7. Dispatch a process
8. Suspend a process
9. Resume a process
10. Delay a process
11. Fork a process
What does a process look like in memory?
Text Section: A Process, sometimes known as the Text Section,
also includes the current activity represented by the value of
the Program Counter.
Stack: The stack contains temporary data, such as function
parameters, returns addresses, and local variables.
Data Section: Contains the global variable.
Heap Section: Dynamically allocated memory to process during its
run time.
Attributes or Characteristics of a Process: A process has the
following attributes.
1. Process Id: A unique identifier assigned by the
operating system
2. Process State: Can be ready, running, etc.
3. CPU registers: Like the Program Counter (CPU registers must
be saved and
restored when a process is swapped in and
out of CPU)
4. Accounts information: Amount of CPU used for process
execution, time limits, execution ID etc
5. I/O status information: For example, devices allocated to
the process,
open files, etc
6. CPU scheduling information: For example, Priority
(Different processes
may have different priorities,
for example
a shorter process assigned high
priority
in the shortest job first
scheduling)
All of the above attributes of a process are also known as the context
of the process. Every process has its own process control
block(PCB), i.e each process will have a unique PCB. All of the above
attributes are part of the PCB.
States of Process: A process is in one of the following states:
1. New: Newly Created Process (or) being-created process.
2. Ready: After creation process moves to Ready state, i.e.
the
process is ready for execution.
3. Run: Currently running process in CPU (only one process at
a time can be under execution in a single processor).
4. Wait (or Block): When a process requests I/O access.
5. Complete (or Terminated): The process completed its
execution.
6. Suspended Ready: When the ready queue becomes full, some
processes
are moved to suspended ready state
7. Suspended Block: When waiting queue becomes full.
Context Switching: The process of saving the context of one process
and loading the context of another process is known as Context
Switching. In simple terms, it is like loading and unloading the process
from the running state to the ready state.
When does context switching happen?
1. When a high-priority process comes to a ready state (i.e. with higher
priority than the running process)
2. An Interrupt occurs
3. User and kernel-mode switch (It is not necessary though)
4. Preemptive CPU scheduling used.
Context Switch vs Mode Switch: A mode switch occurs when the
CPU privilege level is changed, for example when a system call is
made or a fault occurs. The kernel works in more a privileged mode
than a standard user task. If a user process wants to access things
that are only accessible to the kernel, a mode switch must occur. The
currently executing process need not be changed during a mode
switch.
A mode switch typically occurs for a process context switch to occur.
Only the kernel can cause a context switch.
CPU-Bound vs I/O-Bound Processes: A CPU-bound process
requires more CPU time or spends more time in the running state.
An I/O-bound process requires more I/O time and less CPU time. An
I/O-bound process spends more time in the waiting state.