RTOS中的任务是线程、进程、还是协程?

strongerHuang 2021-04-16 00:00

关注+星标公众,不错过精彩内容

转自 | 最后一个bug


今天为大家讲解讲解OS中的线程、进程和协程的这个概念,同时一起看看RTOS中的任务到底属于哪一种。


1、三者整体关系图

很多小伙伴在学习OS的过程中会遇到各种程序形态,比如说进程、线程、协程、管程、纤程,oh my god!要是对他们不熟悉还真分辨不清楚,今天作者主要是把大家平时最常遇到的进程、线程和协程这三个概念讲一讲,其他形态作者后续再慢慢补充相关文章,下面我们简单看一下windows里面的进程(Linux也是类似的),如下图所示:


我们可以发现每行表示一个进程,同时一个进程包含多个线程,那么进程、线程和协程的关系到底是怎样的呢?作者这里画了个简图,供大家参考。

2、详细分析一下

1)并发与并行

在讲解进程之前我们先看看并发与并行的概念,并发字面上的意思就是一起发生,在乎的是一种感觉,对于单核CPU而言其对指令的处理都是顺序执行,只是说类似于一种时间上分时交替处理,给用户的一同发生的表象,这就是并发

    并行是指令同一时刻一起运行,这种方式一般在多处理器系统中发生。

2)  进     程   

进程是一种程序的动态执行过程,进程对CPU并不是独占连续执行的,OS管理着进程需要经常打断当前的进程,并对多个进程进行监控调度等,那么在内核中就有一个结构体叫做进程控制块PCB(学RTOS应该听过任务控制块TCB,后面会提到)-(Process Control Block),该结构体包含了该进程几乎所有的信息和资源,那么OS也就是通过这个控制块来获得进程信息并管理进程。

进程的设计是为了让各个应用程序能够更好的进行隔离,比如在浏览网页突然浏览器奔溃了这不会影响到我的音乐播放器,前面作者发布的OS对内存的管理可以了解到每个进程都会有自己独立的内存空间,并且通过内存管理模块MMU页表机制各个进程之间形成了隔离。


如果进行多进程的并发势必需要保存当前进程现场信息,比如寄存器,堆栈,更新页表,甚至还需要从外存(比如磁盘中)置换出进程进行运行,这样对于CPU的开销非常大,于是为了减少开销便有了进程内的并发线程。


3)  线     程   

进程的目的是隔离并发,可以说线程是实现的共享并发,所有的线程都是共用属于进程的资源,线程是进程指令流的剥离,同样线程有对应的结构体信息管理TCB类似于RTOS中的TCB。

由于线程资源共享,所以各个线程之间是会存在相互的影响,如果一个线程出现奔溃混乱,极大可能会影响到该进程中的其他线程;同时对于共享资源的读写也就会存在竞争问题,那么这样就产生了一系列的共享资源的处理办法,临界区,互斥信号等等。


同时现在目前大部分OS其线程的管理、调度和并发都是通过内核了完成的,这样就会存在较多系统调用以及从用户态到内核态的切换,都会消耗一些时间,为了更进一步减少开销,直接在用户态实现更好的并发就出现了协程概念。

4)  协     程   

之前的总览关系图我们也知道一个线程里面可以运行多个协程,其实函数调用就是一种状态为初态的协程,A函数中调用B函数,可以认为是A任务切换到B任务来执行,然后执行完回到A任务,不过这样调用的任务始终是从初始状态开始,如果一个函数主动放弃CPU通过保存当前现场,比如寄存器值等,然后恢复到另外一个函数的寄存器状态,便实现了任意状态函数的并发执行,就实现了协程。好吧,解释得有点绕,画个图理解理解:

协程的特点:
  • 协程是用户态执行的并发,相对线程开销要小;

  • 协程主动放弃占用,对相关资源不需要进行锁处理;

  • 非常适合IO密集型任务,比如非常经典的生产者与消费者的双线程模式,如果用协程,生产出来以后立马让步给消费者进行处理,效率非常高。

3、RTOS任务属于多线程

对于目前主流的RTOS,比如ucos,freeRTOS,RT-thread等等,都是属于并发的线程,其实从RT-thread名字上看,其表示的就是实时的线程。

  • 首先对于MCU上的资源每个任务都是共享的,可以认为是单进程多线程模型

  • MCU一般没有内存管理模块MMU等等,这样无法很好的实现进程的安全,如果用软件实现,开销太大,对于MCU没有太多的必要,这也是为什么我们当个任务程序跑飞会导致整个程序无法运行的原因。


4、最后小节

可能部分小伙伴对于这几个概念还有诸多疑惑,其并不是对这几个概念不理解而是对OS的运行原理有些迷惑,所以大家对这部分感兴趣也可以查找相关书籍进行系统的学习,加油!


免责声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。


------------ END ------------


后台回复『RTOS』『操作系统』阅读更多相关文章。


欢迎关注我的公众号 回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

strongerHuang 作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、物联网、单片机、开发工具、电子等内容。
评论
  • 新能源汽车市场潮起潮落,只有潮水退去,才能看清谁在裸泳。十年前,一批新能源汽车新势力带着创新的理念和先进的技术,如雨后春笋般涌入中国汽车市场,掀起一场新旧势力的角逐。经历市场的激烈洗礼与投资泡沫的挤压,蔚来、理想、小鹏等新势力车企脱颖而出,刷爆网络。不曾想,今年新势力车企杀出一匹“超级黑马”,爬上新势力车企销量榜前三,将蔚来、小鹏等昔日强者甩在了身后,它就是零跑汽车。公开数据显示,11月份,零跑汽车实现新车交付量约4.02万辆,同比增长117%,单月销量首次突破4万辆;小鹏汽车当月共交付新车约3
    刘旷 2024-12-26 10:53 25浏览
  • 光耦合器,也称为光隔离器,是用于电气隔离和信号传输的多功能组件。其应用之一是测量电路中的电压。本文介绍了如何利用光耦合器进行电压测量,阐明了其操作和实际用途。使用光耦合器进行电压测量的工作原理使用光耦合器进行电压测量依赖于其在通过光传输信号的同时隔离输入和输出电路的能力。该过程包括:连接到电压源光耦合器连接在电压源上。输入电压施加到光耦合器的LED,LED发出的光与施加的电压成比例。光电二极管响应LED发出的光由输出侧的光电二极管或光电晶体管检测。随着LED亮度的变化,光电二极管的电阻相应减小,
    腾恩科技-彭工 2024-12-20 16:31 230浏览
  • “金字招牌”的户外叙事。2024年的夏天似乎异常炙热,体育迷们的心跳也随之澎湃,全球瞩目的体育盛宴——巴黎奥运会在此刻上映。在这个充满荣耀与梦想的夏天,我们见证了无数激动人心的瞬间:男子4X100米混合泳接力决赛中,潘展乐的最后一棒,气壮山河,中国队的历史性夺冠,让整个泳池沸腾;射击10米气步枪混合团体决赛,黄雨婷和盛李豪的精准射击,为中国队射落首金,展现了年轻一代的力量;乒乓球男单四分之一比赛中,樊振东的惊天逆转令人难以忘怀,凭借坚韧不拔的意志和卓越的技术,成功挺进半决赛,并最终夺冠……在这一
    艾迈斯欧司朗 2024-12-25 19:30 14浏览
  • 据IDTechEx最新预计,到2034年,全球汽车舱内传感(In-Cabin Sensing,ICS)市场将超过85亿美元。若按照增长幅度来看,包含驾驶员监控系统(DMS)、乘员监控系统(OMS)、手势控制和生命体征监测等高级功能在内的舱内传感市场预计2020年到2034年将增长11倍。感光百科:ICS中的光源选择01、政策推动带来的“硬”增长作为其中的增长主力,舱内监控系统应用(包含DMS和OMS等)被推动增长的首要因素正是法规。据统计,中国、欧盟、美国、韩国、印度等主要汽车国家或地区已推出相
    艾迈斯欧司朗 2024-12-25 19:56 16浏览
  • 汽车行业的变革正愈演愈烈,由交通工具到“第三生活空间”。业内逐渐凝聚共识:汽车的下半场在于智能化。而智能化的核心在于集成先进的传感器,以实现高等级的智能驾驶乃至自动驾驶,以及更个性、舒适、交互体验更优的智能座舱。毕马威中国《聚焦电动化下半场 智能座舱白皮书》数据指出,2026年中国智能座舱市场规模将达到2127亿元,5年复合增长率超过17%。2022年到2026年,智能座舱渗透率将从59%上升至82%。近日,在SENSOR CHINA与琻捷电子联合举办的“汽车传感系列交流会-智能传感专场”上,艾
    艾迈斯欧司朗 2024-12-20 19:45 331浏览
  •                                                窗        外       年底将近,空气变得格外寒冷,估计这会儿北方已经是千里
    广州铁金刚 2024-12-23 11:49 188浏览
  • 光耦固态继电器(SSR)作为现代电子控制系统中不可或缺的关键组件,正逐步取代传统机械继电器。通过利用光耦合技术,SSR不仅能够提供更高的可靠性,还能适应更加复杂和严苛的应用环境。在本文中,我们将深入探讨光耦固态继电器的工作原理、优势、挑战以及未来发展趋势。光耦固态继电器:如何工作并打破传统继电器的局限?光耦固态继电器通过光电隔离技术,实现输入信号与负载之间的电气隔离。其工作原理包括三个关键步骤:光激活:LED接收输入电流并发出与其成比例的光信号。光传输:光电传感器(如光电二极管或光电晶体管)接收
    腾恩科技-彭工 2024-12-20 16:30 183浏览
  • 全球照明技术创新领航者艾迈斯欧司朗,于2024年广州国际照明展览会同期,举办【智慧之光】· 艾迈斯欧司朗-照明应用研讨会,以持续的技术创新,推动光+概念的全面落地。现场还演示了多款领先照明技术,且由资深工程师倾情解读,另有行业大咖深度洞察分享,助你开启“光的无限可能”探索之旅!精彩大咖分享引领未来照明无限遐想艾迈斯欧司朗精心准备了照明领域专业大咖的深度分享,无论是照明领域的资深从业者,还是对照明科技充满好奇的探索者,在这里,您都将大有所获。在艾迈斯欧司朗照明全球产品市场VP Geral
    艾迈斯欧司朗 2024-12-25 20:05 15浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-26 09:19 14浏览
  • Supernode与艾迈斯欧司朗携手,通过Belago红外LED实现精准扫地机器人避障;得益于Belago出色的红外补光功能,使扫地机器人能够大大提升其识别物体的能力,实现精准避障;Belago点阵照明器采用迷你封装,兼容标准无铅回流工艺,适用于各种3D传感平台,包括移动设备、物联网设备和机器人。全球领先的光学解决方案供应商艾迈斯欧司朗(瑞士证券交易所股票代码:AMS)近日宣布,与国内领先的多行业三维视觉方案提供商超节点创新科技(Supernode)双方联合推出采用艾迈斯欧司朗先进Belago红
    艾迈斯欧司朗 2024-12-20 18:55 231浏览
  • 概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 10 GX测试板上实际验证,统一上电确实会导致FPGA无法正常工作,具体表现为JTAG接口无法探测或识别到目标器件。上电顺序要求 Cyclone 10 GX,Arria 10以及Stratix 10系列器件所有的电源轨被划分成了三个组合,三组电源轨要求依次上电,如图1所示,为三组电源轨上电顺序示意图。
    coyoo 2024-12-25 14:13 5浏览
  • 国产数字隔离器已成为现代电子产品中的关键部件,以增强的性能和可靠性取代了传统的光耦合器。这些隔离器广泛应用于医疗设备、汽车电子、工业自动化和其他需要强大信号隔离的领域。准确测试这些设备是确保其质量和性能的基本步骤。如何测试数字隔离器测试数字隔离器需要精度和正确的工具集来评估其在各种条件下的功能和性能。以下设备对于这项任务至关重要:示波器:用于可视化信号波形并测量时序特性,如传播延迟、上升时间和下降时间。允许验证输入输出信号的完整性。频谱分析仪:测量电磁干扰(EMI)和其他频域特性。有助于识别信号
    克里雅半导体科技 2024-12-20 16:35 216浏览
  • ALINX 正式发布 AMD Virtex UltraScale+ 系列 FPGA PCIe 3.0 综合开发平台 AXVU13P!这款搭载 AMD 16nm 工艺 XCVU13P 芯片的高性能开发验证平台,凭借卓越的计算能力和灵活的扩展性,专为应对复杂应用场景和高带宽需求而设计,助力技术开发者加速产品创新与部署。随着 5G、人工智能和高性能计算等领域的迅猛发展,各行业对计算能力、灵活性和高速数据传输的需求持续攀升。FPGA 凭借其高度可编程性和实时并行处理能力,已成为解决行业痛点的关
    ALINX 2024-12-20 17:44 230浏览
  • 本文介绍瑞芯微开发板/主板Android系统APK签名文件使用方法,触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,各类接口一应俱全,帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。系统签名文件生成APK系统签名文件,具体可参考此文章方法RK3588主板/开发板Android12系统APK签名文件生成方法,干货满满使用方法第一步,修改APK工程文件app/src/build.gradle,并添加以下内容: android {     na
    Industio_触觉智能 2024-12-26 09:20 13浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦