定时器的实现,依赖的是CPU时钟中断;时钟中断的精度,决定了定时器精度的极限。那么,一个时钟中断源如何实现多个定时器呢?
对于内核,简单来说就是用特定的数据结构管理众多的定时器,在时钟中断处理中判断哪些定时器超时,然后执行超时处理动作。而用户空间程序不直接感知CPU时钟中断,通过感知内核的信号、IO事件、调度,间接依赖时钟中断。
用软件来实现动态定时器常用数据结构有:时间轮、最小堆和红黑树。下面就是一些知名的实现:
下面,介绍一下Linux内核定时器的一些相关代码。
内核启动注册时钟中断:
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。
在展开本文之前,先解释一下本文中会提到的三个重要概念:arena,bin,chunk。三者在逻辑上的蕴含关系一般如下图所示(图中的chunk严格来说应该是Free Chunk)。
main arena:主线程建立的arena;
thread arena:子线程建立的arena;
Allocated chunk:即分配给用户且未释放的内存块;
Free chunk:即用户已经释放的内存块;
Top chunk
Last Remainder chunk
Fast bin
Unsorted bin
Small bin
Large bin
在这里读者仅需明白arena的等级大于bin的等级大于(free)chunk的等级即可,即A>B>C。
NTP(网络时间协议)是一种运行在端口 123 UDP 上的协议。NTP 将客户端的时间和日期与主服务器同步。
RHEL 8 不再支持 NTP 包。Chrony是默认的 NTP 客户端,也是 Red Hat Enterprise Linux 8 上的 NTP 服务器。
Service Name= chronyd
为文件搜索文字字符串,fgrep命令 是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件 fgrep 命令将显示包含匹配行的文件。
fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep 命令使用快速的压缩算法。$, *, [, |, (, )和\等字符串被 fgrep 命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号' ... '。如果没有指定文件, fgrep 命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。
fgrep [选项][参数]
SFTP 代表 Secure File Transfer Protocol. S有时也代表 SSH(或 Secure Shell),它是文件传输服务运行的安全加密隧道。
SFTP 是一种通过远程系统安全传输文件的流行方法。该sftp命令通常是 OpenSSH 包的一部分。它被设计为 SSH v2.0 的扩展,以增强 安全文件传输功能。该sftp命令行界面被设计为类似于ftp命令。
© 2025 VxWorks Club