首页 > 系统相关 >《Linux内核完全注释》学习笔记:2.3 Linux系统定时

《Linux内核完全注释》学习笔记:2.3 Linux系统定时

时间:2024-05-16 21:11:46浏览次数:23  
标签:中断 timer 进程 内核 Linux 2.3 运行

在Linux 0.11内核中,PC的可编程定时芯片Intel 8253被设置成每隔10ms就发出一个时钟中断(IRQ0)信号。

这个时间节拍就是系统运行的脉搏,我们称之为1个系统滴答

因此每经过1个滴答就会调用一次时钟中断处理程序(timer_interrupt)

该处理程序主要用来通过 jiffies 变量来累计自系统启动以来经过的时钟滴答数。每当发生一次时钟中断该值就增1。然后从被中断程序的段选择符中取得当前特权级 CPL 作为参数调用 do_timer() 函数。

do_timer() 函数根据特权级对当前进程运行时间做累计。

  1. 如果 CPL=0,则表示进程是运行在内核态时被中断,因此把进程的内核运行时间统计值 stime 增1,否则把进程用户态运行时间统计值增1。

  2. 如果程序添加过定时器,则对定时器链表进行处理。

    • 若某个定时器时间到(递减后等于 0 ),则调用该定时器的处理函数。
  3. 然后对当前进程运行时间进行处理,把当前进程运行时间片减1。

    1. 如果此时当前进程时间片还大于 0 ,表示其时间片还没有用完,于是就退出 do_timer() 继续运行当前进程。
    2. 如果此时进程时间片已经递减为 0 ,表示该进程已经用完了此次使用CPU的时间片,于是程序就会根据被中断程序的级别来确定进一步处理的方法。
      1. 若被中断的当前进程是工作在用户态的(特权级别大于 0 ),则 do_timer() 就会调用调度程序 schedule() 切换到其他进程去运行。
      2. 如果被中断的当前进程工作在内核态,即在内核程序中运行时被中断,则 do_timer() 会立刻退出。

因此这样的处理方式决定了Linux系统在内核态运行时不会被调度程序切换
进程在内核态程序中运行时是不可抢占的,但当处于用户态程序中运行时则是可以被抢占的。

标签:中断,timer,进程,内核,Linux,2.3,运行
From: https://www.cnblogs.com/Larcvz/p/18196719

相关文章

  • Linux-Mint-系统管理-全-
    LinuxMint系统管理(全)原文:zh.annas-archive.org/md5/bc35a5141fec44b55af1b6bad7139bc5译者:飞龙协议:CCBY-NC-SA4.0前言在过去的5年中,基于Linux的操作系统的用户数量显著增加。许多计算机用户希望了解更多关于Linux的信息,并且许多人正在从Windows和MacOSX等......
  • Linux-安全实战秘籍-全-
    Linux安全实战秘籍(全)原文:zh.annas-archive.org/md5/9B7E99EE96EAD6CC77971D4699E9954A译者:飞龙协议:CCBY-NC-SA4.0前言在设置Linux系统时,安全性应该是所有阶段的重要组成部分。对Linux基础知识的良好了解对于在机器上实施良好的安全策略至关重要。Linux作为发行的......
  • Linux-Shell-编程训练营-全-
    LinuxShell编程训练营(全)原文:zh.annas-archive.org/md5/65C572CE82539328A9B0D1458096FD51译者:飞龙协议:CCBY-NC-SA4.0前言在LinuxShellScriptingBootcamp中,您将首先学习脚本创建的基础知识。您将学习如何验证参数,以及如何检查文件的存在。接着,您将熟悉Linux系统......
  • Linux-基础知识-全-
    Linux基础知识(全)原文:zh.annas-archive.org/md5/29980B7659BC4BE41209BC2F2B7B6D02译者:飞龙协议:CCBY-NC-SA4.0前言在这本书中,目标是建立一个扎实的基础,学习Linux命令行的所有基本要素,让你入门。它的设计强调只学习实际的核心技能和基本的Linux知识,这在开始学习这个美......
  • Linux-系统编程实用手册-二-
    Linux系统编程实用手册(二)原文:zh.annas-archive.org/md5/9713B9F84CB12A4F8624F3E68B0D4320译者:飞龙协议:CCBY-NC-SA4.0第十八章:高级文件I/O在附录A,文件I/O基础中,我们介绍了应用程序开发人员如何利用可用的glibc库API以及执行文件I/O(打开、读取、写入和关闭)的典......
  • openGauss Linux下配置数据源
    Linux下配置数据源将openGauss提供的ODBCDRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。操作步骤获取unixODBC源码包。获取......
  • ArchLinux-环境配置操作手册-全-
    ArchLinux环境配置操作手册(全)原文:zh.annas-archive.org/md5/537398CD561E23B9C0417DF43FA5C99F译者:飞龙协议:CCBY-NC-SA4.0前言ArchLinux是一种独立开发的通用GNU/Linux发行版,针对i686/x86-64系统进行了优化。该发行版足够灵活,适合任何角色/需求。它的设计侧重于简......
  • linux常用操作
    1.vi/vim查找字符串命令模式下,输入:/字符串比如搜索user,输入/user按下回车之后,可以看到vim已经把光标移动到该字符处和高亮了匹配的字符串查看下一个匹配,按下n(小写n)跳转到上一个匹配,按下N(大写N)搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?命令模式下,输入:nohlse......
  • util-linux升级为最新版本v2.40(修复CVE-2024-28085)
    下载util-linux最新源码代码仓库下载util-linux-2.40.1.tar.gz解压tar-zxvfutil-linux-2.40.1.tar.gzcdutil-linux-2.40.1执行autogen.shsudo./autogen.sh配置sudo./configure如果提示configure:error:liblastlog2selected,butrequiredsqlite3libraryn......
  • Linux系统 输入vim 提示command not found
    让我想起了我面试的时候,面试官说你了解Linux系统吗?我说我不......他说好的,请问你平时怎么编辑文件呢。我说vim,进入编辑模式之后按照文档里面......他说如果没有vim呢?我说那就用自带的吧?他说自带的叫什么呢?我:......他:......他突然说:你平时抽烟吗?我:......whatcanisay......