文件系统 文件系统的目的是组织和存储数据,典型的文件系统支持用户和程序间的数据共享,并提供数据持久化的支持(即重启之后数据仍然可用)。 xv6 的文件系统中使用了类似 Unix 的文件,文件描述符,目录和路经名(请参阅第零章),并且把数据存储到一块 IDE 磁盘上(请参阅第三章)。这个文件系统解决了 ...
分类:
其他好文 时间:
2018-11-10 23:50:47
阅读次数:
240
陷入,中断和驱动程序 运行进程时,cpu 一直处于一个大循环中:取指,更新 PC,执行,取指……。但有些情况下用户程序需要进入内核,而不是执行下一条用户指令。这些情况包括设备信号的发出、用户程序的非法操作(例如引用一个找不到页表项的虚拟地址)。处理这些情况面临三大挑战:1)内核必须使处理器能够从用户 ...
分类:
其他好文 时间:
2018-11-10 23:50:35
阅读次数:
208
bootloader 1. bootasm.S : start32 2. bootmain.c : bootmain kernel 3. main.c : main 4. proc.c : userinit 创建第一个用户进程 initcode 5. main.c : mpmain 调用schedu ...
分类:
其他好文 时间:
2018-07-26 18:51:27
阅读次数:
180
我们使用Qemu在Ubuntu下运行 1. 安装Qemu 执行 qemu-system-i386 ,如果弹出Qemu界面说明安装成功了 2. 编译xv6 下载代码(一定要使用git下载,不要自己手动去下载,否则可能下载的版本不对,编译不过) 编译 3. 运行 make qemu ...
分类:
其他好文 时间:
2018-07-19 18:12:35
阅读次数:
142
https://blog.csdn.net/Swartz2015/article/details/61615603 xv6进程切换-swtch函数 进程切换中由于需要保存当前进程的寄存器状态信息,又要将新进程记录的寄存器状态信息加载到寄存器,因此涉及到许多栈的操作,堆栈间的来回切换,容易让人眼花缭乱 ...
分类:
系统相关 时间:
2018-07-11 14:46:08
阅读次数:
256
xv6可以运行多cpu的计算机上,这个os使用mycpu函数来标识初当前的cpu,使用struct cpu结构体来记录当前的CPU状态。使用cpus这些状态存放于cpus数组中,使用ncpu来标志cpu的个数。 以下函数主要功能是获取 运行当前代码的cpu对应的ID,然后通过这个ID在cpus数组中 ...
分类:
其他好文 时间:
2018-06-09 13:17:59
阅读次数:
156
1.进程 1.1 进程的概念 1) 狭义定义:进程是正在运行的程序的实例。 2) 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 1.2 进程的组成 1.3 进程控制块 引用来 ...
分类:
系统相关 时间:
2018-05-01 23:43:10
阅读次数:
440
基于Xv6-OS 分析CR0 寄存器 之前一直认为晕乎乎的...啥?什么时候切换real model,怎么切换,为什么要切换? 以下这段代码来自Xv6的boot/boot.S 这就是CPU real model 和 protected model的“分水岭” 根源在于控制这两种执行模式的寄存器——C ...
分类:
其他好文 时间:
2017-05-23 19:45:11
阅读次数:
215
1 在proc.c的scheduler函数中,有两行: if(setjmp(&cpus[cpu()].jmpbuf) == 0) longjmp(&p->jmpbuf); 把它修改为: cprintf("setjmp called in scheduler\n"); if(setjmp(&cpus[ ...
分类:
编程语言 时间:
2017-05-17 10:24:49
阅读次数:
716
知乎原帖 https://www.zhihu.com/question/25628124 Xv6, a simple Unix-like teaching operating system https://pdos.csail.mit.edu/6.828/2011/xv6.html https:// ...
分类:
其他好文 时间:
2017-03-31 15:35:45
阅读次数:
182