Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FEATURES-
Task synchronization and communication
Multitasking, preemptive, re-entrant
kernel • Semaphores and queues perform
either priority or FIFO scheduling of
• Supports implementing real-time
pending tasks. Semaphores are
applications as multiple semi-
counting semaphores. Message
autonomous tasks. Tasks are always
queues have either a fixed maximum
in one of five states: running, ready,
size or grow freely, limited only by
blocked, suspended, or delayed.
the amount of available memory.
• Provides for task communication and
• Mutexes operate like binary
synchronization, both with other
semaphores with ownership and
priority inheritance to avoid the get identifier calls which are
problem of priority inversion. infrequent operations.
• Events can make multiple tasks
Responsive
ready with a single system call.
Events are posted to a nexus which
• Timer-related processing that is
may contain any number of blocked
variant, such as sorting the timer
tasks. Tasks waiting for an event use
queue, is performed in the
a 32-bit mask to select which events
background using kernel tasks.
they respond to.
Minimal work is performed up front
• Timers can be used in a wide variety
when a system call requires timer
of system calls. Semaphores,
processing, allowing the CPU to
messages, and events can be posted
return more quickly to the
after a fixed delay or posted
application.
repeatedly at fixed intervals.
Application functions can be called Flexible Scheduler
after a fixed delay, or called
• The scheduler can be configured as
repeatedly at fixed intervals. Timers
non-preemptive, a requirement for
can be stopped, tested for expiration,
some third-party communication
and/or deleted at any time.
protocol stacks. When non-
preemptive, running tasks always
keep the CPU until making a service
Deterministic
call that blocks.
• If configured as preemptive, the
• Interrupt latency does not increase as
scheduler always runs the highest
the number of tasks, semaphores,
priority ready task. The running task
queues, etc., increase.
is preempted whenever an interrupt
• The execution time of every service
makes ready a task with higher
call is independent of the number of
priority than the currently running
tasks, queues, semaphores, etc., in
task.
the system, except for the delete and
• Preemption can be temporarily • IsrCreate() creates an entry in the
disabled with OsLockTask(). CPU's vector table and installs
Preemption is re-enabled by either "wrapper" routines that save and
calling OsUnlockTask(), or by restore the minimal registers required
making a service call that blocks. to allow the service routine to be
• Tasks may be configured for round written in C.
robin scheduling among tasks of the • The CPU vector table is initialized at
same priority. The time slice value is startup with default vectors that
configurable and may be examined allow bus errors and spurious
or modified at any time. interrupts to be reported on the stderr
console.
Easy to Use
Command Line Debug Monitor
• A compile-time option promotes all
service call errors to fatal errors that • Displays the percent of CPU time
cause an error message on stderr and used by each task and ISR. Displays
a break into the debug monitor. This the stack low water mark for each
helps catch simple programming task. Displays a log of past system
errors that can otherwise waste calls including the time of the call,
valuable time. the name of the task or ISR making
• Kernel objects (tasks, semaphores, the call, and the values of the
queues, mutexes, nexuses, timers) parameters used. Allows interactive
are created dynamically upon request querying of the state of each task,
by the application. There is no semaphore, etc.
configuration file to edit and • Application programs, device
maintain as the application grows. drivers, etc. can extend the monitor
The only limit is the amount of by adding name strings and code for
available memory. additional commands.
run-time-configurable process
schedules, communication
schedule, and memory
management [13].
Communications interfaces are
supported within the kernel,
making cross-processor
connections invisible. Memory
management is integrated with the
scheduler and communication
subsystems, enabling (but not
Variations on a Real-Time Software iv. Software Cost Reduction (SCR)
Design Course using ObjecTime notation developed at the Naval Research
Laboratory for precise, reviewable
The variations that are possible in a course specification of software requirements, and
on real-time software design are enormous. an alarm clock example
In this paper, we discuss the variations we
have introduced within the past year in the
undergraduate real-time systems design v. Schedulability issues, and Rate
course at RMC. Our objective in the course Monotonic Analysis in particular.This
is to give the students an understanding of section is important, not least because
how to approach real-time software design ObjecTime provides essentially no support
by giving them an opportunity to do some for timing and schedulability analysis,
design although there is some recent research that
may eventually lead to such support.
4. Variations in 1996/97