Lab: Traps (mit.edu) RISC-V assembly 1. Which registers contain arguments to functions? For example, which register holds 13 in main’s call to printf? 在main函数中,对printf的调用如下: printf("%d %d\...
trap包括三种情况: 系统调用,用户程序执行ecall指令切换到内核态执行对应的系统调用处理程序 异常,用户或内核执行某些非法指令,例如除零或访问无效的虚拟地址 设备中断 与trap有关的控制寄存器 stvec: 保存trap处理程序的地址 sepc: trap发生时,pc将会切换到trap处理程序的首地址,...
前置知识 本文使用的LLVM 版本为10.0,使用LegacyPassManager管理Pass。 由于LLVM Pass被编译为运行时动态加载的链接库,因此与普通的可执行文件不同,无法使用gdb在加载文件之后设置断点。 LLVM Pass编译的.so文件通过opt动态加载执行,opt是模块化的LLVM优化器和分析器,使用LLVM源文件作为输入,在源文件上运行指定的优化或分析程序,...
Lab: page tables (mit.edu) Print a page table 实现vmprint函数,接收一个pagetable_t类型的参数,然后按照规定格式输出pte和pa,功能是输出给定进程的页表,例如: page table 0x0000000087f6e000 ..0: pte 0x0000000021fda801 pa 0x0000000087f6...
Lab: System calls (mit.edu) System call tracing 实现系统调用trace,输入参数为一个int类型的mask,其中mask的某一位为1代表与该位对应的系统调用应该被trace。例如trace(1« SYS_fork)表示trace fork这一系统调用。被trace的系统调用输出:pid: syscall syscall_name...
1. 通过Linux内核与模块之间的接口 定义静态全局变量,通过Linux内核与模块之间的接口,将全局变量的地址传递给kernel 以ixgbe驱动为例:模块中定义了static全局变量 ixgbe_driver: static struct pci_driver ixgbe_driver = { .name = ixgbe_driver_name, .id_table...
CS 144: Introduction to Computer Networking Lab 0 Writing webget 要求使用TCPSocket和Address类实现get_URL函数。get_URL的功能是向指定的host和path发送GET请求,以抓取页面。可以参考Sponge: TCPSocket Class Reference (cs144.github...
6.824 Lab 2: Raft (mit.edu)记录 Lab 2A leader election Lab 2A要完成的是初始的leader选举过程,而没有日志的参与。主要需要完成三个部分:定时器,RequestVote和heartBeat. 定时器 定时器的逻辑很简单,无非是在随机等待时间超时后将状态切换为Candidate,然后开启一个协程开始选举过程,并继续等待下...
Introduction 共识算法允许一组机器在存在其中某些机器发生错误的情况下连续地工作,因此在构建可靠的大规模软件系统中起到了重要作用。大部分共识基于Paxos实现,但是Paxos难以理解,并且其结构需要进行复杂的修改来支持实际的系统。因此作者提出了一个新的可以更加方便用于系统构建和教学的共识算法,该算法的核心目的是可理解性:我们是否可以定义一个用于真实系统的共识算法并且其远远比P...
Web安全原理期末CTF What’s your want? 查看题目源代码,没有发现提示。向输入框中输入flag,得到如下结果 猜测左上角字符串为base64编码,解码得到flag{WelC0me_to_ctf2} php is the best 查看index page源代码,得到提示: 查看another page源代码,得到提示: 可以看到flag在in...