0%

编写长期可靠和可维护的软件,有很多障碍。其中之一就是软件的复杂性。在最近结束的2021年KVM论坛上,Paolo Bonzini以开源虚拟化QEMU仿真软件为例,探讨了这个话题。根据他作为几个QEMU子系统的维护者的经验,他就如何抵御不受欢迎的复杂性提出了一些具体建议。Bonzini在整个演讲中使用QEMU作为例子,希望让未来的贡献者更容易修改QEMU。然而,他所分享的经验也同样适用于其他许多项目。

阅读全文 »

下面列出最常见的 14 种算法模式,它们可被用于解决常见的问题。另外还会说明如何识别每种模式,并会为每种模式提供一些问题示例。
1.滑动窗口
2.二指针或迭代器
3.快速和慢速指针
4.合并区间
5.循环排序
6.原地反转链表
7.树的宽度优先搜索(Tree BFS)
8.树的深度优先搜索(Tree DFS)
9.Two Heaps
10.子集
11.经过修改的二叉搜索
12.前 K 个元素
13.K 路合并
14.拓扑排序

阅读全文 »

1. QEMU与KVM 架构

在这里插入图片描述

qemu 和 kvm 架构整体上分为 3 部分,对应着上图的三个部分 (左上、右上和下),3 部分分别是 VMX root 的应用层,VMX no-root 和 VMX root 的内核层(分别对应着左上、右上和下)

VMX root: 宿主机根模式,CPU 在运行包括 QEMU 在内的普通进程和宿主机的操作系统内核时,CPU 处在该模式。

VMX no-root: 宿主机非根模式,CPU 在运行虚拟机中的用户程序和操作系统代码的时候处于 VMX no-root 模式

注:VMX root 和 VMX no-root 都包含 ring0 到 ring3 四个特权级别

阅读全文 »

1、参考资料

2、概要

操作系统作为软件应用层和底层硬件之间的部分,向下提供服务,向上提供接口。系统调用便是操作系统向上层应用提供的操作底层硬件的和核心服务的接口,也就是API(Application Programming Interface)。我们知道一般API实现的方法是提供函数接口,只需要调用函数就可以实现相应的功能,底层的原理是程序地址的跳转。因为操作系统和用户程序同时存在于内存中,我们当然是不希望操作系统的数据被随意的篡改和访问,有可能造成十分严重的后果,所以操作系统对内存做了区分:

  • 内核态(0)
  • 服务态(1,2)
  • 用户态(3)
阅读全文 »

1. 第一期:精装房如何验收及施工方的选择

精装房的验收,两个小的细节:

  1. 要一份水电施工图纸
  2. 顺便把冰箱、洗衣机尺寸量了

隐蔽工程:

  1. 防水测试
  2. 地砖和墙砖的帖铺,拿硬币敲
  3. 甲醛测试
    精装房格局尽量不动,尽量在软装上找补
阅读全文 »

1. 背景

这篇文章的主要目的是记录一些可以在Makefile中使用的技巧,以便可以为Makefile本身中的每个目标添加文档,并且可以将其作为make目标查看(例如make help)。

在项目中拥有可靠的文档是一件很了不起的事情,而且如果它们不会过时,那就更好了。通常在顶级Readme.md或类似文件中记录每个Make目标。尽管这是迈出的重要第一步,但更新Makefile而不是更新文档是很常见的,因此使它们变得毫无用处。

阅读全文 »

Graph::Easy 是一个处理图形DSL的Perl模块,它有如下功能:

  • 提供了一种易懂,可读性很强的图形描述语言
  • 一种支持 ASCII Art 的基于网格的布局器
  • 可以导出为 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。
  • 可以从 Graphviz, VCG 和 GDL 导入图像。
阅读全文 »

C++和JAVA中有构造/析构函数,C语言中也有实现的方法,在gcc下可以使用关键字 __attribute__指定构造函数或者析构函数。他们由编译器在编译阶段进行处理。

  • 声明构造函数:
    void __attribute__((constructor)) function(void)
  • 声明析构函数:
    void __attribute__((destructor)) function(void)
阅读全文 »

实验环境

  • VMware Workstation
  • OS: Centos8.0 虚拟机
  • Kernel: 4.18.0
  • Arch: x86_64

StratoVirt简介

StratoVirt 是计算产业中面向云数据中心的企业级虚拟化平台,实现了一套架构统一支持虚拟机、容器、Serverless 三种场景。StratoVirt 在轻量低噪、软硬协同、Rust 语言级安全等方面具备关键技术竞争优势。

阅读全文 »