三、内核时钟(1)

1、硬件时钟提供计时和产生精确是时钟中断。软件时钟(系统时钟),在系统启动时读取硬件时间为起点,根据启动后的滴答数来计算时间,这个滴答数用全局变量jiffies表示,每个时钟周期更新一次。jiffies用于系统调度是每个阶段。

2、软件封装定时器:
(1)老版,最多32个

timer_active 32bit,每一位控制对应定时器的开关
每个定时器,包含expires到期时间,即处理函数
把希望运行的时间转换为jiffies的单位,再加上当前系统时间,得到终结时间expires
struct timer_struct{
    unsigned long expires;
    void (*fn)(void);
};

(2)新版数目不限,定时器双向链表构成队列,以expires升序

这里写图片描述

3、进程执行有核心模式(系统调用进入)和用户模式。每种模式都有自己的堆栈,内核维护全局数据结构和每一个进程的一些信息。但是用户空间和内核空间数据不能互访,所以系统调用时需要调用copy_from_user()或copy_to_user()
三种定时器,定时器计数到达则向进程发送SIGVTAKRM信号(定时器里面函数实现):(1)ITIMER_REAL实时计数,总是在计数;(2)ITIMER_VIRTUAL该进程在用户模式下的时间,用户进程里面调用的系统调用执行时间不算;(3)ITIMER_PROC,CPU花在该进程上的总时间,不同于ITIMER_VIRTUAL用户的系统调用执行时间也算用户执行时间计数

4、linux把中断服务程序一分为二,top half必须关中断运行,读取来自设备的数据保存到预定的缓冲区。然后通知bottom half,剩余的工作排队在适当时间完成。多数bottom half对列专用于某些驱动程序。

5、系统时钟数据结构

include/linux/time.h
该结构定义的变量xtime保存了系统当前时间
struct timeval {
    time_t      tv_sec;     /* 从1970.1.1以来的秒数 */
    suseconds_t tv_usec;    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值