第五章学习笔记

一、摘要

  • 本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于 Intel x86 PC 中的硬件定时器;讲解了 CPU操作和中断处理;描述了 Linux 中与定时器相关的系统调用、库函数和定时器服务命令;探讨了进程间隔定时器、定时器生厅成的信号,并通过示例演示了进程间隔定时器。编程项目的目的是要在一个多任务处理系统中实现定时器、定时器中断和间隔定时器。多任务处理系统作为一个 Linux 进程运行,该系线2统是 Linux 进程内并发任务的-个虚拟 CPULinux 进程的实时模式间隔定时器被设计为定期期生成 SIGALRM 信号,充当虚拟 CPU 的定时器中断,虚拟 CPU 使用 SIGALRM 信号捕捉器作为定时器的中断处理程序该项目可让读进程通过定时器队列实现任务间隔定时器,还可可让读进程使用 Linux 信号掩码来实现临界区,以防止各项任务和中断处理程序之间出现竞态态条件。摘要

硬件定时器

硬件定时器:一般硬件定时器集成在CPU的内部,有的可以使用外置的硬件定时器芯片;
特点:
可以人为通过编程来设置硬件定时器的工作频率;
硬件定时器一旦设定好了工作频率,只要上电,那么硬件定时器就会周期性的给CPU输出一个中断信号,称这个中断信号为时钟中断;
linux内核已经实现好了时钟中断对应的服务程序,这个服务程序也称之为时钟中断服务函数;
既然硬件定时器周期性的给CPU产生时钟中断,那么对应的中断服务程序就会被内核周期性的调用;
时钟中断服务函数做如下内容:
1.更新系统的运行时间,更新jiffies_64(jiffies)
2.更新实际时间
3.检查进程的时间片是否用完,决定是否需要重新调度新进程
4.检查是否有超时的软件定时器,如果有处理这个超时的软件定时器

二、个人计算机定时器

 

实时时钟(RTC):RTC由一个小型备用电池供电。即使在个人计算机关机时,它也能连续运行。它用于实时提供时间和日期信息。当Linux启动时,它使用RTC更新系统时间变量,以与当前时间保持一致。在所有类Unix系统中,时间变量是一个长整数,包含 从197011日起经过的秒数。

 

 

可编程间隔定时器(PIT):PIT是与CPU分离的一个硬件定时器。可对它进行编程,以提供以毫秒为单位的定时器刻度。在所有I/O设备中,PIT可以最高优先 级IRQ0中断。PIT定时器中断由Linux内核的定时器中断处理程序来处理,为系统操作提 供基本的定时单元,例如进程调度、进程间隔定时器和其他许多定时事件。

 

 

多核CPU中的本地定时器:在多核CPU中,每个核都是一个独立的处理器,它有自己的本地定时器,由CPU时钟驱动。

 

 

高分辨率定时器:大多数电脑都有一个时间戳定时器(TSC),由系统时钟驱动。它的内容可通过64TSC寄存器读取。由于不同系统主板的时钟频率可能不同,TSC不适合作为实时设备,但它提供纳秒级的定时器分辨率。一些高端个人计算机可能还配备有专用高速定时器,以提供纳秒级定时器分辨率。

 

三、CPU操作

每个CPU都有一个程序计数器(PC),也称为指令指针(IP),以及一个标志或状态寄存器(SR)、一个堆栈指针(SP)和几个通用寄存器,当PC指向内存中要执行的下一条指令时,SR包含CPU的当前状态,如操作模式、中断掩码和条件码,SP指向当前堆栈栈顶。堆栈是CPU用于特殊操作(push\pop调用和返回)的一个内存区域。CPU操作可通过无限循环进行建模。

四、中断处理

外部设备(如定时器)的中断被馈送到中断控制器的预定义输入行,按优先级对中断输入排序,并将具有最高优先级的中断作为中断请求(IRQ)路由到CPU。在每条指令执行结束时,如果CPU未处于接受中断的状态,即在CPU的状态寄存器中屏蔽了中断.它将忽略中断请求,使其处于挂起状态,并继续执行下一条指令。如果CPU处于接受中断状态,即中断未被屏蔽,那么CPU将会转移它正常的执行顺序来进行中断处理。对于每个中断,可以编程中断控制器以生成一个唯一编号,叫作中断向量,标识中断源。在获取中断向量号后,CPU用它作为内存中中断向量表中的条目索引,条目包含一个指向中断处理程序入口地址的指针来实际处理中断。当中断处理结束时,CPU恢复指令的正常执行。

posted @ 2022-10-23 19:12  20201214罗云帆  阅读(13)  评论(0编辑  收藏  举报