150 likes | 309 Views
Rensselaer Polytechnic Institute CSC-432 – Operating Systems David Goldschmidt, Ph.D. Operating Systems {week 11 }. Interprocess communication (IPC). Why is it beneficial for an operating system to enable processes to communicate with one another? Share information Cooperation
E N D
Rensselaer Polytechnic Institute CSC-432 – Operating Systems David Goldschmidt, Ph.D. Operating Systems{week 11}
Interprocess communication (IPC) • Why is it beneficial for an operating systemto enable processes to communicatewith one another? • Share information • Cooperation • Computational speed-up viaparallel programming • Modularity of program design • Convenience
IPC mechanisms • Message Passing • Shared Memory both IPC mechanisms require a protocol and synchronization
Client-server communication • Processes may communicate on the same machine or across multiple machines • Use sockets for interprocessclient-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 (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 marshaledto 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 requires object serialization
listener socket 128.113.2.9:80 server socket 128.113.2.9:9500 client socket 66.195.8.34:8123 Sockets (i) • A socket is an endpoint for communication • Communication takes place over a pair of sockets <ip-address>:<port>
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
server client 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 this requires object 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 Student object Student object network serialized object 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 Xresults in an InvalidClassException runtime exception • All processes must be using the same version