Image Processing Reference
In-Depth Information
Client
Server
Skeleton
Stub
Dispatcher
2 KHz
100 Hz
HI
LO
HI
LO
nORB
HI
LO
nORB
Reactor
port:10000
Reactor
port:20000
Priority = LO
RequestId = 23
…….
…….
IOR
ObjectKeyA
Priority = LO,hostA:20000
Priority = HI,hostA:10000
FIGURE .
Priority propagation in nORB.
2.3.5 Priority Propagation
nORB implements real-time priority propagation in a way similar to TAO [,]. [,].The client ORB
uses the priority of the thread in which the remote invocation is made. nORB then looks for a
matching priority from the set of profiles in the IOR and then makes a connection to the appropriate
port. We use a cached connection strategy [] to avoid the overhead of connection setup every time
a remote invocation is made. To alleviate priority inversion, each connection endpoint on the server
is associated with a thread/reactor pair, thus forming a “dispatching lane.” he priority of the thread
associated with each dispatching lane is set appropriately so that a request coming into a higher pri-
oritylanewillbeprocessedbeforearequestcomingintoalowerprioritylane.Figure.showsan
example in which RMS [] was used to assign priorities to the different rates on the client side.
hepriorityoftheclientthreadmakingtherequestispropagatedintherequest.hispriorityis
used on the server side to enqueue the request if necessary as explained in Section ...
2.3.6 Simulation Support
Our solution to the engineering life-cycle issues described in Section .. is to have nORB maintain
a logical clock [,] at each node to support synchronization among nodes. We distinguish between
“logical” times and priorities that are maintained by the simulation, and “actual” times and priorities
that are maintained by the operating system. Logical time is divided into discrete frames. Each logical
clock is incremented in discrete units by nORB after any incoming message is processed. If there are
no incoming messages to be processed, then the logical time is incremented to the start of the next
frame.
At the start of each frame, each node registered for a timed upcall in that frame is triggered, which
results in the node waiting for sensor values from a physical simulation tool like Matlab or Simulink.
Whileanodeiswaitingforthesensorvalues,we“freeze”thelogicalclockonthatnode,i.e.,we
 
Search WWH ::




Custom Search