ch3 New
ch3 New
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009
Chapter 3: Processes
■ Process Concept
■ Process Scheduling APPLICATIONS
■ Operations on Processes
■ Inter-process
Communication
■ Examples of IPC Systems
OPERATING SYSTEM
■ Communication in Client-
Server Systems
COMPUTER HARDWARE
Operating System Concepts – 8th Edition 3.2 Silberschatz, Galvin and Gagne ©2009
Objectives
■ To introduce the notion of a
process -- a program in
execution, which forms the
basis of all computation
■ To describe communication in
client-server systems
Operating System Concepts – 8th Edition 3.3 Silberschatz, Galvin and Gagne ©2009
Process Concept
■ An operating system executes a
variety of programs:
● Batch system – jobs
● Time-shared systems – user
programs or tasks
■ Textbook uses the terms job and
process almost interchangeably PROCESS A
■ Process – a program in
PROCESS B
execution; process execution
printer.exe
must progress in sequential
fashion WIFI.exe
■ A process includes:
● program counter A.exe
● stack B.exe
● data section C.DAT
Operating System Concepts – 8th Edition 3.4 Silberschatz, Galvin and Gagne ©2009
The Process
■ Multiple parts Process in Memory
● The program code, also called text section
● Current activity including program counter, processor
registers
● Stack containing temporary data
Operating System Concepts – 8th Edition 3.6 Silberschatz, Galvin and Gagne ©2009
Process 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 processor
● terminated: The process has finished execution
Operating System Concepts – 8th Edition 3.7 Silberschatz, Galvin and Gagne ©2009
CPU Switch From Process to Process
Operating System Concepts – 8th Edition 3.8 Silberschatz, Galvin and Gagne ©2009
Process Scheduling
■ Maximize CPU use, quickly switch processes onto CPU for time
sharing
■ Process scheduler selects among available processes for next
execution on CPU
■ Maintains scheduling queues of processes
● 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
● Processes migrate among the various queues
Operating System Concepts – 8th Edition 3.9 Silberschatz, Galvin and Gagne ©2009
Process Representation in Linux
■ Represented by the C structure task_struct
pid t pid; /* process identifier */
long state; /* state of the process */
unsigned int time slice /* scheduling information */ struct task struct *parent; /*
this process’s parent */ struct list head children; /* this process’s children */
struct files struct *files; /* list of open files */ struct mm struct *mm; /*
address space of this pro */
Operating System Concepts – 8th Edition 3.10 Silberschatz, Galvin and Gagne ©2009
Ready Queue And Various
I/O Device Queues
Operating System Concepts – 8th Edition 3.11 Silberschatz, Galvin and Gagne ©2009
Representation of Process Scheduling
Operating System Concepts – 8th Edition 3.12 Silberschatz, Galvin and Gagne ©2009
Schedulers
■ 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
● Sometimes the only
scheduler in a system
Operating System Concepts – 8th Edition 3.13 Silberschatz, Galvin and Gagne ©2009
Schedulers (Cont.)
■ Short-term scheduler is invoked very frequently (milliseconds) Þ (must
be fast)
Operating System Concepts – 8th Edition 3.15 Silberschatz, Galvin and Gagne ©2009
Context 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 via a context
switch.
Operating System Concepts – 8th Edition 3.16 Silberschatz, Galvin and Gagne ©2009
Process 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 parent’s resources
■ Execution
● Parent and children execute concurrently
● Parent waits until children terminate
Operating System Concepts – 8th Edition 3.17 Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition 3.18 Silberschatz, Galvin and Gagne ©2009
Process Creation
Operating System Concepts – 8th Edition 3.19 Silberschatz, Galvin and Gagne ©2009
C Program Forking Separate Process
#include <sys/types.h>
#include <studio.h>
#include <unistd.h>
int main()
{
pid_t pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
return 1;
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for the child */
wait (NULL);
printf ("Child Complete");
}
return 0;
Operating System Concepts – 8th Edition } 3.20 Silberschatz, Galvin and Gagne ©2009
A Tree of Processes on Solaris
Operating System Concepts – 8th Edition 3.21 Silberschatz, Galvin and Gagne ©2009
Process Termination
■ Process executes last statement and asks the operating system to delete it
(exit)
● Output data from child to parent (via wait)
● Process’ resources are deallocated by operating system
● If parent is exiting
Operating System Concepts – 8th Edition 3.22 Silberschatz, Galvin and Gagne ©2009
Interprocess Communication
■ Processes within a system may be independent or cooperating
■ Cooperating process can affect or be affected by other processes, including
sharing data
■ Reasons for cooperating processes:
● Information sharing
● Computation speedup
● Modularity
● Convenience
● Message passing
Operating System Concepts – 8th Edition 3.23 Silberschatz, Galvin and Gagne ©2009
Communications Models
Operating System Concepts – 8th Edition 3.24 Silberschatz, Galvin and Gagne ©2009
Cooperating Processes
■ Independent process cannot affect or be affected by the
execution of another process
Operating System Concepts – 8th Edition 3.25 Silberschatz, Galvin and Gagne ©2009
Producer-Consumer Problem
Operating System Concepts – 8th Edition 3.26 Silberschatz, Galvin and Gagne ©2009
Bounded-Buffer –
Shared-Memory Solution
■ Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;
producer consumer
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
■ Solution is correct, but can only use BUFFER_SIZE-1 elements
Operating System Concepts – 8th Edition 3.27 Silberschatz, Galvin and Gagne ©2009
Bounded-Buffer – Producer
producer consumer
while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* do nothing -- no free buffers */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
Operating System Concepts – 8th Edition 3.28 Silberschatz, Galvin and Gagne ©2009
Bounded Buffer – Consumer
producer consumer
while (true) {
while (in == out)
; // do nothing -- nothing to consume
// remove an item from the buffer
item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
Operating System Concepts – 8th Edition 3.29 Silberschatz, Galvin and Gagne ©2009
Interprocess Communication –
Message Passing
Operating System Concepts – 8th Edition 3.30 Silberschatz, Galvin and Gagne ©2009
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 of communicating
processes?
■ What is the capacity of a link?
■ Is the size of a message that the link can accommodate fixed or
variable?
■ Is a link unidirectional or bi-directional?
Operating System Concepts – 8th Edition 3.31 Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition 3.32 Silberschatz, Galvin and Gagne ©2009
Indirect Communication
■ Messages are directed and received from mailboxes (also referred to as ports)
● Each mailbox has a unique id
● Processes can communicate only if they share a mailbox
Operating System Concepts – 8th Edition 3.33 Silberschatz, Galvin and Gagne ©2009
Indirect Communication
■ Operations
● create a new mailbox
● send and receive messages through mailbox
● destroy a mailbox
Operating System Concepts – 8th Edition 3.34 Silberschatz, Galvin and Gagne ©2009
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 receive operation
● Allow the system to select arbitrarily the receiver. Sender is
notified who the receiver was.
Operating System Concepts – 8th Edition 3.35 Silberschatz, Galvin and Gagne ©2009
Synchronization
■ Message passing may be either blocking or non-blocking
Operating System Concepts – 8th Edition 3.36 Silberschatz, Galvin and Gagne ©2009
Buffering
■ Queue of messages attached to the link; implemented in one of three ways
1. Zero capacity – 0 messages
Sender must wait for receiver (rendezvous)
2. Bounded capacity – finite length of n messages
Sender must wait if link full
3. Unbounded capacity – infinite length
Sender never waits
Operating System Concepts – 8th Edition 3.37 Silberschatz, Galvin and Gagne ©2009
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 attach to it
shared memory = (char *) shmat(id, NULL, 0);
● Now the process could write to the shared memory
sprintf(shared memory, "Writing to shared memory");
● When done a process can detach the shared memory from its address
space
shmdt(shared memory);
Operating System Concepts – 8th Edition 3.38 Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition 3.39 Silberschatz, Galvin and Gagne ©2009
Examples of IPC Systems – Windows XP
Operating System Concepts – 8th Edition 3.40 Silberschatz, Galvin and Gagne ©2009
Local Procedure Calls in Windows XP
Operating System Concepts – 8th Edition 3.41 Silberschatz, Galvin and Gagne ©2009
Communications in Client-Server Systems
■ Sockets
■ Pipes
Operating System Concepts – 8th Edition 3.42 Silberschatz, Galvin and Gagne ©2009
Sockets
■ A socket is defined as an endpoint for communication
Operating System Concepts – 8th Edition 3.43 Silberschatz, Galvin and Gagne ©2009
Socket Communication
Operating System Concepts – 8th Edition 3.44 Silberschatz, Galvin and Gagne ©2009
Remote Procedure Calls
■ Remote procedure call (RPC) abstracts procedure calls between processes on
networked systems
■ The client-side stub locates the server and marshalls the parameters
Operating System Concepts – 8th Edition 3.45 Silberschatz, Galvin and Gagne ©2009
Execution of RPC
Operating System Concepts – 8th Edition 3.46 Silberschatz, Galvin and Gagne ©2009
Pipes
■ Acts as a conduit allowing two processes to communicate
■ Issues
● Is communication unidirectional or bidirectional?
Operating System Concepts – 8th Edition 3.47 Silberschatz, Galvin and Gagne ©2009
Ordinary Pipes
■ Ordinary Pipes allow communication in standard producer-consumer style
■ Consumer reads from the other end (the read-end of the pipe)
Operating System Concepts – 8th Edition 3.48 Silberschatz, Galvin and Gagne ©2009
Ordinary Pipes
Operating System Concepts – 8th Edition 3.49 Silberschatz, Galvin and Gagne ©2009
Named Pipes
■ Named Pipes are more powerful than ordinary pipes
■ Communication is bidirectional
Operating System Concepts – 8th Edition 3.50 Silberschatz, Galvin and Gagne ©2009
End of Chapter 3
Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne ©2009
Exercise
■ What output will be at Line A?
Operating System Concepts – 8th Edition 3.52 Silberschatz, Galvin and Gagne ©2009
Exercise
#include <sys/types.h> ■ When the state of the
#include <studio.h>
#include <unistd.h> process is terminated, how
many times has this
int main(int argc, char** argv) process waited in the
{ waiting queue? Please
int i = 0;
explain your solution.
printf(“Hello\n");
for( i = 0; i < 5; i++) {
if( i % 2 != 0) {
printf(“new line %d\n”, i);
}
}
printf(“Bye\n");
exit(0);
}
Operating System Concepts – 8th Edition 3.53 Silberschatz, Galvin and Gagne ©2009
Exercise
#include <sys/types.h>
#include <studio.h> ■ How many processes
#include <unistd.h> are created in total
int main (int argc, char **argv) after this program has
{
executed (including the
int pid;
printf(“Parent \n”); original process)?
pid = fork(); Please explain your
if (pid > 0){ solution by using
printf(“Parent \n”); process tree
}
else if (pid == 0)
{
printf(“Child \n”);
}
}
Operating System Concepts – 8th Edition 3.54 Silberschatz, Galvin and Gagne ©2009
Homework
■ 3.2 page 149
■ 3.5 page 150
■ 3.12 – 3.14 page 151 – 152
■ 3.17 pages 153
Operating System Concepts – 8th Edition 3.55 Silberschatz, Galvin and Gagne ©2009