LAB2】的更多相关文章

MIT6.828 LAB2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ LAB2里面主要讲的是系统的分页过程,还有就是简单的虚拟地址到物理地址的过程.关于系统分页,在MIT6.828 虚拟地址转化为物理地址——二级分页:http://blog.csdn.net/fang92/article/details/47320747中有讲. 下面主要是lab2的几个exercise的解题过程. 1.第一个boot_alloc()函数: static vo…
MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS lab1的一个小问.当时是问的bootloader怎么就能准确的吧kernle 镜像读入到相应的地址呢? 这里就是main.c在作用. 这里往ELFHDR即0x10000处读入了8个SECTSIZE(这里读入的是一个PAGESIZE 4KB), 从凝视//is this a valid ELF? 開始,bootmain以…
在做lab2的时候,偶然的情况下,发现了IDA pro这样一个反汇编工具,总的来说对于lab2这样的小实验读懂代码的大体功能是有作用的,但对于想要具体明白某一条指令的执行过程,又显得不足,到最后还是需要逐条分析,可能自己还是功力不够,IDA pro的一些功能不会使用.....同时过度依赖IDA Pro是不利于学习反汇编,毕竟本来应该由自己分析的地方由IDA pro执行了,要明确IDA Pro只是一个工具! 百度百科对IDA pro 的介绍   https://baike.baidu.com/it…
概述 经过几天鏖战终于完成了lab2,本lab实现一个支持并发操作的B+树.简直B格满满. B+树 为什么需要B+树 B+树本质上是一个索引数据结构.比如我们要用某个给定的ID去检索某个student记录,如果没有索引的话,我们可能从第一条记录开始遍历每一个student记录,直到找到某个ID和我们给定的ID一致的记录.可想而知,这是非常耗时的. 如果我们已经维护了一个以ID为KEY的索引结构,我们可以向索引查询这个ID对应的记录所在的位置,然后直接从这个位置读取这个记录.从索引查询某个ID对应…
JOS 不能进入lab2 问题的解决 这个鸟问题折腾了我好久! lab2是须要 kern/pmap.c的! 可是这里没有 首先要git checkout -b lab2 origin/lab2 (仅仅要做好上面这一步,就行确保可以调整好文件了,坑啊!到如今都6个小时不止了! ) 接着git fetch 然后git merge lab1 (其它的以此类推) 能够看出今天 十月十四号,MIT才release 4个实验.不是一次性全然放出的.有心人好好珍惜.之前的版本号感觉都找不到资源了 以后又实验更…
资源 ucore在线实验指导书 我的ucore实验代码 练习1:实现 first-fit 连续物理内存分配算法 题目 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合并操作.提示: 在建立空闲页块链表时,需要按照空闲页块起始地址来排序,形成一个有序的链表.可能会修改default_pmm.c中的default_init,default_init_memmap,default_alloc_pages,default_free_pages等相关函数.请仔细查看和理解…
ucore Lab2 lab 2 直接执行make qemu-nox会显示 assert 失败: kernel panic at kern/mm/default_pmm.c:277: assertion failed: (p0 = alloc_page()) == p2 - 1 1 连续物理内存管理 1.1 page 概览 对物理内存的管理,为了节省空间,也是为了配合接下来的虚拟内存管理,通常以某个比 byte 大一些的单位进行管理,我们称这一单位内存为一"页(page)",通常是 4…
lab2 中的变动 bootloader 的入口发生了改变 bootloader不像lab1那样,直接调用kern_init函数,而是先调用位于lab2/kern/init/entry.S中的kern_entry函数.kern_entry函数的主要任务是为执行kern_init建立一个良好的C语言运行环境(设置堆栈),而且临时建立了一个段映射关系,为之后建立分页机制的过程做一个准备(细节在3.5小节有进一步阐述).完成这些工作后,才调用kern_init函数. 通过 BIOS 中断获取内存布局有…
CPU在如下时刻会检查特权级 访问数据段 访问页 进入中断服务例程(ISR) RPL位于段寄存器 DS ES FS GS CPL位于CS SS DPL位于段描述符表/门描述符 访问门时: CPL<=DPL(门) & CPL>=DPL(段) //完成了低特权级调用高特权级 访问段时: MAX(CPL, RPL)<=DPL(段) 练习0:填写已有实验 使用meld工具可以查看lab2相对lab1新增的代码,同时将lab1已经填写的代码填充到lab2,如图(只改变格式的已忽略): 可以…
一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统的情况下,不同的程序通常直接编写物理地址相关的指令.在多道并发程序的运行环境下,这会造成不同程序间由于物理地址的访问冲突,造成数据的相互覆盖,进而出错.崩溃. 现代的操作系统在管理内存时,希望达到两个基本目标:地址保护和地址独立. 地址保护指的是一个程序不能随意的访问另一个程序的空间,而地址独立指的…