• 嵌入式开发为什么要跑操作系统?


    我们知道,在单片机的裸机系统中,是用一个while死循环保证程序的运行,偶尔加点中断去执行其他的功能。这种方式的优点就是简单,方便理解,我们初学者刚开始接触的就是这种方式。
    但是这种方式的缺点也很显然:
    1.实时性不强,不能优先保证重要或者优先级较高的程序的运行。在一些代码较少的程序中还不明显,但是如果程序功能复杂,代码量大,运行时间长,这种方式就显得更加难以运行下去。因为这种裸机while循环的方式相当于走的流水线,你得等CPU运行到了这里才能执行,即使你是个极度紧急的程序,任何之前的延时都可以让这段程序延后运行。
    在这里插入图片描述

    2.程序中如果发生了延时,那么所有的程序都要等这个延时(中断除外)。这个时间相当于CPU没干啥正经事,白白的浪费了强大的算力。
    在这里插入图片描述
    3.维护性与可读性较差。大家可以试想,所有处理都在一个while循环中,要在这里头去加代码加功能,是不是很容易就会影响到其他代码呢,可能同时还需要在其他的地方加上各种补丁,麻烦事儿一堆。
    在这里插入图片描述

    实际在工作的项目中基本不会去跑裸机,结合之前的两点即效率太低了不合适,无法支撑大型的项目。
    在这里插入图片描述

    因此我们就引入了操作系统,将每个小功能模块可以做成一个任务,由调度器统一调度任务,什么时候运行什么任务,这也是每个操作系统最核心的部分。当我们有一个任务因为延时等待不需要继续运行的时候,就可以把CPU的运行权交给其他的任务,把对CPU的利用发挥到极致。当有紧急任务准备好需要处理时,CPU的控制权马上又回到这个任务处理紧急事务。如果有新的功能模块需要添加,适当的可以做成一个任务,这样将对其他任务的影响降到最小。阅读代码或者人员分工就可以根据各个模块的任务进行划分,化整为零,提高工作的效率。

    如此,操作系统便完美的解决了裸机运行的缺点~
    在这里插入图片描述
    不想错过每次推送?欢迎关注咱的公众号“脑补空间”~
    在这里插入图片描述

  • 相关阅读:
    哈希表 | 快乐数 | leecode刷题笔记
    智慧景区ar导览系统景区手绘地图小程序开发搭建
    Java面试题-UDP\TCP\HTTP
    竞赛 深度学习OCR中文识别 - opencv python
    【什么是平衡二叉树】【如何构建平衡二叉树】【(字节面试题)判断是否为平衡二叉树】
    ElasticSearch学习
    拟合平面再思考
    Adaptive Homogeneity-DirectedDemosaicing Algorithm
    边缘计算 KubeEdge+EdgeMash
    MySQL深分页
  • 原文地址:https://blog.csdn.net/weixin_46582567/article/details/125398029