Xv6操作系统
源于Mit 6.828,仿照Xv6操作系统制作JOS试验系统。
mick_seu
这个作者很懒,什么都没留下…
展开
-
【xv6学习之Lec8】System calls, Interrupts, and Exceptions
* why do we need to take special care for user to kernel? security/isolation only kernel can touch devices, MMU, FS, other process' state, &c think of user program as a potential malicious原创 2016-02-25 21:03:03 · 1541 阅读 · 0 评论 -
【xv6学习之lab3】User Environment
今天是2016年1月20日,距离回家过年不到10天了,我要尽快把这个lab做完,任务很艰巨!Part A: User Environments and Exception Handling首先是如下三个变量:kern/env.c然后我们需要对 struct Env 有个较细致的理解:inc/env.hAlloc原创 2016-02-24 14:40:15 · 4180 阅读 · 0 评论 -
【xv6学习之番外篇】Exceptions and Interrupts
本文主要源自 Chapter 9 Exceptions and Interrupts(80386 Programmer's Manual)Interrupts and exceptions are special kinds of control transfer; they work somewhat like unprogrammedCALLs. The differe原创 2016-01-26 15:50:23 · 1883 阅读 · 0 评论 -
【xv6学习之番外篇】详解struct Env 与 struct Trapframe
鉴于我们有必要对struct Env和struct Trapframe 这两个用户环境的关键结构体有个细致的了解,这篇博文应运而生。主要借鉴张弛的report。(内联汇编参见 http://grid.hust.edu.cn/zyshao/OSEngineering.htm 第二章)首先是 Env 结构体:inc/env.h这其中的 env_tf 存储了各寄存器内容原创 2016-01-23 11:19:43 · 4493 阅读 · 0 评论 -
【xv6学习之HW3】xv6 lazy page allocation
xv6使用lazy page allocation。当进程需要更多的内存的时候,调用malloc申请更多的堆内存,而系统调用sbrk()完成该工作。但是有的进程会一次申请大量的内存,但是又可能根本用不到,比如说sparse array。所以说复杂的内核涉及会将实际的allocation的工作推迟到实际用的时候,发生了page fault了,然后再进行实际的分配Part On原创 2016-01-19 09:11:34 · 3940 阅读 · 4 评论 -
【xv6学习之番外篇】jos内存布局详解
xv6的内存格式我们可以通过打开 inc/memlayout.h 查看。具体如下:这个页面布局代表的是启用地址转换以后,无论是操作系统还是用户程序,看到的虚拟内存布局(这也就是说,操作系统和用户程序 使用的是同一套页目录和页表,这个在绍老师的讲义里有提到)。关于每部分的详解,我们可以参见:这里列出几个需要注意的地方:1、[UPAGES, UVPT原创 2016-01-05 21:51:58 · 2715 阅读 · 2 评论 -
【xv6学习之番外篇】保护
本文源自:https://pdos.csail.mit.edu/6.828/2014/readings/i386/s06_01.htm (Intel 80386 Reference Programmer's Manual)1 Why Protection?The purpose of the protection features of the 80386 is to he原创 2015-12-27 21:01:57 · 1405 阅读 · 0 评论 -
【xv6学习之番外篇】内存管理
本文源自:https://pdos.csail.mit.edu/6.828/2014/readings/i386/c05.htm#fig5-1 (Intel 80386 Reference Programmer's Manual)首先是逻辑地址,线性地址,物理地址间的区别与联系,可以见下图(图中虚拟地址即指逻辑地址):注意上图中的分页机制有问题,需将 P原创 2015-12-26 22:12:42 · 2249 阅读 · 0 评论 -
【xv6学习之Lab 2】Memory Management
Part 1: Physical Page Management内存分布如下:注意到kernel结束之后就是free memory了,而在free memory的最开始存放的是pgdir,这块内存同样由boot_alloc申请实验开始之前,我们先搞懂几个常识:1、首先是 i386 的页面大小问题。虽然在很多操作系统书讲到页式地址管原创 2015-12-23 15:45:29 · 5605 阅读 · 8 评论 -
【xv6学习之Lec2】 PC hardware and x86 programming slides
这一节我们主要了解 PC 的硬件与 x86 编程。PC architecture首先是计算机架构,如下图:关于EIP:内存操作:基本栈操作:8086:x86: I/O:原创 2015-11-27 14:22:11 · 1364 阅读 · 0 评论 -
【xv6学习之lab1】Booting a PC
进入lab1,使用git下载lab文件。然后略过Introduction,从Part 1开始看。Part 1按照介绍一步一步来,make qemu后会出现 QEMU window。(记得先安装qemu)。若此处使用make qemu-nox,则不会跳出QEMU 窗口,只在你的终端里显示。原创 2015-11-07 15:02:12 · 5519 阅读 · 0 评论 -
【xv6学习之HW1】shell
第一次的作业就把我难倒了。在此十分感谢JasonLeaster,没有这一系列的博文,我可能就要放弃了。希望能坚持下去,虽然比较难,但是我肯定能学到很多东西。传送在此:http://blog.csdn.net/cinmyheart/article/details/45122619不会的东西比较多,记录的东西也就比较多,比较杂。记下来先,慢慢熟悉。看了JasonLeaster写的代原创 2015-10-23 20:44:53 · 7177 阅读 · 3 评论 -
【xv6学习之第0章】操作系统接口
1、fork()函数一个进程调用 fork() 函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。fork() 函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事(即复制了 fork()函数后的代码),但如果初始参数或者传入的变量不同,两个进程也原创 2015-10-20 10:43:41 · 2617 阅读 · 0 评论 -
xv6试验环境bochs及qemu搭建
最近打算学习操作系统,无意中看到xv6,learn by doing。首先下载源码,开始使用官网提供的方法git,无奈失败,好在在github上搜到一份可以用的,都不知道是第几版的。见panks 。解压后cd Xv6/make源代码编译成功。接下来就是运行环境的搭建。方案一:qemu# 安装虚拟环境sudo apt-get install qemu-system-i386原创 2015-10-18 08:49:25 · 3670 阅读 · 0 评论