带你读《C/OS-III内核实现与应用开发实战指南:基于STM32》之二:裸机系统与多任务系统

简介: 本书分为两部分,第一部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。

点击查看第一章
点击查看第三章

第2章

裸机系统与多任务系统
在真正开始动手写RTOS之前,先来讲解一下单片机编程中的裸机系统和多任务系统的区别。

2.1 裸机系统

裸机系统通常分成轮询系统和前后台系统,有关这两者的具体实现方式参见下面的讲解。

2.1.1 轮询系统

轮询系统即在裸机编程时,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地处理各种事件,大概的伪代码参见代码清单2-1。轮询系统是一种非常简单的软件结构,通常只适用于仅需要顺序执行代码且不需要外部事件来驱动就能完成的事情。在代码清单2-1中,如果只是实现LED翻转、串口输出、液晶显示等操作,那么使用轮询系统将会非常完美。但是,如果加入了按键操作等需要检测外部信号的事件,例如用来模拟紧急报警,那么整个系统的实时响应能力就不会那么好了。假设DoSomething3是按键扫描,当外部按键被按下,相当于一个警报,这个时候,需要立刻响应并做紧急处理,而这时程序刚好执行到DoSomething1,如果DoSomething1需要执行的时间比较久,久到按键释放之后还没有执行完毕,那么当执行到DoSomething3时就会丢失一次事件。由此可见,轮询系统只适合顺序执行的功能代码,当有外部事件驱动时,实时性就会降低。

image.pngimage.png

2.1.2 前后台系统

相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里称为前台,main()函数中的无限循环称为后台,大概的伪代码参见代码清单2-2。

image.pngimage.png

在顺序执行后台程序时,如果出现中断,那么中断会打断后台程序的正常执行流,转而去执行中断服务程序,在中断服务程序中标记事件。如果事件要处理的事情很简短,则可在中断服务程序中处理;如果事件要处理的事情比较多,则返回后台程序中处理。虽然事件的响应和处理分开了,但是事件的处理还是在后台顺序执行的,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这可以大大提高程序的实时响应能力。在大多数中小型项目中,前后台系统运用得好,堪称有操作系统的效果。

2.2 多任务系统

相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中,任务与中断一样,也具有优先级,优先级高的任务会优先执行。当一个紧急事件在中断中被标记之后,如果事件对应的任务的优先级足够高,就会立刻得到响应。相比前后台系统,多任务系统的实时性又提高了。多任务系统的伪代码参见代码清单2-3。

image.pngimage.png
image.png

相比前后台系统中后台顺序执行的程序主体,在多任务系统中,根据程序的功能,我们把这个程序主体分割成一个个独立的、无限循环且不能返回的小程序,这个小程序称为任务。每个任务都是独立的、互不干扰的,且具备自身的优先级,它由操作系统调度管理。加入操作系统后,我们在编程时不需要精心地设计程序的执行流,也不用担心每个功能模块之间是否存在干扰。加入了操作系统,我们的编程反而变得简单了。整个系统的额外开销仅为操作系统占据的少量FLASH和RAM。如今,单片机的FLASH和RAM越来越大,完全足以抵消RTOS的开销。
无论是裸机系统中的轮询系统、前后台系统还是多任务系统,我们不能简单地说孰优孰劣,它们是不同时代的产物,在各自的领域都有相当大的应用价值,只有合适的才是最好的。有关这三者的软件模型区别如表2-1所示。

image.png

相关文章
|
18天前
|
机器学习/深度学习 Dart 前端开发
移动应用与系统:构建现代数字生态的基石在当今这个高度数字化的社会中,移动应用与操作系统已成为我们日常生活不可或缺的一部分。它们不仅改变了我们的沟通方式,还重塑了我们的工作、学习和娱乐模式。本文将深入探讨移动应用开发的基础、移动操作系统的功能以及这两者如何共同塑造了我们的数字世界。
随着智能手机和平板电脑的普及,移动应用与系统的重要性日益凸显。它们不仅为用户提供了便捷的服务和丰富的功能,还为开发者提供了广阔的创新平台。本文将介绍移动应用开发的基本概念、技术栈以及最佳实践,并探讨主流移动操作系统的特点和发展趋势。通过分析移动应用与系统的相互作用,我们可以更好地理解它们在现代社会中的重要地位。
|
4天前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
1天前
|
安全 API 调度
移动应用与系统:探索移动应用开发与操作系统的融合之道
本文旨在探讨移动应用开发与移动操作系统之间的紧密联系,分析如何通过优化开发策略和系统设计,提升移动应用的性能和用户体验。我们将从移动应用开发的基本概念入手,逐步深入到移动操作系统的核心机制,揭示两者相互影响、相互促进的内在逻辑。通过案例分析和实践指导,本文将为读者提供一套行之有效的方法论,助力在移动应用领域取得卓越成就。
11 3
|
4天前
|
人工智能 安全 数据安全/隐私保护
移动应用与系统:构建现代数字生态的双引擎在数字化浪潮席卷全球的今天,移动应用与系统作为连接用户与数字世界的重要桥梁,正发挥着越来越重要的作用。它们不仅改变了人们的生活方式,也推动了各行各业的创新与发展。本文将深入探讨移动应用开发的最新趋势、移动操作系统的演进历程以及两者如何共同塑造我们的未来。
随着智能手机的普及和移动互联网的快速发展,移动应用已成为人们日常生活中不可或缺的一部分。从社交媒体到移动支付,从在线教育到远程办公,移动应用无处不在,极大地丰富了我们的生活体验。与此同时,移动操作系统也在不断进化,为应用提供了更加稳定、高效的运行环境。本文旨在分析当前移动应用开发的热点技术、探讨移动操作系统的未来发展方向,并展望这两者如何相互促进,共同推动数字经济的繁荣。
|
6天前
|
开发工具 Android开发 开发者
移动应用与系统:探索移动应用开发和操作系统的奥秘
本文将深入探讨移动应用开发和移动操作系统的相关话题,包括技术原理、开发工具和最佳实践。通过详细的分析和实例,读者将能够了解移动应用开发的全过程以及移动操作系统的核心机制。无论是初学者还是经验丰富的开发者,都能从中获得有价值的见解和指导。
|
10天前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
|
9天前
|
人工智能 物联网 数据安全/隐私保护
移动应用与系统:探索移动应用开发与操作系统的融合之道
在当今数字化时代,移动应用与操作系统之间的紧密联系日益凸显。本文将深入探讨移动应用开发与移动操作系统之间的相互关系,分析它们如何共同塑造了我们的移动互联网体验。通过阐述移动应用开发的关键技术、主流移动操作系统的特点以及它们之间的相互作用,本文旨在为读者提供一个全面而深入的理解,揭示移动应用与系统融合发展的趋势。
|
8天前
|
存储 人工智能 安全
移动应用与系统:探索移动应用开发与移动操作系统的融合之道##
在当今数字化时代,移动应用已成为人们日常生活中不可或缺的一部分。无论是用于社交、娱乐还是工作,移动应用都扮演着重要的角色。然而,要实现这些应用的高效运行,一个稳定且功能强大的移动操作系统是至关重要的。本文将深入探讨移动应用开发与移动操作系统之间的紧密联系,揭示它们如何共同塑造了我们的数字世界。 ##
|
9天前
|
安全 Unix Linux
Unix是一个多用户、多任务的操作系统
Unix是一个多用户、多任务的操作系统
27 3
|
18天前
|
Java Go API
移动应用与系统:探索移动应用开发和操作系统的融合之道
本文深入探讨了移动应用开发和操作系统之间的紧密关系,揭示了它们如何相互影响、相互促进,共同推动移动互联网的发展。不同于传统的技术分析文章,本文尝试以一种更通俗易懂、条理清晰的方式,引导读者理解移动应用与系统的内在联系,启发开发者在实际应用中更好地把握两者的平衡点。
下一篇
无影云桌面