1
Chapter 3:  Processes
Process Concept
Process Scheduling
Operations on Processes
Cooperating Processes
Interprocess Communication
Communication in Client-Server Systems
2
Process Management
A program in a computer system is know as:
Batch system – job
Time-shared systems – user program or task or process
The terms job and process and task is almost interchangeable.
Process – “a program in execution”;  “unit of work in a timesharing system”. A program must reside in memory in order torun
Program (passive) VS. Process (active).  A process needscertain resources, including CPU time, memory, files, andI/O devices, to accomplish its task.
Several processes can run the same program at the sametime.
In what condition this can happen?
3
Process Concept
The operating system is responsible for the followingactivities in connection with process management.
Process creation and deletion.
Providing identity for the process
process suspension and resumption.
To balance the work load of the system
Provision of mechanisms for:
process synchronization
process communication
4
ProcessesThe Process Model
Multiprogramming of four programs
Conceptual model of 4 independent, sequential processes
Only one program active at any instant
C:\B\b4\JPG\foo\2-1.jpg
5
Process State
As a process executes, it changes state
new:  The process is being created.
Resources are allocated by OS
running:  Instructions are being executed.
Only one process is in this state (in uni-processor system)
waiting:  The process is waiting for some event to occur.
I/O operation or OS events
ready:  The process is waiting to be assigned to a CPU.
Different queue scheduling exist
terminated:  The process has finished execution.
Resources are reclaimed by OS
6
Diagram of Process State
Queue of jobs
Queue of procs
Queues of procs
7
Process Control Block (PCB)Process Identity
What are the contents of the PCB?
Registers:
ACC, Stack, Index
General purpose,
Flags (PSW)
8
Process Control Block (PCB)
Information associated with each process. A PCB is theidentity of a process.
Process state
Process id
Program counter
CPU registers
CPU scheduling information
Memory-management information
Accounting information
I/O status information
9
Details of PCB used forImplementation of Processes
Fields of a process table entry
10
CPU Switch From Process to Process
Cpu scheduler
For interrupt
11
Process 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.
12
Ready Queue And Various I/O Device Queues
Ready
queue
Device
Queues:
processes
are waiting
to be
signaled
13
Representation of ProcessScheduling
Cause of releasing
CPU by process
Signal is generated by
14
Schedulers
Long-term scheduler (or job scheduler) – selects whichprocesses should be brought into the ready queue, tobalance between I/O-bound and CPU-bound processes
Short-term scheduler (or CPU scheduler) – selects whichprocess should be executed next and allocates CPU
Fairness; priority
Medium-term scheduler – swaps the processes In and outbetween memory and swap-device in response to thechange of characteristics of the processes in usingmemory or I/O devices.
15
Addition of Medium TermScheduling
16
Schedulers (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 ofmultiprogramming.
Processes can be described as either:
I/O-bound process – spends more time doing I/O thancomputations, many short CPU bursts.
CPU-bound process – spends more time doing computations; fewvery long CPU bursts.
What happens if all processes are I/O-bound? Or CPU-bound?
Process SuspensionAuxiliary Slides from theStallings Book
17
18
A tree of processes on a typicalSolaris
19
Context Switch
When CPU switches to another process, the system mustsave the state of the old process and load the saved statefor the new process.
Context-switch time is overhead; the system does nouseful work while switching.
Hardware can help a lot to reduce the context switch time
Time dependent on hardware support.
Multiple sets of registers
Saving the address space
Threads as solution to context switch
overhead
20
Process Creation
Parent process create children processes, which, in turn createother processes, forming a tree of processes.
Resource sharing
Parent and children share all resources.
Children share subset of parent’s resources.
Parent and child share no resources.
Execution
Parent and children execute concurrently.
Parent waits until children terminate.
21
Process 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.
22
Process Creation
23
Process Creation in POSIX
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
Int main ( ) {
      int pid;
          /* fork another process */
           pid = fork ();
           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 the child to complete */
              wait (NULL);
              printf (“Child Complete”);
              exit (0);
         }
     }
 
C program forking a separate process
24
Process Creation in Win32
NOT IN EXAM
25
Process Creation in Java
NOT IN EXAM
26
Processes Tree on a UNIX System
27
“Process Status” Command
ps.tiff                                                        000C9726Macintosh HD                   BC93CBFC:
ps   aux
a:   display information about other users' processes as wellas yours.
u:    display information associated with the followingkeywords: user, pid, %cpu, %mem, vsz, rss, tt, state, start,time and command.
x:   display information about processes without controllingterminals
28
Process status data
 RSS:     the real memory (resident set) size of the process (in 1024 byte units).
 PID:     process ID
 %CPU:      the cpu utilization of the process;
 %MEM:    the percentage of real memory used by this process.
 VSZ:        virtual size in Kbytes (alias vsize)
TT:      an abbreviation for the pathname of the controlling
            terminal, if any.
STAT:     symbolic process state
STARTED:  the time the command started
TIME:    accumulated cpu time, user + system
29
Releasing a crashed Unix terminalFrom FAQ: UWaterloo
       Question: my terminal has crashed and I can not log out from mysession.   How can I terminate my session?
In some occasions the terminal crashes and you do not have any control on it.Some reasons are:
1)  lack of memory when you are running a memory demanding program such as”web browser" or "matlab" on a low memory terminal,
2) bugs in an application program you run, and
3) non-functionality of the mouse, i.e., you can not activate the console window tolog-off.
In such cases, resetting the terminal (or machine) is not always a good idea, sincerebooting may take a long time, or you may not be allowed to reset it anyway. Inorder to release a crashed terminal, you should login into your account from anotherterminal and kill the shell process of your crashed session. Upon login, you shouldsee the status of your processes using the process status command " ps " withappropriate switches.
30
Releasing a crashed Unix terminal …
ps -ef | grep yourUserId
prints the status of all your processes on a machine. The following is an example:
% ps -ef | grep ksartipi
UID PID PPID STIME TTY TIME CMD
ksartipi 9002 9000 11:10:43 pts/13 0:01 -tcsh
ksartipi 11670 11666 Mar 22 pts/9 0:00 -tcsh
ksartipi 7051 09:45:30 0:34 emacs-20.2es
ksartipi 9092 9002 11:11:56 pts/13 0:00 grep ksartipi
You will see several lines, each relating to a different process. You should locate the shell process of thecrashed session. This is done by looking at the process ids (PID) of different processes and recognizing yourcurrent shell process and your crashed shell process. Your current shell process has the PID number close tothe other programs that you run in your new session. In the above example, the first line belongs to thecurrently created shell process since its PID is close to the PID of the "grep ksartipi" command (two PIDs 9002and 9092), as opposed to the PID of the shell process in the second line (11670).
Now, you can kill the crashed shell process by the command: "kill -9 11670" at the Unix prompt and releasethe crashed terminal.
31
Process Termination
Reasons for Termination:
Process executes last statement and asks the operating systemto terminate it (exit n).
Output data from child to parent (via wait PID).
Process’ resources are deallocated by operating system.
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 parentterminates.
Cascading termination.
32
Interprocess Communication
Message PassingShared Memory
33
Cooperating Processes
Independent process cannot affect or be affected bythe execution of another process.
Cooperating process can affect or be affected by theexecution of another process
Advantages of process cooperation
Information sharing:
Via memory
Computation speed-up
Multi-CPU system
Convenience:
Running several applications: editor; printer; compiler
34
Producer-Consumer Problem
Paradigm for cooperating processes, producerprocess produces information that is consumed by aconsumer process.
unbounded-buffer places no practical limit on the size of thebuffer.
bounded-buffer assumes that there is a fixed buffer size.
35
Bounded-Buffer – Shared-Memory Solution
Shared data
#define BUFFER_SIZE 12     (I.e., 0 …11)
Typedef struct {
. . .  /* different fields for each item */
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
The proposed solution (next slide) can only useBUFFER_SIZE-1 elements
36
Bounded-Buffer – Producer Process
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing; buffer is full */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
0
11
0
11
producer
consumer
0
11
Ring-buffer
12 slots
out
in
in
out
in
out
Full
Half-full
Empty
37
Bounded-Buffer – Consumer Process
item  nextConsumed;
while (1) {
while (out == in)
; /* do nothing; buffer is empty */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
0
11
0
11
producer
consumer
0
11
Ring-buffer
12 slots
out
in
Empty
Half-full
Full
38
Interprocess Communication (IPC)
Mechanism for processes to communicate and tosynchronize their actions.
Message system – processes communicate with each otherwithout resorting to shared variables.
IPC facility provides two operations:
Send (message) – message size fixed or variable
Receive (message)
If P and Q wish to communicate, they need to:
establish a logical communication link between them
exchange messages via send/receive
Implementation of communication link
physical (e.g., shared memory, hardware bus)
logical (e.g., logical properties)
39
Implementation Questions
How are links established?
Can a link be associated with more than two processes?
How many links can there be between every pair ofcommunicating processes?
What is the capacity of a link?
Is the size of a message that the link can accommodate fixed orvariable?
Is a link unidirectional or bi-directional?
40
Direct Communication
Processes must name each other explicitly:
send (P, message) – send a message to process P
receive(Q, message) – receive a message from process Q
Properties of communication link
Links are established automatically.
A link is associated with exactly one pair of communicatingprocesses.
Between each pair there exists exactly one link.
The link may be unidirectional, but is usually bi-directional.
41
Indirect Communication
Messages are directed and received frommailboxes (also referred to as ports).
Each mailbox has a unique id.
Processes can communicate only if they share amailbox.
Properties of communication link
Link established only if processes share a commonmailbox
A link may be associated with many processes.
Each pair of processes may share severalcommunication links.
Link may be unidirectional or bi-directional.
42
Indirect Communication
Operations
create a new mailbox
send and receive messages through mailbox
destroy a mailbox
Primitives are defined as:
send (A, message) – send a message to mailboxA
receive (A, message) – receive a message frommailbox A
43
Indirect Communication
Mailbox sharing
P1, P2, and P3 share mailbox A.
P1, sends; P2 and P3 receive.
Who gets the message?
Solutions
Allow a link to be associated with at most two processes.
Allow only one process at a time to execute a receiveoperation.
Allow the system to select arbitrarily the receiver.  Sender isnotified who the receiver was.
44
Synchronization
Message passing may be either blocking or non-blocking
Blocking is considered synchronous
Blocking send has the sender block until the message isreceived
Blocking receive has the receiver block until a message isavailable
Non-blocking is considered asynchronous
Non-blocking send has the sender send the message andcontinue
Non-blocking receive has the receiver receive a validmessage or null
45
Buffering
Queue of messages attached to the link;implemented in one of three ways.
1.Zero capacity – 0 messagesSender must wait for receiver (rendezvous).
2.Bounded capacity – finite length of n messagesSender must wait if link full.
3.Unbounded capacity – infinite lengthSender never waits.
Examples of IPC Systems - POSIX
POSIX Shared Memory
Process first creates shared memory segment
segment id = shmget(IPC PRIVATE, size, S_IRUSR| S_IWUSR);
Process wanting access to that shared memory must attachto it
shared memory = (char *) shmat(id, NULL, 0);
Now the process could write to the shared memory
sprintf(shared memory, "Writing to sharedmemory");
When done a process can detach the shared memory fromits address space
shmdt(shared memory);
Examples of IPC Systems -Mach
Mach communication is message based
Even system calls are messages
Each task gets two mailboxes at creation- Kernel and Notify
Only three system calls needed for message transfer
msg_send(), msg_receive(), msg_rpc()
Mailboxes needed for commuication, created via
port_allocate()
Examples of IPC Systems – Windows XP
Message-passing centric via local procedure call(LPC) facility
Only works between processes on the same system
Uses ports (like mailboxes) to establish and maintaincommunication channels
Communication works as follows:
The client opens a handle to the subsystem’s connection portobject
The client sends a connection request
The server creates two private communication ports andreturns the handle to one of them to the client
The client and server use the corresponding port handle tosend messages or callbacks and to listen for replies
49
Simulating Shared Memory inJava
50
Bounded-Buffer – Message Passing Solution
51
Bounded-Buffer – Message Passing Solution
52
Bounded-Buffer – Message Passing Solution
The Producer
53
Bounded-Buffer – Message Passing Solution
The Consumer
54
Message Passing in Windows XP
55
Client-Server Communication
Sockets
Remote Procedure Calls
Remote Method Invocation (Java)
56
Sockets
A socket is defined as an endpoint for communication.
Concatenation of IP address and port
The socket 161.25.19.8:1625 refers to port 1625 onhost 161.25.19.8
Communication consists between a pair of sockets, onefor each process.
57
Socket Communication
1- Client sends request
2- Server waits for request
3- Socket link is established
58
Socket communication details
socket.tiff                                                    000C8C0BMacintosh HD                   BC93CBFC:
59
Sockets in Unix
rpc.tiff                                                       000C8C0BMacintosh HD                   BC93CBFC:
Server makes the socket
known to the system using bind()
so that the clients can use it
Run socket example fordirectory listing
Client:
[Kamrans-MacBook: Socket-program] K_Sartipi%   ./client ~K_Sartipi Kamrans-MacBook.local
Server:
[Kamrans-MacBook:Socket-program] K_Sartipi% ./server &
60
61
 * Time-of-day server listening to port 6013.
 * Figure 3.19
 
import java.net.*;
import java.io.*;
public class DateServer
{
      public static void main(String[] args)
          try {
               ServerSocket sock = new ServerSocket(6013);
               // now listen for connections
               while (true) {
Socket client = sock.accept();
               // we have a connection
               PrintWriter pout = new PrintWriter(client.getOutputStream(), true);
               // write the Date to the socket
               pout.println(new java.util.Date().toString());
              // close the socket and resume listening for more connections
client.close();
            }
          }
          catch (IOException ioe) {
System.err.println(ioe);
          }
     }
}
rpc.tiff                                                       000C8C0BMacintosh HD                   BC93CBFC:
rpc.tiff                                                       000C8C0BMacintosh HD                   BC93CBFC:
62
* Client program requesting current date from server.* Figure 3.20
 
import java.net.*;
import java.io.*;
public class DateClient
{
public static void main(String[] args)  {
   try {
   // this could be changed to an IP name or address other than the localhost
         Socket sock = new Socket("127.0.0.1",6013);
         InputStream in = sock.getInputStream();
 BufferedReader bin = new BufferedReader(new InputStreamReader(in));
                                 // read the date from the socket
String line;
while( (line = bin.readLine()) != null)
     System.out.println(line);
// close the socket connection
sock.close();
               }
              catch (IOException ioe) {
     System.err.println(ioe);
            }
      }
}
63
Network Address of a Computer
dig   birkhoff.cas.mcmaster.ca
 ping.tiff                                                      001D96A9Macintosh HD                   BD80BF5B:
Ping   birkhoff.cas.mcmaster.ca

ping2.tiff                                                     001D96A9Macintosh HD                   BD80BF5B:
dig.tiff                                                       001D96A9Macintosh HD                   BD80BF5B:
 dig2.tiff                                                      001D96A9Macintosh HD                   BD80BF5B:
64
Remote Procedure Calls(RPC)
Remote procedure call (RPC) abstracts procedurecalls between processes on networked systems.
Client & server stubs – client-side proxy for theactual procedure on the server.
The client-side stub locates the server and marshallsthe parameters.
The server-side stub receives this message, unpacksthe marshalled parameters, and performs theprocedure on the server.
65
Execution of RPC
XDR
Handles the Differences of dataRepresentations in Client and Serversides
Binding
Local: compile / load / execute times
Remote: hard coded if port is known;otherwise use of Matchmaker Daemon
Reliability of RPC:
Local never fails
Remote: at-most-once strategy
66
Remote Method Invocation
Remote Method Invocation (RMI) is a Java mechanism similar toRPCs.
RMI allows a Java program on one machine to invoke a methodon a remote object.
67
Marshalling Parameters
- Local objects passed by copy (object serialization)
- Remote objects passed by reference
68
Marshalling Parameters
69
RMI Example
NOT IN EXAM
70
RMI Example
NOT IN EXAM
71
RMI Example
NOT IN EXAM