本文介绍搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链、qemu和xv6,以MacOS下的实践为例,Linux系统同样可以参考。 介绍 只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了《计算机操作系统 ...
安装bochs 因为要运行的是xv ,所以不能直接使用 apt get 直接获取软件。apt get获取到的软件不支持SMP Symmetric Multi Processing 。因此,需要下载源码自己编译 源代码下载地址在下载页面的底部Download SVN Snapshot 需要预先安装的软件 参考 sudo apt get install g sudo apt get install ...
2014-01-01 14:55 0 3082 推荐指数:
本文介绍搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链、qemu和xv6,以MacOS下的实践为例,Linux系统同样可以参考。 介绍 只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了《计算机操作系统 ...
1. 下载xv6 从github上拉取xv6的源码: 2. 下载qemu 在Ubuntu下使用apt-get,其他发行版自行搜索如何下载: 3. 测试编译环境 输入下面的命令 第二行应该输出:elf32-i386 输入下面的命令, 应输出: /usr/lib ...
代码在github上。 这一个实验是要利用缺页异常来实现懒分配(lazy allocation)。用户态程序通过sbrk系统调用来在堆上分配内存,而sbrk则会通过kalloc函数来申请内存页面,之后将页面映射到页表当中。 当申请小的空间时,上述过程是没有问题的。但是如果当进程一次申请很大 ...
在包括XV6的绝大部分操作系统都是多个任务交错执行的。交错的一个原因是多核硬件:多核计算机的多个CPU核心独立执行计算,如XV6的RISC-V处理器。多个CPU核心共享物理内存,XV6利用这种共享来维护所有核心都会读写的数据结构。而这种共享会导致一个CPU在读取某数据结构时,可能有另一个CPU正在 ...
最近更新于2021/08/05. 我们以xv6的一个系统调用getpid()为例,观察xv6的系统调用大致过程。 系统调用的声明位于 user.h 中,xv6的用户程序若要使用系统调用需要包括这个头文件,其中getpid()声明如下: int getpid(void); 此函数定义 ...
实验的代码放在了Github上。 第二个实验是Lab: system calls。 这个实验主要就是自己实现几个简单的系统调用并添加到XV6中。 XV6系统调用 添加系统调用主要有以下几步: 在user/user.h中添加系统调用函数的定义。 在user/usys.pl中添加 ...
页表是操作系统中非常重要的一部分,用于将虚拟地址转化为物理地址。虚拟内存是操作系统实现进程隔离的关键技术。 在 XV6 中通过 RISC-V 的页表机构完成了虚拟地址向物理地址的转换。 分页硬件机构 XV6 运行于 Sv39 RISC-V 上,64 位地址中的低 39 位被使用。RISC-V ...
这一个实验主要是学习XV6的页表(分页机制),关于分页机制的相关内容已经写在XV6学习 (3)里面了。 代码放在Github上。 Print a page table (easy) 这一个就是要实现一个vmprint()函数来遍历页表并打印,可以仿照freewalk()函数来写。 在这里 ...