UCore-Lab0】的更多相关文章

ucore Lab0 一些杂记 前一阵子开始做 MIT 6.828,做了两三个实验才发现清华的 ucore 貌似更友好一些,再加上前几个实验也与6.828 有所重叠,于是决定迁移阵地. 文章计划分两类,一类是代码的分析,另一类是实验的解答和比较. 1. 计算机执行第一条指令之前,分段状态是怎样的? 执行make debug, 然后考察 QEMU monitor 中 GDT 的值: GDT= 00000000 0000ffff 参考 GDTR 寄存器: 参考手册 2.4.1 节描述: On pow…
[ 声明:版权全部,欢迎转载.请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 之前用过一段时间skyeye,也对开发skyeye的陈渝有一些了解.近期在github上闲逛的时候,偶然发现了一个ucore的好项目.一看作者,也是陈渝.他如今是清华大学操作系统课程的主讲老师. 为了让人们对os有更好的了解,所以开发了这么一个开源项目. 1) 项目地址 https://github.com/chyyuu/ucore_lab 2) 关于ucore的设计原理和实现 http:/…
ucore是清华大学提供的一个学习操作系统的平台.ucore有完整的mooc视频与说明文档. https://objectkuan.gitbooks.io/ucore-docs/content/# 本文将主要记录在完成ucore平台的实验时,个人认为ucore内核及Result中的存在的问题,以及部分挑战练习内容.由于个人水平有限,可能理解有误,欢迎前来讨论. 本文主要内容: Lab2 物理内存管理 练习一 Result代码错误 Lab3 虚拟内存管理 挑战练习 Clock算法实现 Lab8 文…
---恢复内容开始--- 开机流程回忆 以Intel 80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0(由初始化的CS:EIP确定,此时CS和IP的值分别是0xF000和0xFFF0))开始执行.在0xFFFFFFF0这里只是存放了一条跳转指令,通过跳转指令跳到BIOS例行程序起始点.BIOS做完计算机硬件自检和初始化后,会选择一个启动设备(例如软盘.硬盘.光盘等),并且读取该设备的第一扇区(即主引导扇区或启动扇区)到内存一个特定的地址0x7c00处,然后CPU控制权会转移到那…
本练习是qemu结合gdb调试,但是我做实验的时候并不能像视频输入make lab1-mon那样顺利调试,期间有各种error,后来我找到原因,请看解决方法. 请先把ucore_lab文件删除,以下全程使用普通管理员身份操作 切换普通管理员,cd回到Home目录,在git上下载ucore_lab到用户文件夹($ git clone https://github.com/chyyuu/ucore_lab.git),然后切换到lab1_result文件夹 make ,最后make lab1-mon就…
最近一直在mooc上学习清华大学的操作系统课程,也算是复习下基本概念和原理,为接下来的找工作做准备. 每次深入底层源码都让我深感操作系统实现的琐碎,即使像ucore这样简单的kernel也让我烦躁不已,文件系统相比于中断子系统.调度子系统.进程管理子系统等等,要复杂很多,因此被称为文件系统而不是文件子系统.参看网络上的资料有时会增加我的困惑,很多人只是简单转载,很多细节描述的很模糊,实验环境也各不相同,最终很难深入理解文件系统的本质,参考源码我觉得有点像从三维世界进入到二维世界,一切变得清晰但是…
Lab1 : bootloader 启动 ucore os 一.内容提要 x86启动顺序 C函数调用 gcc内联汇编(inline assembly) x86-32下的中断处理 小结 二.x86启动顺序 寄存器初始值 第一条指令(CS=F000H, EIP=0000FFF0H) 实际地址是: Base + EIP 当CS被新值加载,则地址转换规则则将开始起作用 通常第一条指令是一条长跳转指令(这样CS和EIP都会跳转到BIOS代码中执行) 处于实模式的段 段选择子(segment selecto…
ucore是清华大学操作系统课程的实验内核,也是一个开源项目,是不可多得的非常好的操作系统学习资源 https://github.com/chyyuu/ucore_lab.git, 各位同学可以使用git下载源码和文档. 本文我会对项目中的code/lab1/boot/bootasm.S文件进行完全注释. # Start the -bit protected mode, jump into C. # The BIOS loads this code from the first sector o…
Intel 80386 ucore目前支持的硬件环境是基于Intel 80386以上的计算机系统. Intel 80386是80x86系列中的第一种32位微处理器.80386的内部和外部数据总线都是32位,地址总线也是32位,可寻址高达4GB内存. 工作方式包括实模式.保护模式以及虚拟86模式. Bootloader 我们知道计算机启动是从BIOS开始,再由BIOS决定从哪个设备启动以及启动顺序,比如先从DVD启动再从硬盘启动等.计算机启动后,BIOS根据配置找到启动设备,并读取这个设备的第0个…
资源 ucore在线实验指导书 我的ucore实验代码 题目:实现函数调用堆栈跟踪函数 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址.如果能够正确实现此函数,可在lab1中执行 "make qemu"后,在qemu模拟器中得到类似如下的输出: ebp:0x00007b28 eip:0x00100992 args:0x00010094 0x00010094 0x0000…