source: rtems-docs/user/overview/index.rst @ 86518bd

4.115
Last change on this file since 86518bd was 86518bd, checked in by Chris Johns <chrisj@…>, on 07/04/16 at 02:30:09

Reorganisse the User Manual to make it easier to navigate.

  • Property mode set to 100644
File size: 5.9 KB
Line 
1.. comment SPDX-License-Identifier: CC-BY-SA-4.0
2
3Overview
4=========
5
6Welcome to the :ref:term:`RTEMS` User Manual.
7
8This document covers the topics a user of RTEMS needs to be able to install,
9configure, build and create applications for the RTEMS operating system.
10
11RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time executive
12(kernel) which provides a high performance environment for embedded
13applications with the following features:
14
15.. sidebar:: Developers
16
17  Developers should look at the :r:url:`devel` for technical information. The
18  design and development of RTEMS is located there.
19
20- standards based user interfaces
21
22- multitasking capabilities
23
24- homogeneous and heterogeneous multiprocessor systems
25
26- event-driven, priority-based, preemptive scheduling
27
28- optional rate monotonic scheduling
29
30- intertask communication and synchronization
31
32- priority inheritance
33
34- responsive interrupt management
35
36- dynamic memory allocation
37
38- high level of user configurability
39
40- open source with a friendly user license
41
42RTEMS provides features found in modern operating systems:
43
44- file systems
45
46- networking
47
48- USB
49
50- permanent media such as flash disks, cards and USB devices
51
52- support for various languages
53
54- parallel programming language support
55
56Real-time Application Systems
57-----------------------------
58
59Real-time application systems are a special class of computer applications.
60They have a complex set of characteristics that distinguish them from other
61software problems.  Generally, they must adhere to more rigorous requirements.
62The correctness of the system depends not only on the results of computations,
63but also on the time at which the results are produced.  The most important and
64complex characteristic of real-time application systems is that they must
65receive and respond to a set of external stimuli within rigid and critical time
66constraints referred to as deadlines.  Systems can be buried by an avalanche of
67interdependent, asynchronous or cyclical event streams.
68
69Deadlines can be further characterized as either hard or soft based upon the
70value of the results when produced after the deadline has passed.  A deadline
71is hard if the results have no value after the deadline has passed, or a
72catastophic event results from their intended use if not completed on time.  In
73contrast, results produced after a soft deadline may still have some value.
74
75Another distinguishing requirement of real-time application systems is the
76ability to coordinate or manage a large number of concurrent activities. Since
77software is a synchronous entity, this presents special problems.  One
78instruction follows another in a repeating synchronous cycle.  Even though
79mechanisms have been developed to allow for the processing of external
80asynchronous events, the software design efforts required to process and manage
81these events and tasks are growing more complicated.
82
83The design process is complicated further by spreading this activity over a set
84of processors instead of a single processor. The challenges associated with
85designing and building real-time application systems become very complex when
86multiple processors are involved.  New requirements such as interprocessor
87communication channels and global resources that must be shared between
88competing processors are introduced.  The ramifications of multiple processors
89complicate each and every characteristic of a real-time system.
90
91Real-time Executive
92-------------------
93
94Fortunately, real-time operating systems, or real-time executives, serve as a
95cornerstone on which to build the application system.  A real-time multitasking
96executive allows an application to be cast into a set of logical, autonomous
97processes or tasks which become quite manageable.  Each task is internally
98synchronous, but different tasks execute independently, resulting in an
99asynchronous processing stream.  Tasks can be dynamically paused for many
100reasons resulting in a different task being allowed to execute for a period of
101time.  The executive also provides an interface to other system components such
102as interrupt handlers and device drivers.  System components may request the
103executive to allocate and coordinate resources, and to wait for and trigger
104synchronizing conditions.  The executive system calls effectively extend the
105CPU instruction set to support efficient multitasking.  By causing tasks to
106travel through well-defined state transitions, system calls permit an
107application to demand-switch between tasks in response to real-time events.
108
109By properly grouping stimuli responses into separate tasks a system can now
110asynchronously switch between independent streams of execution. This allows the
111system to directly respond to external stimuli as they occur, as well as meet
112critical performance specifications that are typically measured by guaranteed
113response time and transaction throughput.  The multiprocessor extensions of
114RTEMS provide the features necessary to manage the extra requirements
115introduced by a system distributed across several processors.  It removes the
116physical barriers of processor boundaries from the world of the system
117designer, enabling more critical aspects of the system to receive the required
118attention. Such a system, based on an efficient real-time, multiprocessor
119executive, is a more realistic model of the outside world or environment for
120which it is designed.  As a result, the system will always be more logical,
121efficient, and reliable.
122
123By using the directives provided by RTEMS, the real-time applications developer
124is freed from the problem of controlling and synchronizing multiple tasks and
125processors.  In addition, one need not develop, test, debug, and document
126routines to manage memory, pass messages, or provide mutual exclusion.  The
127developer is then able to concentrate solely on the application.  By using
128standard software components, the time and cost required to develop
129sophisticated real-time applications is significantly reduced.
Note: See TracBrowser for help on using the repository browser.