凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

实时Linux下多线程问题解决方案

已有 933 次阅读| 2013-6-17 14:54

   
    实时Linux解决方案调查中缺少的是认真检查多线程在实时嵌入式应用中的有效性。实际上,早在20世纪80年代Linux出现之前,人们就提出了需要采用嵌入式实时操作系统(RTOS) 来实现低延迟、高吞吐量、极具实时特点的应用。操作系统的结构发生了变化,但对这方面的需求却没有改变。此类RTOS解决方案所具有的各种性能、行为和特性是过去十多年中Linux一直尝试达到的。这并不意味着倾向于恢复使用RTOS,而是要达到RTOS所具有的功能。就便携性、应用的广阔生态系统以及设备支持和常规支持来讲,Linux在实时嵌入式解决方案中的总体价值是任何RTOS都无法比拟的。存在两个实际问题:

    多线程为何重要?
    如果多线程很重要,那么我们应如何将RTOS多线程性能、行为和特性添加到Linux中,以便取得更大的成功?关键问题是了解Linux多线程实施与RTOS,然后考虑可以进行哪些改进。

    多线程为何重要?
    30多年前,当计算机解决方案软件设计人员碰到单线程解决方案无法解决的复杂问题时,便已提出了对多线程实时性方面的需求。所需解决方案要求单个应用具有多个任务,也许一些是计算任务,一些是受I/O驱动的任务,但是,就任务的总体执行而言,所有任务均密切相关。但多个任务密切相关意味着这些任务应共享一部分CPU时间才能达到CPU的有效总体利用率。在很多此类应用中,必须禁止执行某些操作、等待某些I/O事件或另一应用发出的其他通信。因此出现了简单的可执行程序,这些可执行程序可以处理多个线程,同时可禁用线程,并可在各线程之间进行低延迟通信。
    并非所有实时应用都需要支持重要的多线程处理功能。本文并未对相关应用进行分类。但很显然,需要使用多线程处理功能的应用是那些需要在协议中设定"等待状态"的任何类型的复杂协议,即等待允许应用继续进行的响应或事件。之后,应用应放弃对CPU的控制权,允许运行其他类似的线程,来代替该响应或事件。
    也许上述教程对于许多人来说很简单。请注意,很多移动基础设施和核心网络设备供应商得出的结论是,虽然Linux是当前或未来系统的首选,但目前构建的Linux还不足以满足业界的全部要求。原因是什么?

    采用PTHREADS的Linux多线程
    Pthreads是由IEEE规划的可移植操作系统接口(POSIX)创建的,目的是为了解决Unix中存在的高性能、多线程问题,之后被Linux用在最早的版本中,用于为企业实施可移植Unix,目前用于嵌入式应用中。
    创建pthreads模型是为了解决原始Unix Fork/Join模型创建Unix"子"进程时出现的问题。由于该模型涉及到创建(还可能涉及删除)整个受内存保护的环境及执行模式,因此Unix进程模型非常庞大。需要在Unix下采用适用于多线程的较轻型模型,因此pthreads应运而生。

    但Unix(也包括Linux)模型是专为将内核与用户空间应用完全分离而设计的,其优势之一在于提供的保护、安全性和可靠性远胜于其他实施方案(包括过去10几年间使用的RTOS)。实质上,这意味着Linux用户空间中的每个pthread都会由Linux内核线程表示,因此,全部或大部分Linux系统调用(特别是设备驱动器)均可通过用户空间进行访问。但是,由于OEM制造的产品并不具备GPL,因此用户空间中实际存储了所有嵌入式Linux实时应用。因此,在每种情况下,使用pthreads都涉及到调用Linux内核,从而为本可以在本地实施的应用带来了额外的系统开销。

    但请您稍稍考虑一下。采用上文提到的Linux实时扩展怎么样?是的,PREEMPT_RT可以解决Linux内核中存在的许多关于响应性的问题,但不能真正解决多线程问题。实施用户空间 Linux可解决设备驱动器/中断性能问题,但并不能真正解决多线程问题。Linux实时容器可解决部分问题,但实时容器只是一种基于标准Linux的用户空间Linux可视化技术,并不能真正解决根本的多线程问题。

    转自:嵌入式培训 网,技术答疑栏目:http://emb.sunplusedu.com/answer/

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 01:29 , Processed in 0.022787 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部