一篇分析Linux虚拟化KVM-Qemu分析之timer虚拟化

本文详细介绍了ARMv8架构下的GenericTimer及其在虚拟化环境中的应用,包括其硬件结构、虚拟化支持和初始化流程。在KVM中,GenericTimer的虚拟化允许每个虚拟机拥有独立的虚拟计数器,通过偏移量来跟踪虚拟时间。文章还探讨了用户层和GuestOS对timer的访问方式以及异常处理机制。
摘要由CSDN通过智能技术生成

说明:

  1. KVM版本:5.9.1
  2. QEMU版本:5.0.0
  3. 工具:Source Insight 3.5, Visio

1. 概述

先从操作系统的角度来看一下timer的作用吧:

通过timer的中断,OS实现的功能包括但不局限于上图:

  • 定时器的维护,包括用户态和内核态,当指定时间段过去后触发事件操作,比如IO操作注册的超时定时器等;
  • 更新系统的运行时间、wall time等,此外还保存当前的时间和日期,以便能通过time()等接口返回给用户程序,内核中也可以利用其作为文件和网络包的时间戳;
  • 调度器在调度任务分配给CPU时,也会去对task的运行时间进行统计计算,比如CFS调度,Round-Robin调度等;
  • 资源使用统计,比如系统负载的记录等,此外用户使用top命令也能进行查看;

timer就像是系统的脉搏,重要性不言而喻。ARMv8架构处理器提供了一个Generic Timer,与GIC类似,Generic Timer在硬件上也支持了虚拟化,减少了软件模拟带来的overhead。

本文将围绕着ARMv8的timer虚拟化来展开。

 

  资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

2. ARMv8 Timer虚拟化

2.1 Generic Timer

看一下ARMv8架构下的CPU内部图:

  • Generic Timer提供了一个系统计数器,用于测量真实时间的消逝;
  • Generic Timer支持虚拟计数器,用于测量虚拟的时间消逝,一个虚拟计数器对应一个虚拟机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值