summaryrefslogtreecommitdiffstats
path: root/doc/user/concepts.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/concepts.t')
-rw-r--r--doc/user/concepts.t297
1 files changed, 0 insertions, 297 deletions
diff --git a/doc/user/concepts.t b/doc/user/concepts.t
deleted file mode 100644
index c68a9a95b4..0000000000
--- a/doc/user/concepts.t
+++ /dev/null
@@ -1,297 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@c
-@c The following figure was replaced with an ASCII equivalent.
-@c Figure 2-1 Object ID Composition
-@c
-
-@chapter Key Concepts
-
-@section Introduction
-
-The facilities provided by RTEMS are built upon a
-foundation of very powerful concepts. These concepts must be
-understood before the application developer can efficiently
-utilize RTEMS. The purpose of this chapter is to familiarize
-one with these concepts.
-
-@section Objects
-
-RTEMS provides directives which can be used to
-dynamically create, delete, and manipulate a set of predefined
-object types. These types include tasks, message queues,
-semaphores, memory regions, memory partitions, timers, ports,
-and rate monotonic periods. The object-oriented nature of RTEMS
-encourages the creation of modular applications built upon
-re-usable "building block" routines.
-
-All objects are created on the local node as required
-by the application and have an RTEMS assigned ID. All objects
-have a user-assigned name. Although a relationship exists
-between an object's name and its RTEMS assigned ID, the name and
-ID are not identical. Object names are completely arbitrary and
-selected by the user as a meaningful "tag" which may commonly
-reflect the object's use in the application. Conversely, object
-IDs are designed to facilitate efficient object manipulation by
-the executive.
-
-An object name is an unsigned thirty-two bit entity
-associated with the object by the user. Although not required
-by RTEMS, object names are typically composed of four ASCII
-characters which help identify that object. For example, a task
-which causes a light to blink might be called "LITE". Utilities
-are provided to build an object name from four ASCII characters
-and to decompose an object name into four ASCII characters.
-However, it is not required that the application use ASCII
-characters to build object names. For example, if an
-application requires one-hundred tasks, it would be difficult to
-assign meaningful ASCII names to each task. A more convenient
-approach would be to name them the binary values one through
-one-hundred, respectively.
-
-@need 3000
-
-An object ID is a unique unsigned thirty-two bit
-entity composed of three parts: object class, node, and index.
-The most significant six bits are the object class. The next
-ten bits are the number of the node on which this object was
-created. The node number is always one (1) in a single
-processor system. The least significant sixteen bits form an
-identifier within a particular object type. This identifier,
-called the object index, ranges in value from 1 to the maximum
-number of objects configured for this object type.
-
-@ifset use-ascii
-@example
-@group
- 31 26 25 16 15 0
- +-----------+------------------+-------------------------------+
- | | | |
- | Class | Node | Index |
- | | | |
- +-----------+------------------+-------------------------------+
-@end group
-@end example
-@end ifset
-
-@ifset use-tex
-@sp 1
-@tex
-\centerline{\vbox{\offinterlineskip\halign{
-\strut#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-#&
-\hbox to 1.00in{\enskip#}&
-\hbox to 1.00in{\enskip#}&
-#\cr
-\multispan{9}\cr
-\multispan{2}31\hfil&\multispan{2}\hfil26\enskip&
- \multispan{1}\enskip25\hfil&\multispan{2}\hfil16\enskip&
- \multispan{1}\enskip15\hfil&\multispan{2}\hfil0\cr
-&&&&&&&&&\cr
-}}\hfil}
-\centerline{\vbox{\offinterlineskip\halign{
-\strut\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#&
-\hbox to 0.50in{\enskip#}&
-\hbox to 0.50in{\enskip#}&
-\vrule#\cr
-\multispan{9}\cr
-\noalign{\hrule}
-&&&&&&&&&\cr
-&\multispan{2}\hfil Class\hfil&&
- \multispan{2}\hfil Node\hfil&&
- \multispan{2}\hfil Index\hfil&\cr
-&&&&&&&&&\cr
-\noalign{\hrule}
-}}\hfil}
-@end tex
-@end ifset
-
-@ifset use-html
-@html
-<CENTER>
- <TABLE COLS=6 WIDTH="60%" BORDER=0>
-<TR><TD ALIGN=left><STRONG>31</STRONG></TD>
- <TD ALIGN=right><STRONG>26</STRONG></TD>
- <TD ALIGN=left><STRONG>25</STRONG></TD>
- <TD ALIGN=right><STRONG>16</STRONG></TD>
- <TD ALIGN=left><STRONG>15</STRONG></TD>
- <TD ALIGN=right><STRONG>0</STRONG></TD></TR>
- </TABLE>
-</CENTER>
-<CENTER>
- <TABLE COLS=6 WIDTH="60%" BORDER=2>
-<TR><TD ALIGN=center COLSPAN=2>Class</TD>
- <TD ALIGN=center COLSPAN=2>Node</TD>
- <TD ALIGN=center COLSPAN=2>Index</TD></TD>
- </TABLE>
-</CENTER>
-@end html
-@end ifset
-
-
-The three components of an object ID make it possible
-to quickly locate any object in even the most complicated
-multiprocessor system. Object ID's are associated with an
-object by RTEMS when the object is created and the corresponding
-ID is returned by the appropriate object create directive. The
-object ID is required as input to all directives involving
-objects, except those which create an object or obtain the ID of
-an object.
-
-The object identification directives can be used to
-dynamically obtain a particular object's ID given its name.
-This mapping is accomplished by searching the name table
-associated with this object type. If the name is non-unique,
-then the ID associated with the first occurrence of the name
-will be returned to the application. Since object IDs are
-returned when the object is created, the object identification
-directives are not necessary in a properly designed single
-processor application.
-
-An object control block is a data structure defined
-by RTEMS which contains the information necessary to manage a
-particular object type. For efficiency reasons, the format of
-each object type's control block is different. However, many of
-the fields are similar in function. The number of each type of
-control block is application dependent and determined by the
-values specified in the user's Configuration Table. An object
-control block is allocated at object create time and freed when
-the object is deleted. With the exception of user extension
-routines, object control blocks are not directly manipulated by
-user applications.
-
-@section Communication and Synchronization
-
-In real-time multitasking applications, the ability
-for cooperating execution threads to communicate and synchronize
-with each other is imperative. A real-time executive should
-provide an application with the following capabilities:
-
-@itemize @bullet
-@item Data transfer between cooperating tasks
-@item Data transfer between tasks and ISRs
-@item Synchronization of cooperating tasks
-@item Synchronization of tasks and ISRs
-@end itemize
-
-Most RTEMS managers can be used to provide some form
-of communication and/or synchronization. However, managers
-dedicated specifically to communication and synchronization
-provide well established mechanisms which directly map to the
-application's varying needs. This level of flexibility allows
-the application designer to match the features of a particular
-manager with the complexity of communication and synchronization
-required. The following managers were specifically designed for
-communication and synchronization:
-
-@itemize @bullet
-@item Semaphore
-@item Message Queue
-@item Event
-@item Signal
-@end itemize
-
-The semaphore manager supports mutual exclusion
-involving the synchronization of access to one or more shared
-user resources. Binary semaphores may utilize the optional
-priority inheritance algorithm to avoid the problem of priority
-inversion. The message manager supports both communication and
-synchronization, while the event manager primarily provides a
-high performance synchronization mechanism. The signal manager
-supports only asynchronous communication and is typically used
-for exception handling.
-
-@section Time
-
-The development of responsive real-time applications
-requires an understanding of how RTEMS maintains and supports
-time-related operations. The basic unit of time in RTEMS is
-known as a tick. The frequency of clock ticks is completely
-application dependent and determines the granularity and
-accuracy of all interval and calendar time operations.
-
-By tracking time in units of ticks, RTEMS is capable
-of supporting interval timing functions such as task delays,
-timeouts, timeslicing, the delayed execution of timer service
-routines, and the rate monotonic scheduling of tasks. An
-interval is defined as a number of ticks relative to the current
-time. For example, when a task delays for an interval of ten
-ticks, it is implied that the task will not execute until ten
-clock ticks have occurred.
-
-A characteristic of interval timing is that the
-actual interval period may be a fraction of a tick less than the
-interval requested. This occurs because the time at which the
-delay timer is set up occurs at some time between two clock
-ticks. Therefore, the first countdown tick occurs in less than
-the complete time interval for a tick. This can be a problem if
-the clock granularity is large.
-
-The rate monotonic scheduling algorithm is a hard
-real-time scheduling methodology. This methodology provides
-rules which allows one to guarantee that a set of independent
-periodic tasks will always meet their deadlines -- even under
-transient overload conditions. The rate monotonic manager
-provides directives built upon the Clock Manager's interval
-timer support routines.
-
-Interval timing is not sufficient for the many
-applications which require that time be kept in wall time or
-true calendar form. Consequently, RTEMS maintains the current
-date and time. This allows selected time operations to be
-scheduled at an actual calendar date and time. For example, a
-task could request to delay until midnight on New Year's Eve
-before lowering the ball at Times Square.
-
-Obviously, the directives which use intervals or wall
-time cannot operate without some external mechanism which
-provides a periodic clock tick. This clock tick is typically
-provided by a real time clock or counter/timer device.
-
-@section Memory Management
-
-RTEMS memory management facilities can be grouped
-into two classes: dynamic memory allocation and address
-translation. Dynamic memory allocation is required by
-applications whose memory requirements vary through the
-application's course of execution. Address translation is
-needed by applications which share memory with another CPU or an
-intelligent Input/Output processor. The following RTEMS
-managers provide facilities to manage memory:
-
-@itemize @bullet
-@item Region
-
-@item Partition
-
-@item Dual Ported Memory
-@end itemize
-
-RTEMS memory management features allow an application
-to create simple memory pools of fixed size buffers and/or more
-complex memory pools of variable size segments. The partition
-manager provides directives to manage and maintain pools of
-fixed size entities such as resource control blocks.
-Alternatively, the region manager provides a more general
-purpose memory allocation scheme that supports variable size
-blocks of memory which are dynamically obtained and freed by the
-application. The dual-ported memory manager provides executive
-support for address translation between internal and external
-dual-ported RAM address space.