Recent posts

Sleepable RCU

1 minute read

经典RCU在临界区内不能睡眠或阻塞,因此SRCU(Sleepable RCU)被提出允许在读者的临界区内睡眠。为了尽量避免在临界区内睡眠导致的RCU callbacks积压,SRCU采用了域隔离,即使出现RCU callbacks积压,也只影响当前域的SRCU。

从源码全面了解crun

5 minute read

crun是Redhat的工程师Giuseppe开发的一款低层级的OCI runtime,与runc一样都全面兼容OCI标准规范,负责执行容器生命周期等各种管理功能。但与runc使用go语言不同,crun使用C语言开发,使其具有优异的性能与较小的内存开销,同时其程序的二进制文件更小,而且支持更多OCI不支持的新特性...

虚拟机的重启、关机以及重置

3 minute read

目前物理计算机的电源管理大部分均采用ACPI技术,它是英特尔等公司提出的操作系统应用程序管理所有电源管理接口的规范,包括了软件和硬件方面的规范,操作系统的电源管理功能通过调用 ACPI 接口,实现对符合 ACPI 规范的硬件设备的电源管理。和物理计算机一样,虚拟机同样需要类似重启、关机、重置等的生命周期操作,本文...

virtio显卡实现分析

3 minute read

virtio-vga与virtio-gpu是qemu模拟的较新的显卡设备,它们都是由Dave Airlie等人引入,避免通过直通GPU来加速虚拟机内部的3D渲染。x86下使用virtio-vga,arm下使用virtio-gpu,guest里使用virtio-gpu作为前端驱动。x86下如果Guest OS中没有...

qemu如何模拟INTx

2 minute read

本文主要以针对arm架构实现的virt机型为例,分析qemu是如何实现INTx中断的模拟和虚拟化的。qemu在x86架构下的实现可参考这篇文章。PCI/PCIe设备支持INTx中断或者MSI/MSI-X中断,传统的一些老旧设备仍旧在使用通过中断引脚传递中断请求的INTx中断机制。此外,在arm平台下由于linux...