悟空学Linux专栏----第19篇
今天悟空早早地就下载了达人先生的课件,悟空打算接着昨天的问题继续研究。悟空先研究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篇相关推荐
- 悟空学Linux专栏----第18篇
解决了struct timer_list中的expires成员为什么是unsigned long类型的问题之后.悟空决定自己揭开为什么采用双向链表管理数据结构.悟空从网上下载了达人老师的课件,决定先研 ...
- 正点原子linux驱动教程,正点原子 手把手教你学Linux之驱动开发篇
简 介 该课程是正点原子手把手教你学Linux系列课程,该课程配套开发板为正点原子alpha/mini Linux开发板. 手把手教你学Linux之驱动开发篇: 第1讲 Linux驱动开发与裸机开发区 ...
- 【Linux】一步一步学Linux——pwd命令(19)
00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 pwd命令是print working directory ...
- linux中将文本中的单词换掉的指令_从零开始学Linux运维|19.文本处理相关命令(2)...
1.tr tr用于替换文本文件中的字符,格式为"tr [要替换的字符] [替换后的字符]" tr不能用于替换完整字符串,只能替换对应的字符 将小写都替换成大写"cat t ...
- 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)
文/黑猫学长 1 作者想说 笔者本人从事于存储芯片行业多年,对eMMC/UFS/SD等芯片有深入研究,协议尤甚.而今看来,UFS协议在整个存储产品中(包括U盘.SPI.SD卡,NM卡.emmc.SSD ...
- 菜鸟学Linux 第044篇笔记 算法和私有CA
菜鸟学Linux 第044篇笔记 算法和私有CA 证书吊销列表CRL(Certificate Revocation List ) 如何解决私钥丢失 PKI: Public Key Infrastruc ...
- windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux
菜鸟学Linux 第103篇笔记 pxe自动化安装linux 内容总览 linux的系统安装 kickstart文件的组成部分 DHCP (Dynamic Host Configuration Pro ...
- 菜鸟学Linux 第050篇笔记 dhcp
菜鸟学Linux 第050篇笔记 dhcp DHCP (Dynamic Host Configuration Protocol) 早期bootp (boot protocol) lease Clien ...
- 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
菜鸟学Linux 第090篇笔记 corosync+drbd+mysql 内容总览 上节回顾 DRBD (Distributed Replicated Block Device) 分布式复制块设备 配 ...
最新文章
- 图论 ---- DAG删点+枚举+暴力+离线前缀异或和 J Red-Black Paths (2021 icpc网络赛第一场)
- 安装 m2eclipse 插件
- Access中出现改变字段“自己主动编号”类型,不能再改回来!(已解决)
- iOS一个灵活可扩展的开源Log库
- 2021 ccpc 哈尔滨 G. Damaged Bicycle 状压 + 期望dp
- codesys com库_CODESYS在线库,酷德网镜像站启用
- 对象数组与普通数组 java 0913
- nexus4恢复原生系统_深度好文!新浪微博架构师详析微博云原生技术的思考与实践...
- 从王者荣耀看设计模式(六.状态模式)
- [轉]让PHP支持像jQuery那样的链式操作
- 从经典到最新前沿,一文概览2D人体姿态估计
- 【引用】43种名车标志及来历
- 解决VIVADO ZYNQ编译提示PS引脚约束警告
- VRP基础介绍:VRP基础
- 为什么那些美事没有实现---生活中小事有感
- 祝大家2022幸福安康
- 计算机东北大学与兰州大学哪个好,东北大学和兰州大学如何选择?上哪个比较好?...
- 光学遥感影像的几何校正
- “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
- 中国剩余定理(也叫孙子定理)