
自己写OS
文章平均质量分 79
ROger__Wong
这个作者很懒,什么都没留下…
展开
-
JOS学习笔记(三)
过了个年,好久没碰专业内的东西了,之前做的JOS相关的东西都快忘了,还是看了前面两篇日志才想起来。当进入内核后基本都是比较简单的代码了,我也并没有全部分析,根据讲义要求只分析了一下printf函数和堆栈的backtrace,所以这篇日志也就写这两个方面吧。1、printf函数。进入kernel后从i386_init函数开始,首先做一些初始化工作,包括部分内存的清零,初始化显示器串口等(原创 2013-02-21 21:32:25 · 4813 阅读 · 0 评论 -
JOS学习笔记(十一)
JOS LAB4 PART A的剩余部分原创 2013-07-30 21:45:26 · 5213 阅读 · 1 评论 -
JOS学习笔记(十)
JOS LAB4 PART A 第一部分原创 2013-07-17 00:21:01 · 6476 阅读 · 0 评论 -
JOS学习笔记(九)
LAB3代码已经上传。最近忙于打WOWTCG,早就做完了一直没腾出时间写博客。LAB3第二部分主要是处理系统调用。第一部分我们已经让第一个env运行了起来,接着这个env执行一个cprintf,这个cprintf是一个系统调用,因为os暂时没有实现系统调用,所以系统崩溃。在lab2我们就要完成各种系统调用以及exception和trap等的实现。handout地址:http:/原创 2013-04-10 23:37:56 · 6594 阅读 · 3 评论 -
JOS学习笔记(七)
接前一篇。上篇日志主要是完成了一些分页相关机制的工作,但还没有真正的去使用这个分页系统。Lab2的part3部分主要就是让我们使用part2中完成的映射机制来初始化内核的页目录和页表,并将此页目录加载到cr3里,让os真正去使用我们初始化之后的页目录以取代kernpgdir.c里面简单的页目录。在开始之前让我们看一下JOS的虚拟内存分布图,在part3里的所有工作就是照着此图实现其中的部分原创 2013-03-25 15:31:14 · 4271 阅读 · 1 评论 -
JOS学习笔记(六)
接下来做part2,先上一张开启分页后的地址变换图:(完整的图在http://pdos.csail.mit.edu/6.828/2011/lec/x86_translation_and_registers.pdf)然后再放一张具体的地址变换的图:好当我们把这两张图也牢记于心的时候就可以开始实验的part2了。1、实验要求完成以下几个函数:pgdir_原创 2013-03-19 17:30:10 · 6523 阅读 · 3 评论 -
JOS学习笔记(五)
神说、内存之间要有映射、将地址空间分为虚实。 神就造出两级页表、将变换前的地址、变换后的地址分开了.事就这样成了。 有晚上、有早晨、是第二日。来到了lab2,内存管理,该实验分为两部分,第一部分为物理内存管理,第二部分为虚拟内存管理,本篇先描述lab1。做本章实验一定头脑中要时刻清晰的记住两个内存分布图:物理内存分布图以及虚拟内存分布图。物理内存的分布在前面的笔记中有介原创 2013-03-10 17:32:07 · 8224 阅读 · 0 评论 -
JOS学习笔记(八)
神说、内核要有自己的数据、使用户不可访问.事就这样成了。 神称高地址为内核空间、称低地址为用户空间. 神看着是好的。 神说、用户要有自己的进程、和自己的页表、并可以进行系统调用.事就这样成了。 有晚上、有早晨、是第三日。 1、lab3概述lab3大体分为两部分,第一部分包括执行环境(可以简单的理解为进程,下文也用进程代替执行环境)的建立和运行第一个进程,第二个部分初始原创 2013-03-28 23:49:30 · 8028 阅读 · 0 评论 -
JOS学习笔记(一)
起初 神创造天地。 地是空虚混沌.渊面黑暗. BIOS运行在水面上。 神说、要有mbr、就加载了mbr。 神看mbr是好的、就用mbr加载了kernel。 神称mbr为引导程序、称kernel为内核.有晚上、有早晨、这是头一日。用课余时间重新拾起JOS,作为一个码农通过了解不同技术层面的机制对自己的技术水平提高非常大,而JOS作为一个MIT的开放课程,可让我们从原创 2012-12-22 21:04:59 · 14450 阅读 · 6 评论 -
JOS学习笔记(四)
Lab1还差最后一部分,就是给出具体的调试信息,如下面所示:K> backtraceStack backtrace: ebp f010ff78 eip f01008ae args 00000001 f010ff8c 00000000 f0110580 00000000 kern/monitor.c:143: monitor+106 ebp f010ffd原创 2013-02-28 22:19:43 · 4079 阅读 · 0 评论 -
JOS学习笔记(二)
接上篇,文件跳转到了entry.S里面,这是kernel的入口。首先面临这么一个问题,kernel被加载到了什么地方?回想上篇elf文件的加载机制,以及objdump里打印出的kernel信息,可以看到,kernel的代码段(text段)被加载到了0x100000的位置,也就是1m的位置,所以内存布局如下:+------------------+ <- 0xFFFFFFFF (4GB)原创 2012-12-26 20:44:41 · 3412 阅读 · 0 评论 -
JOS学习笔记(十二)
JOS LAB4 PARTB copy on write fork原创 2013-08-15 20:29:27 · 5873 阅读 · 3 评论