This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
realtime:technical_basics [2016/06/23 07:17] anna-maria created |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======Technical basics: Important aspects for real time====== | ||
- | |||
- | In oder to understand the functionality of an RTOS, you need to know | ||
- | about both general and Linux specific mechanisms. | ||
- | |||
- | ---- | ||
- | |||
- | <WRAP half column> | ||
- | ===== Linux specific preemption models ===== | ||
- | |||
- | The mainline Linux kernel implements three different preemption models | ||
- | for different fields of application like servers or desktop PCs. With | ||
- | the PREEMPT_RT patch two additional preemption models are available. | ||
- | The "Fully Preemptible Kernel" model is the one that turns Linux into | ||
- | an RTOS. | ||
- | |||
- | <WRAP rightalign>[[preemption_models|Read more about preemption models]]</WRAP> | ||
- | |||
- | </WRAP> | ||
- | |||
- | <WRAP half column> | ||
- | ===== Scheduling - Policy and priority ===== | ||
- | |||
- | The Linux kernel implements several real-time and non real-time | ||
- | scheduling policies. Depending on the scheduling policy of the tasks | ||
- | the scheduler decides which task is swapped out and which task is | ||
- | processed next. | ||
- | |||
- | <WRAP rightalign>[[sched_policy_prio|Read more about policy and priority]]</WRAP> | ||
- | </WRAP> | ||
- | |||
- | <WRAP half column> | ||
- | ===== Scheduling - RT throttling ===== | ||
- | |||
- | The RT throttling mechanism prevents a system to hang, if there is a | ||
- | programming failure in a real-time application. This mechanism makes | ||
- | it possible to stop such an application. The settings for RT | ||
- | throttling are exported into the proc filesystem. | ||
- | |||
- | <WRAP rightalign>[[sched_rt_throttling|Read more about RT throttling]]</WRAP> | ||
- | </WRAP> | ||
- | |||
- | <WRAP half column> | ||
- | ===== Priority inversion - Priority inheritance ===== | ||
- | |||
- | When a task with high priority is blocked by one with low priority | ||
- | because of a mutually exclusive resource, a third task with priority | ||
- | in between the others can run and finish before the task with the | ||
- | highest priority resumes. This phenomenon is known as priority | ||
- | inversion. It can be solved by priority inheritance. | ||
- | |||
- | <WRAP rightalign>[[pi|Read more about priority inversion and inheritance]]</WRAP> | ||
- | </WRAP> | ||