今天悟空早早地就下载了达人先生的课件,悟空打算接着昨天的问题继续研究。悟空先研究tv1、tv2、tv3、tv4、tv5中存放的数据的条件。按照达人老师的课件。tv1中存放的是定时器的到期时间减去tvec_base中的timer_jiffies(和jiffies相等)的值小于2^8的值的定时器,tv2是存放着这个值在2^8 ~2^14之间的定时器,tv3是存放着这个值在2^14 ~2^20之间的定时器,tv4是存放着这个值在2^20 ~2^26之间的定时器,tv5是存放着这个值在2^26 ~2^32之间的定时器。然而令悟空感到困惑的是timer_jiffies会随着时间jiffies的变化,如果每次jiffies变化系统按照上面的规则调整一次五个数组,那么当系统的定时器足够多的时候,系统就需要花费很多时间来维护这些链表。这点让悟空很不明白,悟空觉得红黑树处理的效果可能会更好。

  但是Linux内核为什么不用红黑树来管理定时器呢?悟空最后还是决定夜访达人去请教。

  悟空:老师,如果每经过一个jiffies的时间,系统就要调整一次管理定时器的五个数组,那么系统不是要花费很多时间来处理定时器。

  达人:其实Linux内核之所以要将定时器分为五个数组管理是由原因的,这五个数组就像五个轮子,前面的轮子转一圈,后面的轮子只需要转一个齿轮。

  悟空听了之后感觉更加困惑了,怎么这个还和轮子有关了。

  悟空:老师,你能不能具体一点?

  达人:哦,其实很简单,定时器并不是每增加一个jiffies系统就调整一次struct tvec_base中5个链表,而是当struct tvec_base中的timer_jiffies的低八位全为零时,调整一次tv2中的链表,将tv2中的满足条件的迁移到tv1中。而当timer_jiffies的8-13位为0时,调整一次tv3的链表,将符合条件的tv3的链表中的数据迁移到tv2中。

  悟空:哦,原来是这样啊,那么这个表示不是很复杂吗,为什么不用红黑树呢?

  达人:其实这样设计用到了一个很重要的思想,就是用空间换取时间的思想。对Linux系统来说时间是一种很宝贵的资源,通过这种设计,虽然占用了更多的内存,但是却很好的将算法复杂度降低了。而采用红黑树却会加大调整时间,导致系统要花费很多时间在红黑树的调整上。其实低分辨率的定时器的时间精度比较低,一般只有毫秒级别的,而且有些时候即使低分辨率的定时器到期了,系统也不一定会执行,系统只能保证延时不小于定时器设定的时间。而Linux系统中还有一种定时器叫高精度定时器,这种定时器可以达到ns级别。

  悟空:唉,学了半天原来白学了。

悟空学Linux专栏----第19篇相关推荐

  1. 悟空学Linux专栏----第18篇

    解决了struct timer_list中的expires成员为什么是unsigned long类型的问题之后.悟空决定自己揭开为什么采用双向链表管理数据结构.悟空从网上下载了达人老师的课件,决定先研 ...

  2. 正点原子linux驱动教程,正点原子 手把手教你学Linux之驱动开发篇

    简 介 该课程是正点原子手把手教你学Linux系列课程,该课程配套开发板为正点原子alpha/mini Linux开发板. 手把手教你学Linux之驱动开发篇: 第1讲 Linux驱动开发与裸机开发区 ...

  3. 【Linux】一步一步学Linux——pwd命令(19)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 pwd命令是print working directory ...

  4. linux中将文本中的单词换掉的指令_从零开始学Linux运维|19.文本处理相关命令(2)...

    1.tr tr用于替换文本文件中的字符,格式为"tr [要替换的字符] [替换后的字符]" tr不能用于替换完整字符串,只能替换对应的字符 将小写都替换成大写"cat t ...

  5. 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

    文/黑猫学长 1 作者想说 笔者本人从事于存储芯片行业多年,对eMMC/UFS/SD等芯片有深入研究,协议尤甚.而今看来,UFS协议在整个存储产品中(包括U盘.SPI.SD卡,NM卡.emmc.SSD ...

  6. 菜鸟学Linux 第044篇笔记 算法和私有CA

    菜鸟学Linux 第044篇笔记 算法和私有CA 证书吊销列表CRL(Certificate Revocation List ) 如何解决私钥丢失 PKI: Public Key Infrastruc ...

  7. windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux

    菜鸟学Linux 第103篇笔记 pxe自动化安装linux 内容总览 linux的系统安装 kickstart文件的组成部分 DHCP (Dynamic Host Configuration Pro ...

  8. 菜鸟学Linux 第050篇笔记 dhcp

    菜鸟学Linux 第050篇笔记 dhcp DHCP (Dynamic Host Configuration Protocol) 早期bootp (boot protocol) lease Clien ...

  9. 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql

    菜鸟学Linux 第090篇笔记 corosync+drbd+mysql 内容总览 上节回顾 DRBD (Distributed Replicated Block Device) 分布式复制块设备 配 ...

最新文章

  1. 图论 ---- DAG删点+枚举+暴力+离线前缀异或和 J Red-Black Paths (2021 icpc网络赛第一场)
  2. 安装 m2eclipse 插件
  3. Access中出现改变字段“自己主动编号”类型,不能再改回来!(已解决)
  4. iOS一个灵活可扩展的开源Log库
  5. 2021 ccpc 哈尔滨 G. Damaged Bicycle 状压 + 期望dp
  6. codesys com库_CODESYS在线库,酷德网镜像站启用
  7. 对象数组与普通数组 java 0913
  8. nexus4恢复原生系统_深度好文!新浪微博架构师详析微博云原生技术的思考与实践...
  9. 从王者荣耀看设计模式(六.状态模式)
  10. [轉]让PHP支持像jQuery那样的链式操作
  11. 从经典到最新前沿,一文概览2D人体姿态估计
  12. 【引用】43种名车标志及来历
  13. 解决VIVADO ZYNQ编译提示PS引脚约束警告
  14. VRP基础介绍:VRP基础
  15. 为什么那些美事没有实现---生活中小事有感
  16. 祝大家2022幸福安康
  17. 计算机东北大学与兰州大学哪个好,东北大学和兰州大学如何选择?上哪个比较好?...
  18. 光学遥感影像的几何校正
  19. “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
  20. 中国剩余定理(也叫孙子定理)

热门文章

  1. 过山车java_航电java2063过山车
  2. juicefs使用glusterfs卷
  3. 成都python培训比较好的机构-成都Python全栈培训
  4. 学习ARIMA模型的心得
  5. 2017noip逛公园
  6. endsWith() 方法
  7. 一个较复杂的React服务端渲染示例(React-Koa-Redux等)
  8. 主题:圣斗士星矢的状态模式和观察者模式
  9. 多域名实现单点登录详解
  10. vuejs可爱动物卡片样式动画js特效