Title: Processes:%20program%20 %20execution%20state
1- Processes program execution state
- Pseudoparallelism
- Multiprogramming
- Many processes active at once
- With switching
- process execution is not repeatable
- processes should make no assumptions about timing
- Process consists of
- Process core image program, data, run-time
stack - Program counter, registers, stack pointer
- OS bookkeeping information
2Process State
- As a process executes, it changes state
- new The process is being created.
- running Instructions are being executed.
- waiting The process is waiting for some event
to occur. - ready The process is waiting to be assigned to
a process. - terminated The process has finished execution.
3Diagram of Process State
4Diagram of Process State
X
5Diagram of Process State
X
X
6Diagram of Process State
X
X
X
7Process-Centered Operating System
- One way to view system a scheduler, with
processes running on top - Some of the processes are system processes
8Process Table
One entry per process.
Pr 0 Pr 1 Pr 2 Pr 4 ..Pr N
9PCB Process Management
- registers, program counter, program status word,
stack pointer - process state
- time process started, CPU time used, childrens
CPU time used - alarm clock setting
- pending signal bits
- pid
- message queue pointers, other flag bits
10PCB Memory-Related Information
- pointers to
- text
- Data
- stack segments
- Pointer to page table
11PCB File-Related Information
- root, working directory
- file descriptors
- User ID
- Group ID
12Process Control Block (PCB)
13Context Switch (or Process Switch)
- Currently executing process looses control of CPU
- Its context must be saved (if not terminated)
into PCS. - New process is chosen for execution.
- New process context is restored.
- New process is given control of the CPU.
14CPU Switch From Process to Process
15Process Scheduling Queues
- Job queue set of all processes in the system.
- Ready queue set of all processes residing in
main memory, ready and waiting to execute. - Device queues set of processes waiting for an
I/O device. - Process migration between the various queues.
16Ready Queue And Various I/O Device Queues
17Representation of Process Scheduling
18Low Level Interrupt Processing
- Each HW device has slot in interrupt vector (IV).
- On interrupt, HW pushes PC, PSW, one or more
registers. - Loads in new PC from IV.
- END OF HW
- Assembly code to save registers and info on stack
(to PCB). - Assembly sets up new stack for handling process.
- Calls C interrupt handling routing to complete
interrupt processing. - Scheduler is called and determines next process
to run. - Assembly language restores registers and other
necessary items (e.g., memory map) of selected
process and begins its execution.
19Schedulers
- Long-term scheduler (or job scheduler) selects
which processes should be brought into the ready
queue. - Short-term scheduler (or CPU scheduler) selects
which process should be executed next and
allocates CPU.
20Schedulers (Cont.)
- Short-term scheduler is invoked very frequently
(milliseconds) ? (must be fast). - Long-term scheduler is invoked very infrequently
(seconds, minutes) ? (may be slow). - The long-term scheduler controls the degree of
multiprogramming.
21Schedulers (Cont.)
- Processes can be described as either
- I/O-bound process spends more time doing I/O
than computations, many short CPU bursts. - CPU-bound process spends more time doing
computations few very long CPU bursts.
22Context Switch
- When CPU switches to another process, the system
must save the state of the old process and load
the saved state for the new process. - Context-switch time is overhead the system does
no useful work while switching. - Time dependent on hardware support.
23Process Creation
- Parent process create children processes, which,
in turn create other processes, forming a tree of
processes. - Resource sharing
- Parent and children share all resources.
- Children share subset of parents resources.
- Parent and child share no resources.
- Execution
- Parent and children execute concurrently.
- Parent waits until children terminate.
24Process Creation (Cont.)
- Address space
- Child duplicate of parent.
- Child has a program loaded into it.
- UNIX examples
- fork system call creates new process
- exec system call used after a fork to replace the
process memory space with a new program.
25Unix Fork()
include ltstdio.hgt main(int argc, char argv)
int pid, j j 10 pid fork()
if (pid 0) /I am the child/ Do child
things else / I am the parent
/ wait(NULL) / Block execution until
child terminates /
26(No Transcript)
27fork()
28Processes Tree on a UNIX System
29exec Function calls
- Used to begin a processes execution.
-
- Accomplished by overwriting process imaged of
caller with that of called. - Several flavors, use the one most suited to
needs. - int execv( char path, char argvec)
30exec Function calls
- int execv( char path, char argvec)
- pathname Can be an executable program in your
directory (application code) or a system program
such as ls, cd, date, .. - argvec Pointers to NULL terminated strings.
- First element should always be the name of the
- program, last element should always be NULL.
- Assume a.out b.out x.exe. By.by all in home
directory.
31main (int argc, argv) int pid char
args2 pid fork() if (pid 0)
args0 ./a.out All executed by
args1 NULL child process
execv(./aout, args) printf(OOOpppssss.\n)
else printf(Not a problem!\n)
Executed by parent
32Process Termination
- Process executes last statement and asks the
operating system to decide it (exit). - Output data from child to parent (via wait).
- Process resources are deallocated by operating
system.
33Process Termination
- Parent may terminate execution of children
processes (abort). - Child has exceeded allocated resources.
- Task assigned to child is no longer required.
- Parent is exiting.
- Operating system does not allow child to continue
if its parent terminates. - Cascading termination.
34Cooperating Processes
- Independent process cannot affect or be affected
by the execution of another process. - Cooperating process can affect or be affected by
the execution of another process - Advantages of process cooperation
- Information sharing
- Computation speed-up
- Modularity
- Convenience
35Producer-Consumer Problem
- Paradigm for cooperating processes, producer
process produces information that is consumed by
a consumer process. - unbounded-buffer places no practical limit on the
size of the buffer. - bounded-buffer assumes that there is a fixed
buffer size.
36Constraints
- Do not over-write an item not yet consumed.
- Do not write to a full buffer
- Do not read from a previously read item.
- Do not read from an empty buffer.
37Bounded-Buffer Shared-Memory Solution
- Shared data
- define BUFFER_SIZE 10
- Typedef struct
- . . .
- item
- item bufferBUFFER_SIZE
- int in 0
- int out 0
38Bounded-Buffer Producer Process
- item nextProduced
- while (1)
- while (((in 1) BUFFER_SIZE) out)
- / do nothing /
- bufferin nextProduced
- in (in 1) BUFFER_SIZE
-
39Bounded-Buffer Consumer Process
- item nextConsumed
- while (1)
- while (in out)
- / do nothing /
- nextConsumed bufferout
- out (out 1) BUFFER_SIZE
-
-
40Producer
while (((in 1) BUFFER_SIZE) out)
Consumer Blocked
while (in out)
out
in
41Producer Blocked
while (((in 1) BUFFER_SIZE) out)
Consumer
while (in out)
O
O
O
O
O
42Producer
while (((in 1) BUFFER_SIZE) out)
Consumer Blocked
while (in out)
X X X X X
43Medium Term Scheduling