Upload
iris-elliott
View
214
Download
1
Embed Size (px)
Citation preview
Operating Systems{week 11a}
Rensselaer Polytechnic InstituteCSCI-4210 – Operating SystemsDavid Goldschmidt, Ph.D.
Interprocess communication (IPC)
Why is it beneficial for an operating systemto enable processes to communicatewith one another? Share information Cooperation Computational speed-up via
parallel programming Modularity of program design Convenience
IPC mechanisms
Message Passing Shared Memory
both IPC mechanismsrequire a protocol
and synchronization
Client-server communication
Processes may communicate on the same machine or across multiple machines Use sockets for interprocess
client-server communication Use remote procedure calls (RPCs)
to call procedures across a network In Java, use remote method invocation
(RMI) to call a method on an object in a different virtual machine
Remote procedure calls (i)
Remote procedure calls (ii)
Using RPC, heterogeneous operating systems can interact with one another
Marshaling parameters
RPCs can be made across a mix ofmachines and operating systems All parameters must be marshaled
to ensure proper interpretation Consider date representations▪ YYYY-MM-DD or MM-DD-YYYY or DD-MM-YYYY
Also consider big endian versus little endian integer representations▪ (see http://en.wikipedia.org/wiki/Endianness)
Remote method invocation
RMI is a Java mechanism similar to RPCs RMI enables a running Java program to
call a method on a remote object running on a separate Java Virtual Machine
this requiresobject serialization
Sockets (i)
A socket is an endpoint for communication Communication takes place over a pair of
sockets<ip-address>:<port>
client
server
66.195.8.34:8123
socket
128.113.2.9:80
listener socket
128.113.2.9:9500
socket
Sockets (ii)
Pitfalls of socket-based communication between client and server include: Once a server binds to a port,
no other program may listenon that port
If client and server do not obeythe rules of the protocol,errors occur
Transmitting objects via sockets
In Java, we transmit primitive data types (e.g. int, double) using DataInputStreamand DataOutputStream To transmit objects, use
ObjectInputStreamand ObjectOutputStream instead
clientserver
this requiresobject serialization
Serializing objects (i)
Objects exist in a JVM’s memory space To transmit an object over a socket,
we must first serialize the object For an object to be serializable, its class
definition must implement thejava.io.Serializable interface
Also useful for saving runtime objects to a file
Serializing objects (ii)
The Serializable interface has no methods Simply identifies a class as being
serializable And enables the use of readObject() and
writeObject() methods of ObjectInputStream and ObjectOutputStream
Studentobject
serialized object
Studentobjectnetwork
writeObject()readObject()
Serializing objects (iii)
Classes that are not serializable include: java.lang.Thread java.io.OutputStream java.net.Socket etc.
Such classes refer to operating system resources, which are not serializable
Serializing objects (iv)
Serialized objects are assigned a unique identifier as a means to version control If you write object X to a socket or file,
then modify the source code of class X andrecompile the .class file, loading object X results in an InvalidClassException runtime exception
All processes must be using the same version