blob: 8fa386a96fe1924dea69d8b3cca7bfc8100380a1 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Effects of Disabling Interrupts or Pre-Emption on Response Latency &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<script src="../_static/jquery.js"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/clipboard.min.js"></script>
<script src="../_static/copybutton.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Bottom-Half Interrupt Handlers" href="bottomhalf_interrupt.html" />
<link rel="prev" title="Per-Thread Interrupt Controls" href="interrupt_controls.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../latest" selected="selected">latest</option>
<option value="../../10.0.0" >10.0.0</option>
<option value="../../10.0.1" >10.0.1</option>
<option value="../../10.1.0" >10.1.0</option>
<option value="../../10.2.0" >10.2.0</option>
<option value="../../10.3.0" >10.3.0</option>
<option value="../../11.0.0" >11.0.0</option>
<option value="../../12.0.0" >12.0.0</option>
<option value="../../12.1.0" >12.1.0</option>
<option value="../../12.2.0" >12.2.0</option>
<option value="../../12.2.1" >12.2.1</option>
<option value="../../12.3.0" >12.3.0</option>
<option value="../../12.4.0" >12.4.0</option>
<option value="../../12.5.0" >12.5.0</option>
<option value="../../12.5.1" >12.5.1</option>
<option value="../../12.6.0" >12.6.0</option>
<option value="../../12.7.0" >12.7.0</option>
<option value="../../12.8.0" >12.8.0</option>
<option value="../../12.9.0" >12.9.0</option>
<option value="../../12.10.0" >12.10.0</option>
<option value="../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Implementation Details</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="processes_vs_tasks.html">Linux Processes vs NuttX Tasks</a></li>
<li class="toctree-l2"><a class="reference internal" href="critical_sections.html">Critical Sections</a></li>
<li class="toctree-l2"><a class="reference internal" href="interrupt_controls.html">Per-Thread Interrupt Controls</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Effects of Disabling Interrupts or Pre-Emption on Response Latency</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#rate-monotonic-scheduling">Rate Monotonic Scheduling</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#normal-interrupt-processing">Normal Interrupt Processing</a></li>
<li class="toctree-l4"><a class="reference internal" href="#effect-of-disabling-interrupts">Effect of Disabling Interrupts</a></li>
<li class="toctree-l4"><a class="reference internal" href="#effect-of-disabling-pre-emption">Effect of Disabling Pre-emption</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="bottomhalf_interrupt.html">Bottom-Half Interrupt Handlers</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulation.html">The NuttX Simulation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../logos/index.html">NuttX Logos</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Implementation Details</a></li>
<li class="breadcrumb-item active">Effects of Disabling Interrupts or Pre-Emption on Response Latency</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/implementation/preemption_latency.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="effects-of-disabling-interrupts-or-pre-emption-on-response-latency">
<h1>Effects of Disabling Interrupts or Pre-Emption on Response Latency<a class="headerlink" href="#effects-of-disabling-interrupts-or-pre-emption-on-response-latency" title="Permalink to this heading"></a></h1>
<section id="rate-monotonic-scheduling">
<h2>Rate Monotonic Scheduling<a class="headerlink" href="#rate-monotonic-scheduling" title="Permalink to this heading"></a></h2>
<p><strong>Assumption</strong></p>
<blockquote>
<div><p>No resource sharing (processes do not share resources, e.g. a hardware
resource, a queue, or any kind of semaphore blocking or non-blocking
(busy-waits)).</p>
<p>Wikipedia “Rate Monotonic Scheduling”</p>
</div></blockquote>
<p><strong>Real world</strong></p>
<p>We must protect shared resources with locks of some kind. The most aggressive:</p>
<ol class="arabic simple">
<li><p>Disabling interrupts, and</p></li>
<li><p>Disabling pre-emption.</p></li>
</ol>
<p>What are the effects of real-time performance when this assumptions is violated?</p>
<section id="normal-interrupt-processing">
<h3>Normal Interrupt Processing<a class="headerlink" href="#normal-interrupt-processing" title="Permalink to this heading"></a></h3>
<figure class="align-center">
<img alt="../_images/normal_interrupt.png" src="../_images/normal_interrupt.png" />
</figure>
</section>
<section id="effect-of-disabling-interrupts">
<h3>Effect of Disabling Interrupts<a class="headerlink" href="#effect-of-disabling-interrupts" title="Permalink to this heading"></a></h3>
<figure class="align-center">
<img alt="../_images/disabling_interrupts.png" src="../_images/disabling_interrupts.png" />
</figure>
</section>
<section id="effect-of-disabling-pre-emption">
<h3>Effect of Disabling Pre-emption<a class="headerlink" href="#effect-of-disabling-pre-emption" title="Permalink to this heading"></a></h3>
<figure class="align-center">
<img alt="../_images/disabling_preemption.png" src="../_images/disabling_preemption.png" />
</figure>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="interrupt_controls.html" class="btn btn-neutral float-left" title="Per-Thread Interrupt Controls" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="bottomhalf_interrupt.html" class="btn btn-neutral float-right" title="Bottom-Half Interrupt Handlers" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>