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

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

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

「1.实时性不强,不能优先保证重要或者优先级较高的程序的运行」在一些代码较少的程序中还不明显,但是如果程序功能复杂,代码量大,运行时间长,这种方式就显得更加难以运行下去。因为这种裸机while循环的方式相当于走的流水线,你得等CPU运行到了这里才能执行,即使你是个极度紧急的程序,任何之前的延时都可以让这段程序延后运行。【嵌入式】嵌入式开发为什么要跑操作系统?_第1张图片

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

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

【嵌入式】嵌入式开发为什么要跑操作系统?_第4张图片

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

如此,操作系统便完美的解决了裸机运行的缺点~【嵌入式】嵌入式开发为什么要跑操作系统?_第5张图片

你可能感兴趣的:(单片机,嵌入式,java,操作系统,python)