Uploaded by moincebd

lecture 8 processmanagement

advertisement
Process management
 Information maintained by OS for process
management
 process context

process control block
 OS virtualization of CPU for each process.

Context switching
 Dispatching loop
Process

a program in execution

We should know about processes by now.
How does the OS correctly run multiple
processes concurrently?

What kind of information to be kept?
 What does the OS have to do in order to run
processes correctly.

Process context
MAX
stack

Contains all states
necessary to run a
program

The information the
process needs to do
the job: code, data,
stack, heap.

heap
data
This is known as User
level context.
text (code)
0
Process in memory
User level contextMAX
…
int aa;
char buf[1000];
void foo() {
int a;
…
}
main() {
int b;
char *p;
p = new char[1000];
foo();
}
(b, *p) - main
(a) - foo
heap (p)
(char[1000])
data (aa, buf)
text (code)
0
Process memory
stack
Process context

Contains all states
necessary to run a
program

Is the user level
context sufficient?


Only if the system runs
through one program at
a time
The system typically
needs to switch back
and forth between
programs.
P1
P2
R0 = 1
R0 = 2
R2 = R0 + 1
R2 = R0
• R2 in P1 is wrong. How to make
It correct?
• Save R0 in P1 before switching
• Restore R0 in P1 when switching
from P2 to P1.
• Registers should be a part of process
context: the register context!

Process context:

User level context



Code, data, stack, heap
Register context (R0, R1,…, PC, stack
pointer, PSW, etc).
What else?

OS resources. E.g open files, signal related
data structures, etc.
Why is process context
important?

To run a process correctly, the process
instructions must be executed within
the process context!

Where is the process context stored?




User level context is in memory.
Other context information is stored in a data
structure called process control block.
The OS has a process control block table. For
each process, there is one entry in the table.
Process control block also contains other
information that the OS needs to manage the
processes.



Process status (running, waiting, etc)
Process priority
……
An example PCB
Figure 3.3
OS CPU abstraction

Hardware reality:


One CPU runs the fetchexecute algorithm
OS abstraction:


Each process has one
CPU, running the fetchexecute algorithm for the
process.
Each process executes
within its context.
Load PC;
IR = MEM[PC];
While (IR != HALT) {
PC ++;
Execute IR;
IR = MEM[PC];
}
OS CPU abstraction

What does the OS have to do?

Embed the process instruction sequence
into hardware instruction sequence.
Process X instructions: x0, x1, x2, ….
Process Y instructions: y0, y1, y2, …
Process Z instructions: z0, z1, z2, …
Hardware instructions? x0, x1, x2, y0, y1, y2, z0, z1, z2, x3, x4, x5, …
Does this embedding work?
No!! Instructions in a process should only
be executed within the process’s context to be correct.
OS CPU abstraction
Process X instructions: x0, x1, x2, ….
Process Y instructions: y0, y1, y2, …
Process Z instructions: z0, z1, z2, …
x0, x1, x2, [store X’s context], [restore Y’s context] y0, y1, y2…
OS must do this to keep programs execute
within its context: Context switching
Dispatching Loop

The hardware view of the system
execution: dispatching loop

LOOP


Context

Switch:
Dispatcher 
code
Run process
Save process states
Choose a new process to run
Load states for the chosen process
Scheduling
Simple? Not Quite…



How does the dispatcher (OS) regain
control after a process starts running?
What states should a process save?
How does the dispatcher choose the
next thread?
How Does the Dispatcher
Regain Control?

Two ways:
1.
Internal events



2.
A process is waiting for I/O
A process is waiting for some other process
Yield—a process gives up CPU voluntarily
External events


Interrupts—a complete disk request
Timer—it’s like an alarm clock
What States Should a process
save?

Anything that the next process may
trash



Program counter
Registers
Etc.
How Does the Dispatcher
Choose the Next process?


The dispatcher keeps a list of
processes that are ready to run
If no processes are ready


Dispatcher just loops
Otherwise, the dispatcher uses a
scheduling algorithm to find the next
process.
Process States

A process is typically in one of the
three states
1.
2.
3.
Running: has the CPU
Blocked: waiting for I/O or another
thread
Ready to run: on the ready list, waiting
for the CPU
Figure 3.2
Download