博客
分类
标签
归档
友链
关于
Dark Mode
博客
分类
标签
归档
友链
关于
Dark Mode
Mens et Manus
Sigma求和的思考
Abstract 改写求和,实际上是在改写程序。提出Sigma外 相当于 提出loop外 数学作为抽象工具,替代不可靠的直觉 PrefaceSigma求和有些常用的技巧:常量可以提出,如: $$\sum_{i=1}^m \sum_{j=1}^n ij$$ 对于内层循环$\sum_j ij$,i相对内存循环是”常量”,因此可以写成: $$\sum_{i=1}^m i \sum_{j=1}^n...
2021-10-22
Read More
qemu中pci对中断的支持
Preface PCI Local Bus Specification: 2.2.6. Interrupt Pins (Optional) pci总线规范为pci设备准备了4个中断引脚(INTx#)用于传递中断。设备所使用的中断引脚信息保存在configuration space的Interrupt Pin Register中。这4个中断引脚在设备间的共享的,引脚的分配pci spec推荐...
2021-10-05
Read More
qemu中对pcie的模拟
Overviewpcie对pci的功能进行了扩展,同步保留的对pci总线规范的兼容。这里仅对以下几点进行说明: root complex root complex是个抽象的概念,并不是某个具体的器件,表示一组pcie系统元素(桥、交换机、端口等)。简单的讲RC就是cpu与pcie拓扑结构的连接点(root),而这个连接点可以包含很多组件(所以叫complex)。主要功能(与pcie设备通信...
2021-10-04
Read More
QEMU中GPA到HVA变换过程
GPA 到 HVA的过程QEMU通过GPA找到MemoryRegion从而完成到HVA的转换,而QEMU总是先从tlb中找tlbentry,再利用tlbentry找mr。GPA到HVA的问题就变为了,GPA找tlbentry的问题。 不是完整的状态机 指令经过qemu动态翻译后得到GPA地址字面值addr,qemu需要根据该地址找到对应的MR然后执行相应的读写操作 GPA地址字面值在XXX...
2021-09-26
Read More
外核架构Exokernel和Unikernel
Abstract看到云服务这种”单一”功能的属性,unikernel应运而生。不同于传统虚拟机,unikernel为这样云环境做性能、运营、安全、开销等方面的优化。其核心思想就是既然云服务器的使用者仅需要单一的功能,那我们就提供一个功能比较单一的、编译时功能确定的、更轻量更安全的操作系统和配套设施(library)。lib就相当于现在(2021)我们说的”系统生态/软件”,用户可以根据lib...
2021-09-18
Read More
QEMU总线模拟
Abstract设备之间通过总线互联通信,如果将所有设备都挂在到sysbus(即所谓的内部总线:连接cpu、内存、pic总线控制器等设备的总线)将会增加主板的布线难度,而且cpu并不需要实时与外围设备通信。因此没必要每个设备都直接与cpu连接。 现代cpu通过sysbus直接连接一个控制芯片,这个控制芯片再管理外围设备。控制芯片将数据汇总后再与cpu通信。 这个过程对应到QEMU中的就是: ...
2021-09-10
Read More
垃圾回收机制原理与实现
前言 动态内存分配在堆上进行 堆用free list管理空闲块 堆的每次动态分配内存是从它现有的free list中取出一块(或块中的一部分,这取决于管理free list的策略) 堆的free list中没有适合的块时再尝试”堆扩容”,即堆一开始并不是就拥有整个内存来分配的 所谓garbage就是内存中永远无法使用到的部分。这往往是由于动态申请内存后没有及时释放导致的内存泄漏。 垃圾回收...
2021-09-05
Read More
QEMU设备通信
Preface现实世界中设备之间通过总线互联/通信,其中sysbus一般负责与cpu直接相连的设备与cpu的通信,外围设备则会通过各种类型的总线(如pci总线)间接地与cpu通信。本文主要讨论QEMU中是如何对总线进行模拟来实现设备间通信。 QEMU中实现了BusState和SysBusDevice等BUS类来表示总线类型的继承关系,将设备强制转换成DeviceState结构后使用Devic...
2021-08-31
Read More
关于qemu使用树状MemoryRegion的分析
树状结构的MemoryRegion这章关注的重点是:设计树状结构MR的目的。包括中间节点,叶子节点是什么,父子关系代表什么,以及为何这么设计。 首先说明结论: 非叶子节点都是container抽象,叶子节点是真正会被映射的MR 这么设计可以加速地址地址空间映射的过程(即在适当的位置插入一段地址空间) 父子关系一方面可以方便管理(如下文ccsr的例子),另一方面将整个大的线性空间分成了数个小...
2021-08-22
Read More
qemu gdbserver internal
Prefacegdb设置断点的原理是使用ptrace系统调用建立gdb与目标程序的调试关系,gdb因此能够控制目标程序并先行对信号进行处理。因此设置断点的原理是:在断点处插入int 3触发软中断,gdb先行受到该软中断发出的SIGTRAP信号,从而转入gdb命令行,被调试程序停止。 利用gdb远程连接到和qemu中的gdbserver可以调试linux内核的执行过程。那qemu内的gdbse...
2021-08-21
Read More
Previous
13 / 28
Next