Home
Xiaoye Zheng's blog
Cancel

MIT6.824 Lab2A Raft Leader Election

阅读本篇blog前需要理解raft leader election的基本概念,阅读Raft论文Section1、2、5,弄明白Figure2,以及尝试实现Lab2A Lab Description: https://pdos.csail.mit.edu/6.824/labs/lab-raft.html Raft Lecture: https://youtu.be/R2-9b...

Linux中的top command

最近在跑一些可以并行的代码,开几个进程,消耗多少CPU占用率,这些决定变得很重要。而top指令就是用来查看CPU占用率的。于是,想记录一下怎么看top的输出,以及top中常用的subcommand。 Top输出分析 在终端输入top就会输出如下内容,由顶部的五行和一个process table组成: 我们一行行来看: 其中,Nice Value和priority的区别如下: ...

ARM交叉编译工具链与编译选项

Toolchain是什么 Toolchain是一组将源代码转换为可执行程序的工具的集合。主要包括: Binutils(Binary Utilities): 一组用于创建和管理二进制程序、目标文件、库、性能分析数据以及汇编源代码的编程工具集。主要包括: assembler汇编器as:把汇编语言转化为机器码 linker链接器ld: 将多个...

MIT6.824 Lab1 Map Reduce

阅读本篇blog前需要理解map reduce的基本概念,以及尝试实现Lab1 Lab Description: https://pdos.csail.mit.edu/6.824/labs/lab-mr.html Map reduce Lecture: https://youtu.be/WtZ7pcRSkOA Map reduce Lecture Notes: htt...

使用gcov/lcov测试用例的代码覆盖率

gcov(GNU Coverage)是GCC的一部分,用于代码覆盖率分析。它用于确定源代码中的哪些部分已经执行,并生成相应的覆盖率报告。 基本流程 编译时插桩:在使用 gcov 时,需要在编译代码时启用覆盖率分析选项。通过在编译命令中包含 -fprofile-arcs 和 -ftest-coverage 选项,编译器会在生成的可执行文件中插入代码,以便在执行时记录代码的执行路径。 ...

rust编译器初探:Rust编译器是如何工作的

阅读本篇博客需要了解编译原理相关知识,比如词法分析、语法分析、语义分析、代码生成等。 阅读本篇博客需要有一定的Rust语言基础,比如知道lifetime, ownership, borrow等概念。 这篇博客主要学习记录Rust程序编译的整个流程。一般的编译过程分为词法分析、语法分析、语义分析、代码生成这些步骤,Rust的编译器也逃脱不了这个框架。Rust编译器特殊的地方在于...

Linux KVM x86内存虚拟化EPT源代码分析

阅读本篇博客前请先阅读 x86内存虚拟化–影子页表(Shadow Page Table)和拓展页表(EPT) Linux KVM x86 CPU虚拟化原理及源代码分析 重要数据结构 /* for KVM_SET_USER_MEMORY_REGION */ struct kvm_userspace_memory_region { __u32 slot...

Linux KVM x86 CPU虚拟化原理及源代码分析

硬件辅助的CPU虚拟化 虚拟化技术允许在一个物理计算机上创建多个虚拟环境,每个虚拟环境都可以独立运行操作系统和应用程序,就像它们在独立的物理计算机上运行一样。硬件辅助的虚拟化技术,顾名思义,就是在CPU、芯片组及I/O等硬件中加入专门针对虚拟化的 支持,使得系统软件更容易、高效地实现虚拟化功能。本篇blog主要介绍x86 VT-x技术对CPU虚拟化的支持。 VT-x中的CPU虚拟化主要可...

让Google搜索到你的Github网页(使用Jekyll搭建)

1. 检查网页能否被Google搜索到 在谷歌搜索栏中输入site:https://xxxx.github.io,查看网页是否已经被Google收录。 在这里,我在搜索栏中输入site:https://zxxyy.github.io/,显示的结果是尝试使用Google Search Console,则意味着没有被收录。 2. Google网站所有权认证 点击网页Google S...