BitCtrl Systems GmbH
Foto Weissenfelserstr. 67
Suche:     
 BitCtrl Systems GmbH
Produkte Support News & Events Download Shop Partner Kontakt
  QNX® - Allgemeine Info
  QNX® News
  QNX® Produkt Katalog
  Free Downloads
  FAQ
  Support/Service
  Links
  Repository
  Produkt Dokumentation
QNX® 6 - System Architecture
Glossary

A20 gate

On x86-based systems, a hardware component that forces the A20 address line on the bus to zero, regardless of the actual setting of the A20 address line on the processor. This component is in place to support legacy systems, but Neutrino doesn't require any such hardware. Note that some processors, such as the 386EX, have the A20 gate hardware built right into the processor itself - the Neutrino IPL will disable the A20 gate as soon as possible after startup.

atomic

Of or relating to atoms. :-)

In realtime systems, this refers to the requirement that an operation, or sequence of operations, be considered indivisible. For example, a thread may need to move a file descriptor to a given location and read data. These operations must be performed in an atomic manner; otherwise, another thread could preempt the original thread and move the file descriptor to a different location, thus causing the original thread to read data from the second thread's position.

attributes structure

Structure containing information used on a per-resource basis (as opposed to the OCB, which is used on a per-open basis).

This structure is also known as a handle. The structure definition is fixed (iofunc_attr_t), but may be extended. See also mount structure.

bank-switched

A term indicating that a certain memory component (usually the device holding an image) isn't entirely addressable by the processor. In this case, a hardware component manifests a small portion (or "window") of the device onto the processor's address bus. Special commands have to be issued to the hardware to move the window to different locations in the device. See also linearly mapped.

base layer calls

Convenient set of library calls for writing resource managers. These calls all start with resmgr_*(). Note that while some base layer calls are unavoidable (e.g. resmgr_pathname_attach()), we recommend that you use the POSIX layer calls where possible.

BIOS/ROM Monitor extension signature

A certain sequence of bytes indicating to the BIOS or ROM Monitor that the device is to be considered an "extension" to the BIOS or ROM Monitor - control is to be transferred to the device by the BIOS or ROM Monitor, with the expectation that the device will perform additional initializations.

On the x86 architecture, the two bytes 0x55 and 0xAA must be present (in that order) as the first two bytes in the device, with control being transferred to offset 0x0003.

block-integral

The requirement that data be transferred such that individual structure components are transferred in their entirety - no partial structure component transfers are allowed.

In a resource manager, directory data must be returned to a client as block-integral data. This means that only complete struct direct structures can be returned - it's inappropriate to return partial structures, assuming that the next _IO_READ request will "pick up" where the previous one left off.

bootable

A Neutrino image can be either bootable or nonbootable. A bootable image is one that contains the startup code that the IPL can transfer control

buildfile

A text file containing instructions for mkifs specifying the contents and other details of an image.

canonical mode

Also called edited mode or "cooked" mode. In this mode the character device library performs line-editing operations on each received character. Only when a line is "completely entered" - typically when a carriage return (CR) is received - will the line of data be made available to application processes.

channel

A kernel object used with message passing.

In Neutrino, message passing is directed towards connections (made to channels), and threads can receive messages from channels. A thread that wishes to receive messages creates a channel (see ChannelCreate()), and then receives messages from that channel (see MsgReceivev()). Another thread that wishes to send a message to the first thread must make a connection to that channel by "attaching" to the channel (see ConnectAttach()) and then sending data (see MsgSendv()).

Common Internet File System (aka SMB) - protocol that allows a client workstation to perform transparent file access over a network to a Windows 95/98/NT server. Client file access calls are converted to CIFS protocol requests and are sent to the server over the network. The server receives the request, performs the actual filesystem operation, and sends a response back to the client.

CIS

Card Information Structure - a data block that maintains information about flash configuration. The CIS description includes the types of memory devices in the regions, the physical geometry of these devices, and the partitions located on the flash.

combine message

A resource manager message that consists of two or more messages. The messages are constructed as combine message by the client's C library (e.g. stat(), readblock()), and are then handled as individual messages by the resource manager.

Combine messages exist in order to conserve network bandwidth and/or to provide support for atomic operations. See also connect message and I/O message.

connect message

In a resource manager, a message issued by the client to perform an operation based on a pathname (e.g. an io_open message). Depending upon the type of connect message sent, a context block (see OCB) may be associated with the request and will be passed to subsequent I/O messages. See also combine message and I/O message.

connection

A kernel object used with message passing.

Created by client threads to "connect" to the channels made available by servers. Once connections are established, clients can MsgSendv() messages over them. If a number of threads in a process all attach to the same channel, then the one connection is shared between all the threads. Channels and connections are identified within a process by a small integer. See also channel.

The key thing to note is that connections and file descriptors are one and the same object under Neutrino.

context

Information retained between invocations of functionality.

When using a resource manager, the client sets up an association or context within the resource manager by issuing an open() call and getting back a file descriptor. The resource manager is responsible for storing the information required by the context (see OCB). When the client issues further file-descriptor based messages, the resource manager uses the OCB to determine the context for interpretation of the client's messages.

cooked mode

See canonical mode.

critical section

A code passage that must be executed "serially" (i.e. by only one thread at a time). The simplest from of critical section enforcement is via a mutex.

deadlock

A condition in which one or more threads are unable to continue due to resource contention. A common form of deadlock can occur when one thread sends a message to another, while the other thread sends a message to the first. Both threads are now waiting for each other to reply to the message. Deadlock can be avoided by good design practices or massive kludges - we recommend the good design approach.

device driver

A process that allows the OS and application programs to make use of the underlying hardware in a generic way (e.g. a disk drive, a network interface). Unlike OSs that require device drivers to be tightly bound into the OS itself, device drivers for QNX® Neutrino are standard processes that can be started and stopped dynamically. As a result, adding device drivers doesn't affect any other part of the OS - drivers can be developed and debugged like any other application. Also, device drivers are in their own protected address space, so a bug in a device driver won't cause the entire OS to shut down.

dynamic linking

The process whereby you link your modules in such a way that the Process Manager will link them to the library modules before your program runs. The word "dynamic" here means that the association between your program and the library modules that it uses is done at load time, not at linktime. Contrast static linking. See also runtime loading.

dynamic bootfile

A Neutrino image built on the fly. Contrast static bootfile.

edge-sensitive

One of two ways in which a PIC (Programmable Interrupt Controller) can be programmed to respond to interrupts. In edge-sensitive mode, the interrupt is "noticed" only when the interrupt line transits from clear to asserted. Contrast with level-sensitive.

edited mode

See canonical mode.

EPROM

Erasable Programmable Read-Only Memory - a memory technology that allows the device to be programmed (typically with higher-than-operating voltages, e.g. 12V), with the characteristic that any bit (or bits) may be individually programmed from a 1 state to a 0 state. To change a bit from a 0 state into a 1 state can only be accomplished by erasing the entire device, setting all of the bits to a 1 state. Erasing is accomplished by shining an ultraviolet light through the erase window of the device for a fixed period of time (typically 10-20 minutes). The device is further characterized by having a limited number of erase cycles (typically 10e5 - 10e6). Contrast with flash and RAM

EOI

End Of Interrupt - a command that the OS sends to the PIC after processing all Interrupt Service Routines (ISR) for that particular interrupt source so that the PIC can reset the processor's In Service Register. See also PIC and ISR.

event

A notification scheme used to inform a thread that a particular condition has occurred. Events can be signals or pulses in the general case; they can also be unblocking events or interrupt events in the case of kernel timeouts and interrupt service routines. An event is delivered by a thread, a timer, the kernel, or an interrupt service routine when appropriate to the requestor of the event.

FD

File Descriptor - a client must open a file descriptor to a resource manager via the open() function call. The file descriptor then serves as a handle for the client to use in subsequent messages. Note that a file descriptor is the exact same object as a connection ID (coid, returned by ConnectAttach()).

FIFO

First In First Out - a scheduling algorithm whereby a thread is able to consume CPU at its priority level without bounds (contrast round robin).

flash memory

A memory technology similar in characteristics to EPROM memory, with the exception that erasing is performed electrically instead of via ultraviolet light, and, depending upon the organization of the flash memory device, erasing may be accomplished in blocks (typically 64k bytes at a time) instead of the entire device. Contrast with EPROM and RAM

garbage collection

AKA space reclamation, the process whereby a filesystem manager recovers the space occupied by deleted files and directories.

handle

A pointer that the resource manager base library binds to the pathname registered via resmgr_pathname_attach(). This handle is typically used to associate some kind of per-device information. Note that if you use the iofunc_*() POSIX layer calls, you must use a particular type of handle - in this case called an attributes structure.

image

In the embedded Neutrino world, an "image" can mean either a structure that contains files (i.e. a Neutrino image) or a structure that can be used in a read-only, read/write, or read/write/reclaim FFS-2-compatible filesystem (i.e. a flash filesystem image).

interrupt

An event (usually caused by hardware) that interrupts whatever the processor was doing and asks it do something else. The hardware will generate an interrupt whenever it has reached some state where software intervention is required.

interrupt handler

See ISR.

interrupt latency

The amount of elapsed time between the generation of a hardware interrupt and the first instruction executed by the relevant interrupt service routine. Also designated as "Til". Contrast with scheduling latency.

interrupt service routine

See ISR.

interrupt service thread

A thread that is responsible for performing thread-level servicing of an interrupt.

Since the number of functions that an ISR can call is very limited, and the amount of time spent in an ISR should be kept to a minimum, it is generally desirable to have the bulk of the interrupt servicing work done by a thread. The thread attaches the interrupt (via InterruptAttach()) and then blocks (via InterruptWait()), waiting for the ISR to tell it to do something (by returning an event of type SIGEV_INTR). To aid in minimizing scheduling latency, the interrupt service thread should raise its priority appropriately.

I/O message

A message that relies on an existing binding between the client and the resource manager. For example, an _IO_READ message depends on the client's having previously established an association (or context) with the resource manager by issuing an open() and getting back a file descriptor. See also connect message, context, and combine message.

I/O Privity

A particular x86 processor-specific privilege, that, if enabled for a given thread, allows the thread to perform I/O instructions (the x86 assembler in and out instructions). By default, I/O Privity is disabled, because a program with it enabled can wreak havoc on a system. To enable it, the thread must be running as root, and call ThreadCtl().

IPC

Interprocess Communication - the ability for two processes (or threads) to communicate. Neutrino offers several forms of IPC, most notably native messaging (synchronous, client/server relationship), POSIX message queues and pipes (asynchronous), as well as signals.

IPL

Initial Program Loader - the software component that either takes control at the processor's reset vector (e.g. location 0xFFFFFFF0 on the x86), or is a BIOS extension. This component is responsible for setting up the machine into a usable state, such that the startup program can then perform further initializations. The IPL is written in assembler. See also BIOS extension signature and startup code.

IRQ

Interrupt Request - a hardware request line asserted by a peripheral to indicate that it requires servicing by software. The IRQ is handled by the PIC, which then interrupts the processor, usually causing the processor to execute an Interrupt Service Routine (ISR).

ISR

Interrupt Service Routine - a routine responsible for servicing hardware (e.g. reading and/or writing some device ports), for updating some data structures shared between the ISR and the thread(s) running in the application, and for signalling the thread that some kind of event has occurred.

level-sensitive

One of two ways in which a PIC (Programmable Interrupt Controller) can be programmed to respond to interrupts. If the PIC is operating in level-sensitive mode, the IRQ is considered active whenever the corresponding hardware line is active. Contrast edge-sensitive.

linearly mapped

A term indicating that a certain memory component is entirely addressable by the processor. Contrast bank-switched.

mount structure

A optional, well-defined data structure (of type iofunc_mount_t) within an iofunc_*() structure, which contains information used on a per-mountpoint basis (generally used only for filesystem resource managers). See also attributes structure and OCB.

mountpoint

The location in the pathname space where a resource manager has "registered" itself. For example, the serial port resource manager registers mountpoints for each serial device (/dev/ser1, /dev/ser2, etc.), and a CD-ROM filesystem may register a single mountpoint of /cdrom.

mutex

Mutual exclusion lock, a simple synchronization service used to ensure exclusive access to data shared between threads. It is typically acquired (pthread_mutex_lock()) and released (pthread_mutex_unlock()) around the code that accesses the shared data (usually a critical section). See also critical section.

NMI

Nonmaskable Interrupt - an interrupt that cannot be masked by the processor.

nonbootable

A nonbootable Neutrino image is usually provided for larger embedded systems or for small embedded systems where a separate, configuration-dependent setup may be required. Think of it as a second "filesystem" that has some additional files on it. Since it's non-bootable, it typically won't contain the OS, startup file, etc.

OCB

Open Control Block (or Open Context Block) - a block of data established by a resource manager during its handling of the client's open() function. This context block is bound by the resource manager to this particular request, and is then automatically passed to all subsequent I/O functions generated by the client on the file descriptor returned by the client's open().

pathname prefix

See mountpoint.

pathname space mapping

The process whereby the Process Manager maintains an association between resource managers and entries in the pathname space.

persistent

When applied to storage media, the ability for the medium to retain information across a power-cycle. For example, a hard disk is a persistent storage medium, whereas a ramdisk is not, because the data is lost when power is lost.

PIC

Programmable Interrupt Controller - hardware component that handles IRQs. See also edge-sensitive, level-sensitive, and ISR.

POSIX

An IEEE/ISO standard. The term is an acronym (of sorts) for Portable Operating System Interface - the "X" alludes to "UNIX", on which the interface is based.

POSIX layer calls

Convenient set of library calls for writing resource managers. The POSIX layer calls can handle even more of the common-case messages and functions than the base layer calls. These calls are identified by the iofunc_*() prefix. In order to use these (and we strongly recommend that you do), you must also use the well-defined POSIX-layer attributes (iofunc_attr_t), OCB (iofunc_ocb_t), and (optionally) mount (iofunc_mount_t) structures.

preemption

The act of suspending the execution of one thread and starting (or resuming) another. The suspended thread is said to have been "preempted" by the new thread. In Neutrino, whenever a lower-priority thread is actively consuming the CPU, and a higher-priority thread becomes READY, the lower-priority thread is immediately preempted by the higher-priority thread.

prefix tree

The internal representation used by the Process Manager to store the pathname table.

priority inheritance

The characteristic of a thread that causes its priority to be raised or lowered to that of the thread that sent it a message. Also used with mutexes. Priority inheritance is a method used to prevent priority inversion.

priority inversion

A condition that can occur when a low-priority thread consumes CPU at a higher priority than it should. This can be caused by not supporting priority inheritance, such that when the lower-priority thread sends a message to a higher-priority thread, the higher-priority thread consumes CPU on behalf of the lower-priority thread. This is solved by having the higher-priority thread inherit the priority of the thread on whose behalf it's working.

process

A non-schedulable entity, which defines the address space and a few data areas. In Neutrino, a process must have at least one thread running in it - this thread is then called the main thread.

pty

Pseudo-TTY - a character-based device that has two "ends": a master end and a slave end. Data written to the master end shows up on the slave end, and vice versa. These devices are typically used to interface between a program that expects a character device and another program that wishes to use that device (e.g. the shell and the telnet daemon process, used for logging in to a system over the Internet).

pulses

In addition to the synchronous Send/Receive/Reply services, Neutrino also supports fixed-size, non-blocking messages known as pulses. These carry a small payload (four bytes of data plus a single byte code). A pulse is also one form of event that can be returned from an ISR or a timer. See MsgDeliverEvent() for more information.

RAM

Random Access Memory - a memory technology characterized by the ability to read and write any location in the device without limitation. Contrast with flash and EPROM.

raw mode

In raw input mode, the character device library performs no editing on received characters. This reduces the processing done on each character to a minimum and provides the highest performance interface for reading data. Also, raw mode is used with devices that typically generate binary data - you don't want any translations of the raw binary stream between the device and the application.

reset vector

The address at which the processor begins executing instructions after the processor's reset line has been activated. On the x86, for example, this is the address 0xFFFFFFF0.

resource manager

See device driver.

round robin

Scheduling algorithm whereby a thread is given a certain period of time to run. Should the thread consume CPU for the entire period of its timeslice, the thread will be placed at the end of the ready queue for its priority, and the next available thread will be made READY. If a thread is the only thread READY at its priority level, it will be able to consume CPU again immediately.

runtime loading

The process whereby a program decides while it's actually running that it wishes to load a particular function from a library. Contrast static linking.

scheduling latency

The amount of time that elapses between one thread making another thread READY and the other thread actually getting some CPU time. Note that this latency is almost always at the control of the system designer.

Also designated as "Tsl". Contrast with interrupt latency.

software interrupts

Similar to a hardware interrupt (see interrupt), except that the source of the interrupt is software.

startup code

The software component that gains control after the IPL code has performed the minimum necessary amount of initialization. After gathering information about the system, the startup code loads the OS and transfers control.

static bootfile

An image created at one time and then transmitted whenever a node boots. Contrast dynamic bootfile.

static linking

The process whereby you combine your modules with the modules from the library to form a single executable that's entirely self-contained. The word "static" implies that it's not going to change - all the required modules are already combined into one executable. Contrast dynamic linking.

system page area

An area in the kernel that is filled by the startup code and contains information about the system (number of bytes of memory, location of serial ports, etc.) This is also called the SYSPAGE area.

timer

A kernel object used in conjunction with time-based functions. A timer is created via timer_create() and armed via timer_settime(). A timer can then deliver an event, either periodically or on a one-shot basis.

timeslice

A period of time assigned to a round-robin scheduled thread. This period of time is small (on the order of tens of milliseconds); the actual value shouldn't be relied upon by any program (it's considered bad design).

thread

The schedulable entity under Neutrino. A thread is a flow of execution; it exists within the context of a process.

<< Previous | Index

Home    Datenschutzerklärung    Haftungsausschluss    Impressum   
© 2011 BitCtrl Systems GmbH