随笔分类 - xv6
摘要:bootloader 1. bootasm.S : start32 2. bootmain.c : bootmain kernel 3. main.c : main 4. proc.c : userinit 创建第一个用户进程 initcode 5. main.c : mpmain 调用schedu
阅读全文
摘要:在xv6 中锁对象是 spinlock,spinlock中的locked为1的时候表示被占用,为0的时候锁空闲。 使用 acquire获取锁 该函数中通过xchg原子性交换locked和1,并返回locked的原来的值。当返回值为1时,说明其他线程占用了该锁,继续循环等待;当返回值为0时,说明其他地
阅读全文
摘要:1. 系统调用的实现 开发程序需所有的接口在user.h中,包含两部分system call和ulib user.h中的系统接口函数在usys.S中通过汇编实现 把系统调用ID放入eax中,使用int T_SYSCALL中断 2. int 指令 int n 指令是调用n号中断的中断过程。最终效果和函
阅读全文
摘要:1. xv6.img的构建 在makefile中 使用bootasm.S和bootmain.c构建bootblock.o,使用工具objcopy把bootblock.o的.text段(该段包含程序的可执行指令)拷贝出来生成bootblock 使用perl脚本sign.pl把bootblock设置成5
阅读全文
摘要:我们使用Qemu在Ubuntu下运行 1. 安装Qemu 执行 qemu-system-i386 ,如果弹出Qemu界面说明安装成功了 2. 编译xv6 下载代码(一定要使用git下载,不要自己手动去下载,否则可能下载的版本不对,编译不过) 编译 3. 运行 make qemu
阅读全文

浙公网安备 33010602011771号