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

轻型线程 (LWT) – 复杂 Linux 应用的真正解决方案

之前针对 Linux 提出了多种轻型线程模型的建议,但没有一种模型能够真正解决问题。原因何在?因为大多数模型的功能都不是很强大。涉及复杂多线程应用的下一代 Linux 解决方案真正需要的是适用于用户空间 Linux 应用的全新 Linux 模型。下文概括介绍了这种名为Linux轻型线程 (LWT) 的解决方案。将高性能、低系统开销、多线程调度器植入 Linux 用户空间,来代替单独的 pthread。原因何在?

Pthread 系统开销

♦ 进程和 pthreads 是 Linux 了解的唯一调度实体。

♦ LWT pthread 只是一个 Linux 编码执行背景,可用于永久运行 pthread。由于用户空间调度器始终保持控制,因此 pthread 绝不会被挂起 – 省电模式除外。这种情况不在本文的讨论范围。

该用户空间调度器的运行和操作方式与某些传统 RTOS 高性能、低延迟实施完全相同,但不会涉及到 Linux 内核。

实施过程利用新用户空间 Linux 实施过程来直接访问硬件。同样也不涉及 Linux 内核。

上述 LWT 解决方案可在任何 Linux 实时应用中实现动态性能的提升。Enea 已设计出上述 LWT 的一些原型,事实证明,与 Linux pthreads 在调度器系统开销、特别是上下文切换和线程间消息发送/通信延迟方面的性能相比,LWT 性能可提高 10 倍。

但是除了调度性能和线程间通信功能之外,LWT 解决方案还应带来什么?LWT 概念除了在性能方面胜过 Linux pthreads 之外,还有更多优势。解决方案稳健性的概念如何?与历史悠久的 RTOS 实时解决方案一样,LWT 也需要具有以下额外 Linux 特性:

决定性调度

调度系统开销低 – 上下文切换成本低

线程间信号系统开销低

线程创建成本低

多核设备中 Linux 轻型线程模型的结构图

LWT 实施方案的结构图如下。涉及整个共享内存空间的 Linux 进程可能跨多核设备的多个内核。为了达到最高效率,LWT 模型需要将 Linux 进程中的单个 pthread 锁定至某一个内核,但并不特别要求这样做。LWT 锁定至 pthread 之后,便可迁移到 Linux SMP 需要的任何内核中。

结论

高效轻型线程 (LWT) 将成为下一个 Linux 实时性能和行为问题。需要强调的是,并非所有实时应用都需要使用功能强大的类似 LWT 的解决方案。但是一些实时应用,尤其是电信/网络中的应用以及无线接入网、移动基础设施核心/边缘中的那些需要使用某些复杂网络协议的应用、或任何具有类似实时需求的其他系统均可受益于 Linux 轻型线程 – 下一代 Linux 实时扩展。同时,实时嵌入式 Linux 的整个发展过程证明了 Linux 的运行效果与传统 RTOS 解决方案一样优异。Linux 已取得了一些进展,但是作者认为,最重要的电信/网络应用中使用的 Linux 尚未达到预期的要求。但也许通过 Linux 轻型线程,我们可以更接近这一目标。总的来说,Linux 实时嵌入式行业的一个侧重点是研发出可用于要求最高的实时应用的解决方案。下图中描述了该目标:

linux 多核线程 调度,通过轻型线程提高多核设备中的Linux实时性能相关推荐

  1. Linux免设置路由端口映射,2014/04/01 演示中设置linux路由器、端口过滤的使用、路由设置...

    2.linux主机做为路由器,具有数据转发和随机丢包的功能 1.1.iptables 基于内核的防火墙 1.2.编写防火墙设置的脚本 及鸟哥的linux私房菜(服务器篇) linux 路由器的设置 参 ...

  2. linux系统可以装win10吗,如何在Win10专业版中安装Linux系统?

    如何在Win10专业版中安装Linux系统?在Windows10 第3个稳定版发布以后,支持内嵌的Linux系统,正如大家所知道的,大多数 Linux 上的命令行二进制程序现在可以原生地运行在 Win ...

  3. linux cp命令 通配符,关于shell:cp和mv中的Linux通配符用法

    我正在编写一个脚本来处理20个文件. 它们全部位于不同的目录中. 我有部分文件名. 在日志目录中,File1_Date_time.err更改为File1__Date_time_orig.err cd ...

  4. linux的网络不可达问题,我的服务器日志中的linux – (网络不可达)错误

    我的Centos消息日志文件中有很多网络无法访问的行.他们似乎无法解决某些地址,我没有任何想法,为什么我的服务器必须首先解决它们.谁能让我知道这种错误的根源?我受到了攻击吗? Oct 23 11:39 ...

  5. linux线程怎样实时性,高效轻型线程怎么提高Linux实时性能?

    这些用户空间扩展(有多个)已首先由电信/网络高性能 IP 数据包处理系统进行驱动,以实现所谓的"裸金属"实施,其中,多核设备中的Linux用户空间应用可以模拟"无操作系统 ...

  6. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  7. Linux 2.6 调度系统分析

    本文从 Linux 2.4 调度系统的缺陷入手,详细分析了 Linux 2.6 调度系统的原理和实现细节,并对与调度系统相关的负载平衡.NUMA 结构以及实时性能进行了分析和评价. 1. 前言 Lin ...

  8. 基于Android设备的Kali Linux渗透测试教程第1章渗透测试

    基于Android设备的Kali Linux渗透测试教程第1章渗透测试 渗透测试(Penetration Testing)是一种通过模拟攻击者所采用的技术与方法,攻击目标系统的安全控制措施,并取得访问 ...

  9. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法

    通过Grub(多系统引导管理器)来安装 本人最近摸索Linux系统,想在本机上安装双系统,但我这老爷机上没有软驱,没有刻录机,下载的ISO文件只能存在硬盘上,也只能通过硬盘来安装,在各大Linux的B ...

最新文章

  1. Exp6 信息收集与漏洞扫描 20164314
  2. 360浏览器 ajax取缓存,Angularjs在360兼容模式下取数据缓存问题的解决办法
  3. 机器学习实战-决策树-22
  4. flutter 环境搭建
  5. 《交互式程序设计 第2版》一3.6 关系比较
  6. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  7. Union-SQL Server学习笔记
  8. 湖畔大学官微改名为“湖畔创研中心”
  9. python中字符串是对象吗_Python中关于字符串对象的一些基础知识
  10. Compass.net
  11. InteCAD启动后提示:访问加密锁错误 如何解决?(附AutoCAD InteCAD安装教程)
  12. 计算机组成原理题集,计算机组成原理试题集含答案
  13. 设备接入(LWM2M协议)
  14. 目前流行的前端UI框架
  15. b和kb的换算_G,M,KB,B,b,MB/s,Mb/s,bps等等之间的换算
  16. 在c语言中的变量分为三种类型,在C语言中的实型变量分为两种类型,它们是_______和__________ 答案:float double...
  17. 6亿债务年底还完,老罗“真还传”即将完结
  18. Linux系统下搭建域名服务器 (转http://elaine.blog.51cto.com/336598/65449)
  19. android os 小米系统,小米全新OS系统MIUI 12发布:挑战iOS、22款机型首发升级
  20. c++:std::dec, std::hex, std::oct

热门文章

  1. 万字详述 MySQL ProxySQL
  2. 风起云涌:传Oracle技术的二号人物 Thomas Kurian 正在离开
  3. 千头万绪:从一道面试题看数据库性能和安全的方方面面
  4. innodb实例损坏情况下恢复数据及相关工具的开发
  5. 8种图数据库对 NULL 属性值支持情况
  6. 面试软件测试所需要掌握的7个技能
  7. 大数据管理:构建数据自己的“独门独院”
  8. 电压放大倍数公式运放_资深工程师教你如何选择运放?
  9. leetcode59题:滑动窗口的最大值(用双端队列实现)
  10. C++中cin的常用用法