26.02.2014 Views

Getting Started with QNX Neutrino - QNX Software Systems

Getting Started with QNX Neutrino - QNX Software Systems

Getting Started with QNX Neutrino - QNX Software Systems

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© 2009, <strong>QNX</strong> <strong>Software</strong> <strong>Systems</strong> GmbH & Co. KG.<br />

send a message<br />

send hierarchy<br />

server<br />

signal<br />

sporadic<br />

synchronous<br />

thread<br />

A thread can send a message to another thread. The MsgSend*() series of functions<br />

are used to send the message; the sending thread blocks until the receiving thread<br />

replies to the message. See Message passing. A thread that sends a message is said<br />

to be a Client.<br />

A design paradigm whereby messages sent flow in one direction, and messages<br />

replied to flow in another direction. The primary purpose of having a send hierarchy<br />

is to avoid deadlock. A send hierarchy is accomplished by assigning clients and<br />

servers a “level,” and ensuring that messages that are being sent go only to a higher<br />

level. This avoids the potential for deadlock where two threads would send to each<br />

other, because it would violate the send hierarchy — one thread should not have sent<br />

to the other thread, as that other thread must have been at a lower level.<br />

A server is a regular, user-level process that provides certain types of functionality<br />

(usually file-descriptor-based) to clients. Servers are typically Resource Managers,<br />

and there’s an extensive library provided by QSS which performs much of the<br />

functionality of a resource manager for you. The server’s job is to receive messages<br />

from clients, process them, and then reply to the messages, which unblocks the<br />

clients. A thread can be both a client and a server at the same time.<br />

A mechanism dating back to early UNIX systems that is used to send asynchronous<br />

notification of events from one thread to another. Signals are non-blocking for the<br />

sender. The receiver of the signal may decide to treat the signal in a synchronous<br />

manner by explicitly waiting for it. Contrast <strong>with</strong> pulse.<br />

Scheduling algorithm whereby a thread’s priority can oscillate dynamically between a<br />

“foreground” or normal priority and a “background” or low priority. A thread is given<br />

an execution budget of time to be consumed <strong>with</strong>in a certain replenishment period.<br />

See also FIFO and round robin.<br />

Used to indicate that a given operation has some synchronization to another operation.<br />

For example, during a message-passing operation, when the server does a<br />

MsgReply() (to reply to the client), the unblocking of the client is said to be<br />

synchronous to the reply operation. Contrast <strong>with</strong> Asynchronous.<br />

A single, schedulable, flow of execution. Threads are implemented directly <strong>with</strong>in the<br />

<strong>Neutrino</strong> kernel and correspond to the POSIX pthread*() function calls. A thread will<br />

need to synchronize <strong>with</strong> other threads (if any) by using various synchronization<br />

April 30, 2009 Glossary 333

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!