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

本文探讨了单片机裸机系统中while死循环的优缺点,强调其在实时性、资源利用率和代码维护性方面的不足。随着程序复杂性的增加,引入操作系统变得必要,通过任务调度实现更高效的时间管理和资源分配,提升系统的实时响应及代码的可维护性。操作系统使得任务模块化,减少了代码间的相互影响,提高了工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道,在单片机的「裸机系统」中,是用一个while死循环保证程序的运行,偶尔加点中断去执行其他的功能。这种方式的优点就是简单,方便理解,我们初学者刚开始接触的就是这种方式。

但是这种方式的缺点也很显然:

「1.实时性不强,不能优先保证重要或者优先级较高的程序的运行」

在一些代码较少的程序中还不明显,但是如果程序功能复杂,代码量大,运行时间长,这种方式就显得更加难以运行下去。因为这种裸机while循环的方式相当于走的流水线,你得等CPU运行到了这里才能执行,即使你是个极度紧急的程序,任何之前的延时都可以让这段程序延后运行。

33ceec8d221987b0b5d22ed8a731ccd4.png

「2.程序中如果发生了延时,那么所有的程序都要等这个延时(中断除外)」

这个时间相当于CPU没干啥正经事,白白的浪费了强大的算力。

868c452ca623905f7876162e7daeee7a.png

「3.维护性与可读性较差」

大家可以试想,所有处理都在一个while循环中,要在这里头去加代码加功能,是不是很容易就会影响到其他代码呢,可能同时还需要在其他的地方加上各种补丁,麻烦事儿一堆。

3ceba3f694626e1f4b885c2b9e99e13b.png

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

1f3072f15dc05a7a30624e415842773d.png

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

如此,操作系统便完美的解决了裸机运行的缺点~

72729d42da9065f60aded766d3a688c6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值