20、同步日志记录与重放以记录证据

同步日志记录与重放以记录证据

1. 系统总体架构

系统的执行日志通过共享内存从主节点传输到备份节点。对于每个需要记录的事件,主VMM(虚拟机监视器)将其记录写入共享内存,备份VMM则从共享内存中读取该记录。这种映射关系在VMM启动时创建。由于日志数据由VMM读写,而非Linux系统,因此共享内存仅由VMM使用,并且不会向Linux系统通知共享内存区域的存在。目前,共享内存的大小设置为4MB,实际使用时应根据系统情况调整为合适的值。

备份VMM从共享内存读取执行日志,并为备份客户操作系统提供相同的事件以进行重放。备份客户操作系统不接收设备的输入,而是从备份VMM获取重放数据。备份客户操作系统产生的输出由备份VMM处理,这些输出可以输出到同一设备的不同单元或模拟设备。

2. 设计原理

为了使主节点和备份节点的指令执行流和产生的值相同,需要记录以下内容:
- I/O端口值 :如果一个函数访问I/O端口并从中读取值,结果会因读取的值而异。因此,必须在主节点记录从I/O端口复制的值,并在备份节点以相同顺序从相应端口提供相同的值。
- 外部中断信息 :外部中断会改变指令执行流,并且是由执行程序外部的因素引起的。为了使主节点和备份节点的指令执行流相同,必须在主节点记录外部中断在指令执行流中发生的具体点及其IRQ#(中断请求号),并在备份节点的相同点引发并处理具有相同IRQ#的中断。

由于大多数程序中存在分支指令,因此需要记录指令地址、自上次中断以来的分支数量以及%ecx寄存器的值,以便指定中断重放的点。

3. 日志记录与重放机制 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值