RTOS的调度原理是什么

技术RTOS的调度原理是什么RTOS的调度原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 我们这一系列的微信推送,仅仅是为了可以

RTOS的排班原则是什么?针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。

我们的微信推送系列,就是为了帮助你快速对操作系统有一个感性的认识。当然,让人们更好地记住一件复杂的事情,就是找另一件简单的事情来解释它。然而,这种解释方式完全不符合教育应有的严谨逻辑。因此,让我们收回这个不科学的论点,用科学的方法论来表达我们需要阐述的内容。

(1)自己写一个调度算法。

很久以前,我大概记得那是我大二的时候,我开始自己写一个调度算法。它的功能很简单,就是两个“任务”分时交替执行,用定时器来确定这两个任务的运行时间。当时我很高兴地告诉世界,我已经完成了一个“内核”的框架。

现在想来,上面的行为真的是可笑的无知和满足。因为这个算法的实现非常简单。简要说明其原理,即建立两个指向函数的指针变量,然后建立两个函数,用上面两个变量指向它们。定时器开始计时,假设周期为10ms,那么每10ms只需要切换两个变量。这样,如果宏观一点,可以看到两个任务同时运行。

我们再来分析一下上面的事情。听起来很简单,但经不起仔细推敲。它们当然不符合操作系统的任何特性。首先,如果你每个任务的执行时间都小于10ms,那就可以了。如果超过分时分配(10ms)后强制定时器切换,目前还没有完成的数据会完全丢失,没有保存的空间。其次,它的任务不能动态建立和回收。有很多很多的缺点。这是我大三时突然意识到的事情。所以到现在为止,我都不喜欢在主功能中使用定时器生成计数值,根据计数值切换运行功能。为什么呢?因为当你在裸机编程的时候,尤其是某个函数中有大量的通信等待操作的时候,你不能保证每个函数的运行时间刚好小于等于你设置的时间。所以总会出现一些任务根本无法执行的现象。

不幸的是,后来工作后,我发现许多电子工程师都是这样处理他们程序的流程的。

RTOS的调度原理是什么

(二)操作系统调度算法原理

我开始研究操作系统,当时自信地用自己的“内核”做了几个项目后,做了一次长距离的Modbus高速通信,因为这个函数中有一个函数CRC校验失败,等待重传。然而,由于高速数据流和长距离,高频信号失真严重,导致误码率较高。因此,这个函数被频繁调用,但事实证明,这个函数很难完全运行。分析了很久的原因后,我终于发现这个函数的执行时间远远超过了我分配给它的运行时间,所以我的调度算法强迫它在完成之前被中断。而且因为没有数据存储机制,整个功能只有执行一半后才能销毁。后来工作之余,我也遇到了其他这样做的工程师,劝他们修改,但还是不肯听,最后导致了严重的错误。从那以后,我宁愿当到最后也不愿用这种方式。

而一个成熟的操作系统内核,其调度算法会在中断当前任务后保存数据。

我们称当前正在运行的任务为“运行状态”,而尚未运行的任务称为“非运行状态”。但是关于“非运行状态”,这只是一个统称,其中包含了很多子状态。我们稍后会详细解释“非运作状态”的具体分类。这里需要注意的是,在我们课程的逻辑中,为了简化操作系统模型,所有特定的非运行状态都是聚合的。在一些高级操作系统中,这个问题需要讨论。

在最基本的分时操作系统中,假设所有任务的优先级都是统一的,时间到了会自动轮询。到时候操作系统会有一个机制来保存还没有完成的正在运行的任务的数据,可以推送到栈中。具体的操作过程是将数据保存在寄存器中,这有点类似于中断函数的调用。然后回收可以回收的内存。然后,为下一个要执行的任务分配内存,最后,执行下一个要执行的任务。到了第一个未完成任务的时候,它会为其重新分配内存,然后取出之前的数据继续执行。这是整个大概的过程。

关于RTOS的日程安排原则问题的答案,我希望在这里分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133186.html

(0)

相关推荐

  • Linux下oracle11g在安装grid时密码框中不能输入任何信息怎么办

    技术Linux下oracle11g在安装grid时密码框中不能输入任何信息怎么办小编给大家分享一下Linux下oracle11g在安装grid时密码框中不能输入任何信息怎么办,相信大部分人都还不怎么了解,因此分享这篇文章

    攻略 2021年11月10日
  • 国有商业银行有哪几家,九大商业银行是几个银行

    技术国有商业银行有哪几家,九大商业银行是几个银行商业银行包括: 四大国有银行:工商银行,农业银行,中国银行,建设银行; 其他股份制商业银行:交通银行,民生银行,浦东发展银行,福建兴业银行,广东发展银行,光大银行,招商银行

    生活 2021年10月29日
  • Python如何爬取猫咪网站交易数据

    技术Python如何爬取猫咪网站交易数据这期内容当中小编将会给大家带来有关Python如何爬取猫咪网站交易数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、前言看到可爱的猫咪表情包

    攻略 2021年10月26日
  • 只一行Python代码能实现哪些功能

    技术只一行Python代码能实现哪些功能本篇内容主要讲解“只一行Python代码能实现哪些功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“只一行Python代码能实现哪些功

    攻略 2021年11月20日
  • 【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像

    技术【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像 【阿里云镜像】使用阿里巴巴开源镜像站镜像——Kubernetes 镜像@目录一、参考链接二、Kubernetes 镜像简介三、

    礼包 2021年12月7日
  • 如何进行Mysql索引优化

    技术如何进行Mysql索引优化本篇文章为大家展示了如何进行Mysql索引优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。点击上方“程序员小明”,选择“星标”今晚可以不加班! M

    攻略 2021年11月4日