11---定时器和时间管理

内核中哪些函数需要定期执行?

  • 对调度程序中的队列进行平衡调整的函数
  • 对屏幕进行刷新的函数

内核如何计算和管理时间,HZ、节拍和节拍率是什么?

内核借助系统定时器计算流失的时间,系统定时器以一定的频率(预定义,也称节拍率或HZ)触发时钟中断,内核通过两次时钟中断的间隔计算(也称为节拍)和管理时间。

什么是系统运行时间?

自系统启动开始所经历的时间。

系统定时器使用高频率有哪些优点?

  • 更高的时钟中断解析度可提高时间驱动事件的解析度
  • 提高时间驱动事件的准确度
  • 内核定时器能够以更高的频度和更高的准确度运行
  • 依赖定时值执行的系统调用,如poll( )和select()能够以更高的精度运行
  • 对诸如资源消耗和系统运行时间等的测量会有更精细的解析度
  • 提高进程抢占的准确度

系统定时器使用高频率有哪些缺点?

节拍越高,时钟中断频率越高,系统的负担越重,中断处理程序占用的处理器时间越多,打断处理器高速缓存并增加耗电。

jiffies作用是什么?

记录自系统启动以来产生的节拍总数,启动时,内核将该变量初始化为0,此后,每次时钟中断程序增加该变量的值。

如何计算系统运行时间?

一秒内时钟中断的次数为HZ,jiffies一秒内增加的值为HZ,系统运行时间(以秒为单位)=jiffies/HZ

jiffies的数据类型为什么?

无符号长整型

什么是实时时钟RTC?

用来持久存放系统时间的设备,在关闭时,利用主板上的微型电池提供的电力保持系统计时。

实时时钟的作用是什么?

启动时初始化Xtime变量(墙上时间)

系统定时器的根本思想是什么?

提供一种周期性触发中断机制

时钟中断处理程序如何实现?

  • 体系结构相关部分:作为系统定时器的中断处理程序而注册到内核,在产生时钟中断时运行
  • 体系结构无关部分:由中断处理程序调用

定时器的工作原理是什么?

先执行初始化操作;然后,设置超时时间,指定超时发生后的执行函数;最后,激活定时器,指定的函数会在定时器到期时执行,执行完成后自动撤销。

定时器为什么会存在竞争条件?

因为定时器和当前执行代码时异步的,所以存在潜在的竞争

如何避免竞争条件发生?

  • 使用mod_timer( )函数来改变定时器的超时时间
  • 使用del_timer_sync( )函数先等待其他定时器处理任务退出再删除定时器
  • 保护定时器中断处理程序的共享数据

如何实现定时器?

内核在时钟中断发生后执行定时器,定时器作为软中断在下半部的上下文执行。具体来说,就是时钟中断处理程序执行update_process_times(),此函数调用run_local_timers()函数,接着会调用定时器软中断函数raise_softirq(Timer_softirq)函数。

在哪些情况下不能执行延时操作?

禁止中断的代码、中断上半部的上下文和持有锁的临界区不能执行延时操作

延迟执行的方法有哪些?

  • 忙等待(忙循环)在想要延迟的时间是节拍的整数倍或者精度要求不高的情况下使用。
  • 短延时(mdelay\udelay\ndelay)短暂(小于1ms)等待某个动作完成如与硬件同步的情况下使用.
  • schedule_timeout( )让需要延迟执行的任务睡眠到大约指定延迟时间后再重新运行

猜你喜欢

转载自blog.csdn.net/weixin_42415578/article/details/84140589
今日推荐