zoukankan      html  css  js  c++  java
  • 关于任务结构体中utime和stime的探讨

        最近翻看linux较早版本的内核,在定时器处理函数do_timer()【linux/kernel/sched.c】中有这么一段代码觉得想不透彻:

        

        if (cpl)

            current->utime++;  

        else

            current->stime++;

     其中不解之处就是对cpl的理解。网上普遍的理解是cpl=0为内核态,否则>0表示用户态。但是定时器中断处理函数都是在内核态进行的,赵炯博士的树上是这么解释的,0表示超级任务,即内核态任务,linux的idle任务和任务1即是此类任务,该任务与其他任务的区别就是其代码段和数据段都是在640K的内核区域之内的,>0表示普通任务。至于我的理解,认为“赵博”的的解释更加合理,因为如按第一种解释,对于任何一个执行do_timer的任务(实际上这是由定时器中断产生的),执行这段代码,都是处于内核态的,用户态的时候根本不会跑到这里。

         姑且这么认为吧,希望疑问能够早日得到解决!

  • 相关阅读:
    问题python3中的tablib库报错“'Dataset' object has no attribute 'xlsx' tablib”
    下载并运行 Jenkins
    mac上卸载jdk
    Macbook pro 切换显卡
    Mac 安装和使用MongoDB
    PEP8 规范
    完全卸载Xcode
    mysql重置密码
    安装vue mac 不成功
    error:Cannot pull with rebase
  • 原文地址:https://www.cnblogs.com/biyeqingfeng/p/2291769.html
Copyright © 2011-2022 走看看