CMPT 880: Internet Architectures and Protocols
Download
Report
Transcript CMPT 880: Internet Architectures and Protocols
School of Computing Science
Simon Fraser University
CMPT 300: Operating Systems I
Ch 3: Processes
Dr. Mohamed Hefeeda
1
Objectives
Understand
Process concept
Process scheduling
Creating and terminating processes
Interprocess communication
2
Process Concept
Process is a program in execution
process execution must progress in sequential fashion
Note:
The terms job and process are interchangeable
A process includes:
program counter
stack
data section
3
Process in Memory
int global = 0;
int main (int arg)
{
float local;
char *ptr;
ptr = malloc(100);
local = 0;
local += 10*5;
…..
….
foo();
…. /* return addr */
….
return 0;
Local variables
Return address
Dynamically
allocated
Global variables
Program code
}
4
Process State
As process executes, it changes state
new: just created
running: instructions are being executed
waiting: process is waiting for some event to occur
ready: process is waiting for CPU
terminated: process has finished execution
5
Process Control Block (PCB)
OS maintains info about process in PCB
Process state
Program counter
CPU registers
CPU scheduling info
Memory-management info
Accounting info
I/O status info
PCB used to manage processes
E.g., to switch CPU from one process
to another
Typically, a large C structure in kernel
Linux: struct task_struct
6
CPU Switch From Process to Process
(Context Switch)
When switching
occurs, kernel
Saves state of P0
in PCB0 (in
memory)
Loads state of P1
from PCB1 into
registers
State = values of the
CPU registers,
including the
program counter,
stack pointer
7
Context Switch
Context-switch time is pure overhead; no
useful work is done
Switching time depends on hardware support
Some systems (Sun UltraSPARC) provide multiple
register sets very fast switching (just change a
pointer)
Typical systems, few milliseconds for switching
8
Job Types
Jobs (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
9
Scheduling: The Big Picture
Consider a large computer system to which
many jobs are submitted
Initially, jobs go to the secondary storage (disk)
Then, job scheduler chooses some of them to
go to memory (ready queue)
Then, CPU scheduler chooses from ready
queue a job to run on CPU
Medium-term scheduler may move (swap) some
partially-executed jobs from memory to disk (to
enhance performance)
10
Scheduling: The Big Picture (cont’d)
Midterm sched.
Jobs
Disk
Job sched.
CPU sched.
In most small and interactive systems (UNIX, WinXP, …),
only the CPU scheduler exists
11
Schedulers
Long-term scheduler (or job scheduler)
Selects which processes should be brought into
ready queue
Controls the degree of multiprogramming
Invoked infrequently (seconds, minutes)
• can be slow
Should maintain a ‘good mix’ of CPU-bound and I/Obound jobs in the system
12
Schedulers (cont’d)
Short-term scheduler (or CPU scheduler)
selects which process should be executed next and
allocates CPU to it
Short-term scheduler is invoked very frequently
(milliseconds)
• must be fast
Medium-term scheduler
Swaps processes in and out of ready queue to enhance
performance (i.e., maintain the good mix of jobs)
13
Scheduling Queues
Processes migrate
among various 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
14
Process Lifetime
15
Process Creation
Parent process creates children processes,
which, in turn may create other processes,
forming a tree of processes
Execution
Parent and children execute concurrently
Parent waits until children terminate
Resource sharing can take the form:
Parent and children share all resources
Children share subset of parent’s resources
Parent and children share no resources
16
Process Creation: Unix Example
Process creates another process (child) by using
fork system call
Child is a copy of the parent
Typically, child loads another program into its address
space using exec system call
Parent waits for its children to terminate
17
C Program Forking Separate Process
int main()
{
pid_t pid;
pid = fork(); /* fork another process */
if (pid < 0) { /* error occurred */
fprintf (stderr, “fork Failed");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp ("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for child to complete */
wait (NULL);
printf ("Child %d Completed“, pid);
exit(0);
Note: fork returns 0 to child and the pid of the new
}
}
process to parent.
18
A tree of processes on a typical Solaris
19
Process Termination
Process executes last statement and asks OS to
delete it (exit)
Process’ resources are de-allocated by OS
Output data from child to parent (via wait)
Parent may terminate execution of children
processes (abort)
Child has exceeded allocated resources
Task assigned to child is no longer required
If parent is exiting
• Some OSes do not allow child to continue if its parent
terminates
• All children of the children are terminated (cascad
termination)
20
Cooperating Processes
Cooperating process can affect or be affected by
the execution of another process
Why processes cooperate?
Information sharing
Computation speed-up
Modularity, Convenience
Interprocess Communication (IPC) methods
Shared memory
Message passing
21
Interprocess Communication Models
Message Passing
Shared Memory
22
IPC: Shared Memory
Processes communicate by creating a shared
place in memory
One process creates a shared memory—shmget()
Other processes attach shared memory to their own
address space—shmat()
Then, shared memory is treated as regular memory
Synchronization is needed to prevent concurrent
access to shared memory (conflicts)
Pros
Fast (memory speed)
Convenient to programmers (just regular memory)
Cons
Need to manage conflicts (tricky for distributed
systems)
23
IPC: Message Passing
If processes P and Q wish to communicate, they
need to:
establish a communication
exchange messages via:
• send (message) – message size fixed or variable
• receive (message)
Pros
No conflict easy to exchange messages especially
in distributed systems
Cons
Overhead (message headers)
Slow
• prepare messages
• Kernel involvement: sender kernel receiver
(several system calls)
24
IPC: Message Passing (cont’d)
Communication channel can be
Direct: Processes must name each other explicitly:
• send (P, message) – send a message to process P
• receive (Q, message) – receive a message from process
Q
Indirect: Processes communicate via mailboxes (or
ports)
• Messages are sent to and received from mailboxes
• Each mailbox has a unique id
– Send (A, message) – send a message to mailbox A
– Receive (A, message) – receive a message from
mailbox A
25
IPC: Message Passing (cont’d)
Synchronization: message passing is either
Blocking (or synchronous)
•
•
send () has sender block until message is received
receive () has receiver block until message is available
Non-blocking (or asynchronous)
•
•
send () has sender send message and continue
receive () has receiver receive a valid message or null
Buffering: Queue of messages attached to
communication channel
Zero capacity – Sender must wait for receiver
(rendezvous)
Bounded capacity – Sender must wait if link full
Unbounded capacity – Sender never waits
26
Summary
Process is a program in execution
OS maintains process info in PCB
Process State diagram
Creating and terminating processes (fork)
Process scheduling
Long-, short-, and medium-term schedulers
Scheduling queues
Interprocess communication
Shared memory
Message passing
27