CIT11: Principles of Operating System
Principles of Operating
System
Course Code CIT11
Faculty of Computing and Information Technology
Computer Science Department
Spring, 2017/2018
These slides are based on lecture notes of the book’s author
& Portland University slides
& A. Frank - P. Weisberg slides
Wedad Al-Sorori 14 September 2017 Introduction 1/51
CIT11: Principles of Operating System
Cooperating Processes
• This lecture will cover the following topics:
• Interprocess Communication
• Communication in Client-Server Systems
Wedad Al-Sorori 14 September 2017 Introduction 2/51
CIT11: Principles of Operating System
Objectives
• After completing this lecture, students will be able to:
• Describe the processes communication.
• Explore interprocess communication using shared
memory and message passing.
• Recognize why process cooperate.
• Infer process cooperation problems.
• Demonstrate communication in client-server systems.
Wedad Al-Sorori 14 September 2017 Introduction 3/51
CIT11: Principles of Operating System
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
• Cooperating processes need interprocess communication
(IPC)
• Two models of IPC
• Shared memory
Wedad Al-Sorori 14 September 2017 Introduction 4/51
CIT11: Principles of Operating System
Communications Models
(a) Message passing. (b) shared memory.
Wedad Al-Sorori 14 September 2017 Introduction 5/51
CIT11: Principles of Operating System
Cooperating 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
Wedad Al-Sorori 14 September 2017 Introduction 6/51
CIT11: Principles of Operating System
Producer-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
Wedad Al-Sorori 14 September 2017 Introduction 7/51
CIT11: Principles of Operating System
Interprocess Communication – Shared Memory
• An area of memory shared among the processes that wish to
communicate
• The communication is under the control of the users processes
not the operating system.
• Major issues is to provide mechanism that will allow the user
processes to synchronize their actions when they access shared
memory.
• Synchronization is discussed in great details in Chapter 5.
Wedad Al-Sorori 14 September 2017 Introduction 8/51
CIT11: Principles of Operating System
Interprocess Communication – Message Passing
(1/3)
• Mechanism for processes to communicate and to synchronize
their actions
• Message system – processes communicate with each other
without resorting to shared variables
• IPC facility provides two operations:
• Send(message)
• Receive(message)
• The message size is either fixed or variable
Wedad Al-Sorori 14 September 2017 Introduction 9/51
CIT11: Principles of Operating System
Message Passing (2/3)
• If processes P and Q wish to communicate, they need to:
• Establish a communication link between them
• Exchange messages via send/receive
• Implementation issues:
• 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?
Wedad Al-Sorori 14 September 2017 Introduction 10/51
CIT11: Principles of Operating System
Message Passing (3/3)
• Implementation of communication link
• Physical:
• Shared memory
• Hardware bus
• Network
• Logical:
• Direct or indirect
• Synchronous or asynchronous
• Automatic or explicit buffering
Wedad Al-Sorori 14 September 2017 Introduction 11/51
CIT11: Principles of Operating System
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 communicating processes
• Between each pair there exists exactly one link
• The link may be unidirectional, but is usually bi-directional
Wedad Al-Sorori 14 September 2017 Introduction 12/51
CIT11: Principles of Operating System
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
• Properties of communication link
• Link established only if processes share a common mailbox
• A link may be associated with many processes
• Each pair of processes may share several communication links
• Link may be unidirectional or bi-directional
Wedad Al-Sorori 14 September 2017 Introduction 13/51
CIT11: Principles of Operating System
Indirect Communication
• Operations
• Create a new mailbox (port)
• Send and receive messages through mailbox
• Destroy a mailbox
• Primitives are defined as:
send(A, message) – send a message to mailbox A
receive(A, message) – receive a message from mailbox A
Wedad Al-Sorori 14 September 2017 Introduction 14/51
CIT11: Principles of Operating System
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.
Wedad Al-Sorori 14 September 2017 Introduction 15/51
CIT11: Principles of Operating System
Synchronization
• Message passing may be either blocking or non-blocking
• Blocking is considered synchronous
• Blocking send -- the sender is blocked until the message is
received
• Blocking receive -- the receiver is blocked until a message is
available
• Non-blocking is considered asynchronous
• Non-blocking send -- the sender sends the message and continue
• Non-blocking receive -- the receiver receives:
A valid message, or
Null message
Different combinations possible
If both send and receive are blocking, we have a rendezvous
Wedad Al-Sorori 14 September 2017 Introduction 16/51
CIT11: Principles of Operating System
Buffering
• Queue of messages attached to the link.
• implemented in one of three ways
1. Zero capacity – no messages are queued on a link.
• 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
Wedad Al-Sorori 14 September 2017 Introduction 17/51
CIT11: Principles of Operating System
Communications in Client-Server Systems
• Sockets
• Remote Procedure Calls
• Pipes
• Remote Method Invocation (Java)
Wedad Al-Sorori 14 September 2017 Introduction 18/51
CIT11: Principles of Operating System
Sockets
• A socket is defined as an endpoint for communication
• Concatenation of IP address and port – a number included at start of message packet to
differentiate network services on a host
• The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8
• Communication consists between a pair of sockets
• All ports below 1024 are well known, used for standard services
• Special IP address 127.0.0.1 (loopback) to refer to system on which process is running
Wedad Al-Sorori 14 September 2017 Introduction 19/51
CIT11: Principles of Operating System
Socket Communication
Wedad Al-Sorori 14 September 2017 Introduction 20/51
CIT11: Principles of Operating System
Sockets in Java
• Three types of sockets
• Connection-oriented
(TCP)
• Connectionless (UDP)
• MulticastSocket class–
data can be sent to
multiple recipients
• Consider this “Date”
server:
Wedad Al-Sorori 14 September 2017 Introduction 21/51
CIT11: Principles of Operating System
Remote Procedure Calls (1/2)
• Remote procedure call (RPC) abstracts procedure calls between
processes on networked systems
• Again uses ports for service differentiation
• Stubs – client-side proxy for the actual procedure on the server
• The client-side stub locates the server and marshalls the
parameters
• The server-side stub receives this message, unpacks the
marshalled parameters, and performs the procedure on the
server
• On Windows, stub code compile from specification written in
Microsoft Interface Definition Language (MIDL)
Wedad Al-Sorori 14 September 2017 Introduction 22/51
CIT11: Principles of Operating System
Remote Procedure Calls (1/2)
• Data representation handled via External Data
Representation (XDL) format to account for different
architectures
• Big-endian and little-endian
• Remote communication has more failure scenarios than local
• Messages can be delivered exactly once rather than at
most once
• OS typically provides a rendezvous (or matchmaker) service
to connect client and server
Wedad Al-Sorori 14 September 2017 Introduction 23/51
CIT11: Principles of Operating System
Execution of RPC
Wedad Al-Sorori 14 September 2017 Introduction 24/51
CIT11: Principles of Operating System
Pipes
• Acts as a conduit allowing two processes to communicate
• Issues:
• Is communication unidirectional or bidirectional?
• In the case of two-way communication, is it half or full-duplex?
• Must there exist a relationship (i.e., parent-child) between the
communicating processes?
• Can the pipes be used over a network?
• Ordinary pipes – cannot be accessed from outside the process
that created it. Typically, a parent process creates a pipe and
uses it to communicate with a child process that it created.
• Named pipes – can be accessed without a parent-child
relationship.
Wedad Al-Sorori 14 September 2017 Introduction 25/51
CIT11: Principles of Operating System
Ordinary Pipes
• Ordinary Pipes allow communication in standard producer-consumer
style
• Producer writes to one end (the write-end of the pipe)
• Consumer reads from the other end (the read-end of the pipe)
• Ordinary pipes are therefore unidirectional
• Require parent-child relationship between communicating processes
• Windows calls these anonymous pipes
• See Unix and Windows code samples
Wedad Al-Sorori
in textbook
14 September 2017 Introduction 26/51
CIT11: Principles of Operating System
Named Pipes
• Named Pipes are more powerful than ordinary pipes
• Communication is bidirectional
• No parent-child relationship is necessary between the
communicating processes
• Several processes can use the named pipe for
communication
• Provided on both UNIX and Windows systems
Wedad Al-Sorori 14 September 2017 Introduction 27/51
CIT11: Principles of Operating System
Summary
• Processes can cooperate with other processes to
accomplish their tasks so they need to communicate with
each other.
• Interprocess communication can be done using shared
memory or message passing.
• Communication in client server model can be
implemented using sockets, pipes or remote procedure
call.
Wedad Al-Sorori 14 September 2017 Introduction 28/51
CIT11: Principles of Operating System
Assignment
• Answer and submit questions in assignment8 that was attached
with this lecture on CLMS.
Wedad Al-Sorori 14 September 2017 Introduction 29/51
CIT11: Principles of Operating System
Thanks
Wedad Al-Sorori 14 September 2017 Introduction 30/51