interprocess communications continued
DESCRIPTION
Interprocess Communications Continued. Andy Wang COP 5611 Advanced Operating Systems. Outline. Shared memory IPC Shared memory and large address spaces Windows NT IPC Mechanisms. Shared Memory. A simple and powerful form of IPC Most multiprogramming OS’s use some form of shared memory - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/1.jpg)
Interprocess Communications Continued
Andy Wang
COP 5611
Advanced Operating Systems
![Page 2: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/2.jpg)
Outline Shared memory IPC Shared memory and large address spaces Windows NT IPC Mechanisms
![Page 3: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/3.jpg)
Shared Memory A simple and powerful form of IPC Most multiprogramming OS’s use some form
of shared memory E.g., sharing executables
Not all OS’s make shared memory available to applications
![Page 4: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/4.jpg)
Shared Memory Diagram
Process A Process B
x: 10 y: 20z: __
a: __ b: __
![Page 5: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/5.jpg)
Problems with Shared Memory Synchronization Protection Pointers
![Page 6: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/6.jpg)
Synchronization Shared memory itself does not provide
synchronization of communications Except at the single-word level Typically, some other synchronization
mechanism is used E.g., semaphore in UNIX Events, semaphores, or hardware locks in
Windows NT
![Page 7: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/7.jpg)
Protection Who can access a segment? And in what
ways? UNIX allows some read/write controls Windows NT has general security monitoring
based on the object-status of shared memory
![Page 8: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/8.jpg)
Pointers in Shared Memory Pointers in a shared memory segment can be
troublesome For that matter, pointers in any IPC can be
troublesome
![Page 9: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/9.jpg)
Shared Memory Containing Pointers
Process A Process B
x: 10 y: 20z: __
a: __ b: __
w: 5
![Page 10: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/10.jpg)
A Troublesome Pointer
Process A Process B
x: 10 y: 20z: __
a: __ b: __
w: 5
![Page 11: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/11.jpg)
So, how do you share pointers? Several methods are in use
Copy-time translation Reference-time translation Pointer Swizzling
All involve somehow translating pointers at some point before they are used
![Page 12: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/12.jpg)
Copy-Time Pointer Translation When a process sends data containing
pointers to another process Locate each pointer within old version of the
data Then translate pointers are required Requires both sides to traverse entire structure Not really feasible for shared memory
![Page 13: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/13.jpg)
Reference-Time Translation Encode pointers in shared memory segment
as pointer surrogates Typically as offsets into some other segment
in separate contexts So each sharer can have its own copy of what
is pointed to Slow, pointers in two formats
![Page 14: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/14.jpg)
Pointer Swizzling Like reference-time, but cache results in the
memory location Only first reference is expensive But each sharer must have his own copy Must “unswizzle” pointers to transfer data
outside of local context Stale swizzled pointers can cause problems
![Page 15: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/15.jpg)
Shared Memory in a Wide Virtual Address Space When virtual memory was created, 16 or 32
bit addresses were available Reasonable size for one process
But maybe not for all processes on a machine And certainly not for all processes ever on a
machine
![Page 16: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/16.jpg)
Wide Address Space Architectures Computer architects can now give us 64-bit
virtual addresses A 64-bit address space, consumed at 100
MB/sec, lasts 5000 years Orders of magnitude beyond any process’s needs 40 bits can address a TB
![Page 17: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/17.jpg)
Do we care? Should OS designers care about wide address
space? Well, what can we do with them? One possible answer:
Put all processes in the same address space Maybe all processes for all time?
![Page 18: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/18.jpg)
Implications of Single Shared Address Space IPC is trivial
Shared memory, RPC Separation of concepts of address space and
protection domain Uniform address space
![Page 19: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/19.jpg)
Address Space and Protection Domain A process has a protection domain
The data that cannot be touched by other processes
And an address space The addresses it can generate and access
In standard systems, these concepts are merged
![Page 20: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/20.jpg)
Separating the Concepts These concepts are potentially orthogonal Just because you can issue an address doesn’t
mean you can access it (Though clearly to access an address you
must be able to issue it) Existing hardware can support this separation
![Page 21: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/21.jpg)
Context-Independent Addressing Addresses mean the same thing in any
execution context So, a given address always refers to the same
piece of data Key concept of uniform-address systems Allows many OS optimizations/improvements
![Page 22: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/22.jpg)
Uniform-Addressing Allows Easy Sharing Any process can issue any address
So any data can be shared All that’s required is changing protection to
permit desired sharing Suggests programming methods that make
wider use of sharing
![Page 23: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/23.jpg)
To Opal System New OS using uniform-addressing Developed at University of Washington Not intended as slight alteration to existing
UNIX system Most of the rest of material specific to Opal
![Page 24: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/24.jpg)
Protection Mechanisms for Uniform-Addressing Protection domains are assigned portions of
the address space They can allow other protection domains to
access them Read-only Transferable access permissions System-enforced page-level locking
![Page 25: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/25.jpg)
Program Execution in Uniform-Access Memory Executing a program creates a new protection
domain The new domain is assigned an unused
portion of the address space But it may also get access to used portions E.g., a segment containing the required
executable image
![Page 26: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/26.jpg)
Virtual Segments Global address space is divided into segments
Each composed of variable number of contiguous virtual pages
Domains can only access segments they attach to
Attempting to access unattached segment causes a segment fault
![Page 27: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/27.jpg)
Persistent Memory in Opal Persistent segments exist even when attached
to no current domain Recoverable segments are permanently stored
And can thus survive crashes All Opal segments can be persistent and
recoverable Pointers can thus live forever on disk
![Page 28: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/28.jpg)
Code Modules in Opal Executable code stored in modules
Independent of protection domains Pure modules can be easily shared
Because they are essentially static Can get benefit of dynamic loading without
run-time linking
![Page 29: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/29.jpg)
Address Space Reclamation Trivial in non-uniform-address systems Tricky in uniform-address systems Problem akin to reclaiming i_nodes in the
presence of hard links But even if segments improperly reclaimed,
only trusting domains can be hurt
![Page 30: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/30.jpg)
Windows NT IPC Inter-thread communications
Within a single process Local procedure calls
Between processes on same machine Shared memory
![Page 31: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/31.jpg)
Windows NT and Threads Windows NT support multiple threads of
control in a single process address space Threads share address space
So communication among them is through memory
![Page 32: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/32.jpg)
Windows NT and Client/Server Computing Windows NT strongly supports the
client/server model of computing Various OS services are built as servers,
rather than part of the kernel Windows NT needs facilities to support
client/server operations Which guide users to building client/server
solution
![Page 33: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/33.jpg)
Client/Server Computing and RPC In client/server computing, clients request
services from servers Service can be requested in many ways
But RPC is a typical way Windows NT uses a specialized service for
single machine RPC
![Page 34: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/34.jpg)
Local Procedure Call (LPC) Similar in many ways to RPC But optimized to only work on a single
machine Primarily used to communicate with protected
subsystems Windows NT also provides a true RPC
facility for genuinely distributed computing
![Page 35: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/35.jpg)
Basic Flow of Control in Windows NT LPC Application calls routine in an application
programming interface Which is usually in a dynamically linked
library Which sends a message to the server through
a messaging mechanism
![Page 36: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/36.jpg)
Windows NT LPC Messaging Mechanisms Messages between port objects Message pointers into shared memory Using dedicated shared memory segments
![Page 37: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/37.jpg)
Port Objects Windows NT is generally object-oriented Port objects support communications Two types:
Connection ports Communication ports
![Page 38: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/38.jpg)
Connection Ports Used to establish connections between clients
and servers Named, so they can be located Only used to set up communication ports
![Page 39: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/39.jpg)
Communication Ports Used to actually pass data Created in pairs, between given client and
given server Private to those two processes Destroyed when communications end
![Page 40: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/40.jpg)
Windows NT Port Example
Client process Server process
Connection port
![Page 41: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/41.jpg)
Windows NT Port Example
Client process Server process
Connection port
![Page 42: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/42.jpg)
Communication ports
Windows NT Port Example
Client process Server process
Connection port
![Page 43: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/43.jpg)
Communication ports
Windows NT Port Example
Client process Server process
Connection port
Send request
![Page 44: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/44.jpg)
Message Passing through Port Object Message Queues One of three methods in Windows NT to pass
messages1. Client submits message to OS
2. OS copies to receiver’s queue
3. Receiver copies from queue to its own address space
![Page 45: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/45.jpg)
Characteristics of Message Passing via Queues Two message copies required Fixed-sized, fairly short message
~256 bytes Port objects stored in system memory
So always accessible to OS Fixed number of entries in message queue
![Page 46: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/46.jpg)
Message Passing Through Shared Memory Used for messages larger than 256 bytes Client must create section object
Shared memory segment Of arbitrary size
Message goes into the section Pointer to message sent to receiver’s queue
![Page 47: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/47.jpg)
Setting up Section Objects Pre-arranged through OS calls Using virtual memory to map segment into
both sender and receiver’s address space If replies are large, need another segment for
the receiver to store responses OS doesn’t format section objects
![Page 48: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/48.jpg)
Characteristics of Message Passing via Shared Memory Capable of handling arbitrarily large transfers Sender and receiver can share a single copy of
data i.e., data copied only once
Requires pre-arrangement for section object
![Page 49: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/49.jpg)
Server Handling of Requests Windows NT servers expect requests from
multiple clients Typically, they have multiple threads to
handle requests Must be sufficiently general to handle many
different ports and section objects
![Page 50: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/50.jpg)
Message Passing Through Quick LPC Third way to pass messages in Windows NT Used exclusively with Win32 subsystem Like shared memory, but with a key
difference Dedicated resources
![Page 51: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/51.jpg)
Use of Dedicated Resources in Quick LPC To avoid overhead of copying
Notification messages to port queue And thread switching overhead
Client sets up dedicated server thread only for its use
Also dedicated 64KB section object And event pair object for synchronization
![Page 52: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/52.jpg)
Characteristics of Message Passing via Quick LPC Transfers of limited size Very quick Minimal copying of anything Wasteful of OS resources
![Page 53: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/53.jpg)
Shared Memory in Windows NT Similar in most ways to other shared memory
services Windows NT runs on multiprocessors, which
complicates things Done through virtual memory
![Page 54: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/54.jpg)
Shared Memory Sections Block of memory shared by two or more
processes Created with unique name
Can be very, very large
![Page 55: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/55.jpg)
Section Views Given process might not want to waste lots of
its address space on big sections So a process can have a view into a shared
memory section Different processes can have different views
of same section Or multiple views for single process
![Page 56: Interprocess Communications Continued](https://reader036.vdocument.in/reader036/viewer/2022062409/568148ba550346895db5d6d1/html5/thumbnails/56.jpg)
Shared Memory View Diagram
Process A Process B
Physical memory
Section
view 1 view 2
view 3