Process Concept
A process is an instance of a
program in execution.
The Process
- Process
memory is divided into four sections :
- The text section comprises
the compiled program code, read in from non-volatile storage when the
program is launched.
- The data section stores
global and static variables, allocated and initialized prior to executing
main.
- The heap is used for
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 ( at function entrance or elsewhere, depending on the
language ), and the space is freed up when the variables go out of scope.
- When
processes are swapped out of memory and later restored, additional
information must also be stored and restored. Key among them are the
program counter and the value of all program registers.
Process State
- Processes
may be in one of 5 states, as shown in Figure 3.2 below.
- New -
The process is in the stage of being created.
- Ready - The
process has all the resources available that it needs to run, but the CPU
is not currently working on this process's instructions.
- Running - The CPU
is working on this process's instructions.
- Waiting -
The process cannot run at the moment, because it is waiting for some
resource to become available or for some event to occur. For example the
process may be waiting for keyboard input, disk access request,
inter-process messages, a timer to go off, or a child process to finish.
- Terminated
- The
process has completed.
Process Control
Block
For each process there is a
Process Control Block, PCB, which stores the following process-specific
information
- Process State - Running, waiting,
etc., as discussed above.
- Process ID, and parent process ID.
- CPU registers and Program Counter -
These need to be saved and restored when swapping processes in and out of
the CPU.
- CPU-Scheduling information -
Such as priority information and pointers to scheduling queues.
- Memory-Management information -
E.g. page tables or segment tables.
- Accounting information -
user and kernel CPU time consumed, account numbers, limits, etc.
- I/O Status information -
Devices allocated, open file tables, etc.
Threads
Modern systems allow a single
process to have multiple threads of execution, which execute concurrently.
No comments:
Post a Comment