26、虚拟化环境下大规模应用程序调试技术解析

虚拟化环境下大规模应用程序调试技术解析

1. CCS请求处理与虚拟处理器调度

在虚拟节点中,调度器会通过调用与请求消息关联的函数来处理CCS请求,并返回响应消息。由于虚拟处理器可直接访问公共地址空间中存储的数据结构,因此响应无需CONVERSE干预。在虚拟化环境中,多播和广播请求也能得到处理,这虽会增加CCS请求执行的一些开销,但极大简化了系统,也方便了模拟模式和非模拟模式间的代码复用。

部分CCS请求消息并不绑定特定的虚拟处理器,例如CHARMDEBUG可能会向物理处理器发送CCS请求,以查询与系统架构或内存系统相关的处理器级信息。由于同一物理处理器上的所有虚拟处理器都能访问包括整个内存在内的处理器信息,所以任何一个虚拟处理器都可处理这些CCS请求。因此,CHARMDEBUG客户端会始终将此类CCS请求发送到物理处理器上的一个虚拟处理器,这种方式极大简化了CCS协议的设计与实现。

2. 暂停虚拟处理器的执行

要暂停单个虚拟处理器的执行是一项挑战。在处理器暂停期间,仍需向其传递消息,例如调试器的请求应不受处理器状态影响。同时,不能影响同一物理处理器内模拟的其他虚拟处理器。

在非虚拟化环境中,暂停处理器的方法是在需要暂停时进入特殊调度器。在此模式下,常规消息会被放入队列,并按先进先出顺序缓冲,直到处理器能够处理它们。该调度器还负责驱动网络和接收传入消息,确保调试器的命令仍可执行。

在虚拟化环境中,驱动网络并将消息转发给虚拟进程的调度器与每个虚拟处理器内部的调度器是分离的,因此不能让每个虚拟处理器都驱动网络。为此,我们改进方案,将消息缓冲移到每个虚拟处理器内部。当工作处理器因调试器的“冻结”命令或断点需要暂停时,它会递归

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值