15
Operating Systems {week 11a} Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D.

Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

Embed Size (px)

Citation preview

Page 1: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

Operating Systems{week 11a}

Rensselaer Polytechnic InstituteCSCI-4210 – Operating SystemsDavid Goldschmidt, Ph.D.

Page 2: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David 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

Page 3: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

IPC mechanisms

Message Passing Shared Memory

both IPC mechanismsrequire a protocol

and synchronization

Page 4: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 5: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

Remote procedure calls (i)

Page 6: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

Remote procedure calls (ii)

Using RPC, heterogeneous operating systems can interact with one another

Page 7: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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)

Page 8: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 9: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 10: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 11: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 12: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 13: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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()

Page 14: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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

Page 15: Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D

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