timekeeping
[toc] kernel/time/timekeeping.c 内核时间保持(Kernel Timekeeping) 维护系统时间的核心与灵魂历史与背景这项技术是为了解决什么特定问题而诞生的?这项技术是为了解决操作系统中最基础、最核心的需求之一:以一种精确、稳定、单调的方式来跟踪和维护时间的流逝。 kernel/time/timekeeping.c所管理的时间保持子系统,具体解决了以下几个关键问题: 时间的表示与更新:需要一个核心机制来管理系统的“官方时间”。这包括“墙上时间”(Wall Time,即CLOCK_REALTIME,自1970年Epoch以来的时间,可以被用户或NTP修改),以及“单调时间”(Monotonic Time,即CLOCK_MONOTONIC,从系统启动开始单调递增,不受时间调整影响)。 时钟源的抽象:硬件提供了各种各样的时间源(Clock Sources),例如TSC(CPU的时间戳计数器)、HPET(高精度事件定时器)、ACPI PM Timer等。这些时钟源的精度、稳定性和访问速度各不相同。时间保持子系统需要一个框架来抽...
timer
[toc] kernel/time/timer.c 传统内核定时器(Legacy Kernel Timers) 基于jiffies的通用定时机制历史与背景这项技术是为了解决什么特定问题而诞生的?kernel/time/timer.c 实现了Linux内核中最传统、最通用的低分辨率定时器机制。它的诞生是为了解决内核中一个无处不在的需求:以一种低开销、非阻塞的方式,安排一个函数在未来的某个时间点被执行。 在内核的许多代码路径中,尤其是在与硬件交互时,都需要处理超时。例如: 设备驱动:一个驱动向设备发送一个命令后,不能无限期地等待其响应。它需要设置一个超时,如果在指定时间内没有收到响应,就必须进行错误处理。 网络协议栈:TCP协议在发送一个数据段后,会启动一个重传定时器。如果在规定时间内没有收到对方的确认(ACK),定时器到期后就会重新发送该数据段。 周期性轮询:某些简单的驱动可能需要周期性地检查硬件状态。 timer.c 提供的struct timer_list接口,就是为了满足这些**对精度要求不高(毫秒级)**的通用定时需求而设计的。 它的发展经历了...
tick
[toc] kernel/time/tick-*.c 内核时钟滴答(The Kernel Tick) 驱动时间流逝与进程抢占历史与背景这项技术是为了解决什么特定问题而诞生的?kernel/time/tick-*.c 目录下的文件集合构成了内核时钟滴答(Kernel Tick)的底层实现。这项技术是所有分时操作系统的心跳(Heartbeat),它的诞生是为了解决两个最根本的问题: 时间流逝的度量:内核需要一个机制来驱动内部的时间概念。没有一个周期性的“滴答”,像jiffies这样的计数器将无法更新,基于jiffies的传统定时器(timer_list)也将永远不会到期。 强制性进程抢占(Preemptive Multitasking):在一个协作式多任务系统中,一个进程会一直运行直到它自愿放弃CPU。这会导致一个死循环的进程就能锁死整个系统。为了实现抢占式多任务,内核需要一个周期性的、不可抗拒的事件来中断当前正在运行的进程,并给调度器一个机会去检查是否有其他进程应该运行。这个事件就是时钟滴答中断。 简而言之,内核滴答是调度器得以强制执行时间片轮转和内...
tmc_study
grblconfig Inc\my_machine.h中取消注释进行配置开启如下配置进行学习 12345678910111213141516171819202122#define BOARD_BTT_SKR_20 // F407 based 3D Printer board#define TRINAMIC_ENABLE 5160 // Trinamic TMC5160 stepper driver support.#define N_AXIS 6#define TRINAMIC_DYNAMIC_CURRENT#define TRINAMIC_EXTENDED_SETTINGS#define TRINAMIC_POLL_STATUS// 这些选项需要自行配置,不配做使用默认值#define TMC_DRVCONF#define TMC_COOLCONF_SEMIN#define TMC_COOLCONF_SEMAX#define TMC_COOLCONF_SEDN#define TMC_COOLCONF_SEUP#define TMC_COOLCONF_SE...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment



