Changeset bf78123 in rtems-docs
- Timestamp:
- 03/08/18 06:44:08 (5 years ago)
- Branches:
- 5, am, master
- Children:
- 5b76390
- Parents:
- c65aeed
- git-author:
- Sebastian Huber <sebastian.huber@…> (03/08/18 06:44:08)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (03/08/18 06:47:22)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
c-user/configuring_a_system.rst
rc65aeed rbf78123 3327 3327 3328 3328 DESCRIPTION: 3329 The Constant Bandwidth Server Scheduler (CBS) is an alternative scheduler 3330 in RTEMS for uniprocessor applications. The CBS is a budget aware 3331 extension of EDF scheduler. The goal of this scheduler is to ensure 3332 temporal isolation of tasks. The CBS is equipped with a set of additional 3333 rules and provides with an extensive API. 3334 3335 This scheduler may be explicitly selected by defining 3336 ``CONFIGURE_SCHEDULER_CBS``. 3337 3338 NOTES: 3339 None. 3329 If defined, then the :ref:`Constant Bandwidth Server (CBS) Scheduler 3330 <SchedulerCBS>` algorithm is made available to the application. 3331 3332 NOTES: 3333 In case no explicit :ref:`clustered scheduler configuration 3334 <ConfigurationSchedulersClustered>` is present, then it is used as the 3335 scheduler for exactly one processor. 3340 3336 3341 3337 .. index:: CONFIGURE_SCHEDULER_EDF … … 3359 3355 3360 3356 DESCRIPTION: 3361 The Earliest Deadline First Scheduler (EDF) is an alternative scheduler in 3362 RTEMS for uniprocessor applications. The EDF schedules tasks with dynamic 3363 priorities equal to deadlines. The deadlines are declared using only Rate 3364 Monotonic manager which handles periodic behavior. Period is always equal 3365 to deadline. If a task does not have any deadline declared or the deadline 3366 is cancelled, the task is considered a background task which is scheduled 3367 in case no deadline-driven tasks are ready to run. Moreover, multiple 3368 background tasks are scheduled according their priority assigned upon 3369 initialization. All ready tasks reside in a single ready queue. 3370 3371 This scheduler may be explicitly selected by defining 3372 ``CONFIGURE_SCHEDULER_EDF``. 3373 3374 NOTES: 3375 None. 3357 If defined, then the :ref:`Earliest Deadline First (EDF) Scheduler 3358 <SchedulerEDF>` algorithm is made available to the application. 3359 3360 NOTES: 3361 In case no explicit :ref:`clustered scheduler configuration 3362 <ConfigurationSchedulersClustered>` is present, then it is used as the 3363 scheduler for exactly one processor. 3376 3364 3377 3365 .. index:: CONFIGURE_SCHEDULER_EDF_SMP … … 3395 3383 3396 3384 DESCRIPTION: 3397 If defined, then the Earliest Deadline First (EDF) SMP Scheduler is 3398 selected as the default scheduler. 3399 3400 NOTES: 3401 None. 3385 If defined, then the :ref:`Earliest Deadline First (EDF) SMP Scheduler 3386 <SchedulerSMPEDF>` algorithm is made available to the application. 3387 3388 NOTES: 3389 This scheduler algorithm is only available when RTEMS is built with SMP 3390 support enabled. 3391 3392 In case no explicit :ref:`clustered scheduler configuration 3393 <ConfigurationSchedulersClustered>` is present, then it is used as the 3394 scheduler for up to 32 processors. 3395 3396 This scheduler algorithm is the default in SMP configurations and is only 3397 selected when :ref:`CONFIGURE_MAXIMUM_PROCESSORS 3398 <CONFIGURE_MAXIMUM_PROCESSORS>` is greater than one. 3402 3399 3403 3400 .. index:: CONFIGURE_SCHEDULER_NAME … … 3457 3454 3458 3455 DESCRIPTION: 3459 The Deterministic Priority Scheduler is the default scheduler in RTEMS for 3460 uniprocessor applications and is designed for predictable performance 3461 under the highest loads. It can block or unblock a thread in a constant 3462 amount of time. This scheduler requires a variable amount of memory based 3463 upon the number of priorities configured in the system. 3464 3465 NOTES: 3466 This scheduler may be explicitly selected by defining 3467 ``CONFIGURE_SCHEDULER_PRIORITY`` although this is equivalent to the default 3468 behavior. 3456 If defined, then the :ref:`Deterministic Priority Scheduler 3457 <SchedulerPriority>` algorithm is made available to the application. 3458 3459 NOTES: 3460 In case no explicit :ref:`clustered scheduler configuration 3461 <ConfigurationSchedulersClustered>` is present, then it is used as the 3462 scheduler for exactly one processor. 3463 3464 This scheduler algorithm is the default when 3465 :ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>` is 3466 exactly one. 3467 3468 .. index:: CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 3469 3470 .. _CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP: 3471 3472 CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 3473 ----------------------------------------- 3474 3475 CONSTANT: 3476 ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP`` 3477 3478 DATA TYPE: 3479 Boolean feature macro. 3480 3481 RANGE: 3482 Defined or undefined. 3483 3484 DEFAULT VALUE: 3485 This is not defined by default. 3486 3487 DESCRIPTION: 3488 If defined, then the :ref:`Arbitrary Processor Affinity SMP Scheduler 3489 <SchedulerSMPPriorityAffinity>` algorithm is made available to the 3490 application. 3491 3492 NOTES: 3493 This scheduler algorithm is only available when RTEMS is built with SMP 3494 support enabled. 3495 3496 In case no explicit :ref:`clustered scheduler configuration 3497 <ConfigurationSchedulersClustered>` is present, then it is used as the 3498 scheduler for up to 32 processors. 3469 3499 3470 3500 .. index:: CONFIGURE_SCHEDULER_PRIORITY_SMP … … 3488 3518 3489 3519 DESCRIPTION: 3490 The Deterministic Priority SMP Scheduler is derived from the Deterministic 3491 Priority Scheduler but is capable of scheduling threads across multiple 3492 processors. 3493 3494 In a configuration with SMP enabled at configure time, it may be explicitly 3495 selected by defining ``CONFIGURE_SCHEDULER_PRIORITY_SMP``. 3496 3497 NOTES: 3498 This scheduler is only available when RTEMS is configured with SMP support 3499 enabled. 3500 3501 This scheduler is currently the default in SMP configurations and is only 3502 selected when ``CONFIGURE_MAXIMUM_PROCESSORS`` is greater than one. 3520 If defined, then the :ref:`Deterministic Priority SMP Scheduler 3521 <SchedulerSMPPriority>` algorithm is made available to the application. 3522 3523 NOTES: 3524 This scheduler algorithm is only available when RTEMS is built with SMP 3525 support enabled. 3526 3527 In case no explicit :ref:`clustered scheduler configuration 3528 <ConfigurationSchedulersClustered>` is present, then it is used as the 3529 scheduler for up to 32 processors. 3503 3530 3504 3531 .. index:: CONFIGURE_SCHEDULER_SIMPLE … … 3522 3549 3523 3550 DESCRIPTION: 3524 When defined, the Simple Priority Scheduler is used at the thread 3525 scheduling algorithm. This is an alternative scheduler in RTEMS. It is 3526 designed to provide the same task scheduling behaviour as the Deterministic 3527 Priority Scheduler while being simpler in implementation and uses less 3528 memory for data management. It maintains a single sorted list of all ready 3529 threads. Thus blocking or unblocking a thread is not a constant time 3530 operation with this scheduler. 3531 3532 This scheduler may be explicitly selected by defining 3533 ``CONFIGURE_SCHEDULER_SIMPLE``. 3534 3535 NOTES: 3536 This scheduler is appropriate for use in small systems where RAM is limited. 3551 If defined, then the :ref:`Simple Priority Scheduler 3552 <SchedulerPrioritySimple>` algorithm is made available to the application. 3553 3554 NOTES: 3555 In case no explicit :ref:`clustered scheduler configuration 3556 <ConfigurationSchedulersClustered>` is present, then it is used as the 3557 scheduler for exactly one processor. 3537 3558 3538 3559 .. index:: CONFIGURE_SCHEDULER_SIMPLE_SMP … … 3556 3577 3557 3578 DESCRIPTION: 3558 The Simple SMP Priority Scheduler is derived from the Simple Priority 3559 Scheduler but is capable of scheduling threads across multiple processors. 3560 It is designed to provide the same task scheduling behaviour as the 3561 Deterministic Priority Scheduler while distributing threads across multiple 3562 processors. Being based upon the Simple Priority Scheduler, it also 3563 maintains a single sorted list of all ready threads. Thus blocking or 3564 unblocking a thread is not a constant time operation with this scheduler. 3565 3566 In addition, when allocating threads to processors, the algorithm is not 3567 constant time. This algorithm was not designed with efficiency as a primary 3568 design goal. Its primary design goal was to provide an SMP-aware 3569 scheduling algorithm that is simple to understand. 3570 3571 In a configuration with SMP enabled at configure time, it may be explicitly 3572 selected by defining ``CONFIGURE_SCHEDULER_SIMPLE_SMP``. 3573 3574 NOTES: 3575 This scheduler is only available when RTEMS is configured with SMP support 3576 enabled. 3579 If defined, then the :ref:`Simple Priority SMP Scheduler 3580 <SchedulerSMPPrioritySimple>` algorithm is made available to the 3581 application. 3582 3583 NOTES: 3584 This scheduler algorithm is only available when RTEMS is built with SMP 3585 support enabled. 3586 3587 In case no explicit :ref:`clustered scheduler configuration 3588 <ConfigurationSchedulersClustered>` is present, then it is used as the 3589 scheduler for up to 32 processors. 3577 3590 3578 3591 .. index:: CONFIGURE_SCHEDULER_USER … … 3636 3649 owned by exactly one scheduler instance. 3637 3650 3638 A clustered scheduler configuration is optional. By default, all processors are 3639 managed by the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`. In order to use 3640 clustered scheduling the application designer has to answer two questions. 3651 A clustered scheduler configuration is optional. By default, up to 32 3652 processors are managed by the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`. In 3653 order to use clustered scheduling the application designer has to answer two 3654 questions. 3641 3655 3642 3656 #. How is the set of processors partitioned into clusters? … … 3652 3666 with the following defines 3653 3667 3654 - ``CONFIGURE_SCHEDULER_EDF_SMP``,3655 3656 - ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``,3657 3658 - ``CONFIGURE_SCHEDULER_PRIORITY_SMP``, and3659 3660 - ``CONFIGURE_SCHEDULER_SIMPLE_SMP``.3668 - :ref:`CONFIGURE_SCHEDULER_EDF_SMP <CONFIGURE_SCHEDULER_EDF_SMP>`, 3669 3670 - :ref:`CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP>`, 3671 3672 - :ref:`CONFIGURE_SCHEDULER_PRIORITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_SMP>`, and 3673 3674 - :ref:`CONFIGURE_SCHEDULER_SIMPLE_SMP <CONFIGURE_SCHEDULER_SIMPLE_SMP>`. 3661 3675 3662 3676 This is necessary to calculate the per-thread overhead introduced by the
Note: See TracChangeset
for help on using the changeset viewer.