- 1、本文档共192页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟器运行效果 在FPGA上实现MIPS处理器(ISA子集),包括CPU(datapath,control path)、CP0、MMU(支撑虚拟内存管理,包括指令TLB及数据TLB)、Cache(包括指令缓存及数据缓存)及中断控制器(包括中断及异常)。 总线采用开源的wishbone。 外设资源丰富,包括UART、PS2键盘、VGA显示器、板载外设(LED灯、拨位开关、按钮、七段数码管) 存储资源有RAM(运行内存)、ROM(可执行程序)及SD卡(文件系统存储) * 实现基本指令,属于MIPS ISA的子集,足够支撑小内核的实现 * 浙江大学与Digilent合作设计开发的Sword实验板:计算机课程贯通教学实验系统 * SWORD实验开发板,初始界面 * 因为使用的MIPS交叉编译器版本比较老,为了减小调试,按照MIPS交叉编译器手册推荐的环境搭建。这里选择Red Hat 5.8 32bit,64位系统可能不成功。 * 进程的task_struct内嵌在对应的内核堆栈的最顶端(堆栈指针从高往低移,所以这里的最顶端是内核堆栈的最低地址) 根据这个信息,内核执行时可根据当前的内核堆栈获得当前的进程(current) * round_roubin示意图 * bootmem示意图,1个bit位对应一个页 * 分配单元基于整页 * 快速分配小块内存 * EHBR的低2位永远是0,即字对齐 * 页目录(第一级页表)有1024项,每项4B,所以需要一个物理页来保存PGD,_KERNEL_PGD_START,这里设置为0x0010_0000。 那么第二级页表从0x0010_1000开始存放,即_KERNEL_PT_START。对应每一项PGD,都对应1024个page table entry,所以一项PGD代表大小为4KB * 1K = 4MB 内核RAM使用16M,所以对应4个2级页表,图中蓝色页。 ROM使用16M,对应4个2级页表,图中绿色项。 * PDBR:页目录基址寄存器(Page Director Base Register) * 0000000000003288 enable_paging PDBR为页目录基址寄存器,显示基址为0x0010_0000,末位的1表示开启分页机制。 * 配置VGA硬件:VGA显存起始位置,光标闪烁间隔,启用文本模式,开启硬件光标 * 大部分是保存通用寄存器,另外还有EPC和EAR寄存器 注意堆栈寄存器SP本身的保存 * 基本是save_context的逆操作 * arch/intr.c * * * 收到一个按键时,在键盘中断处理函数中打印“#”。 * 实线表示之前已经存在的关联 虚线表示format_slubpage()过程中建立的联系 之前已经知道,每个物理页框(Page Frame)都对应一个struct Page来描述及管理。一个物理页框被等分,存储多个slub。比如,图中一个物理页框能够容纳4个objects。 物理页框的起始部分用来存放slub_head,slub_head本身只有两个成员end_ptr及nr_objs,所以只需要8字节就够(32位系统),但这里实际给分配了offset(=8)字节。 每个object后面还跟着4字节空间(图中的next,是帮助逻辑理解的,代码实现并不直接出现),4字节空间容纳一个指针,指示下一个可用object。 object在页框中除了以链表的形式串联外,也可以用数组索引的方式。 页框中的object链表如何知道头尾呢?链表头实际由private指示。最后一个object之后的next(图中最底下的next)指向页框的起始地址,也就是说,这个地址是页对齐的,而页框中所有object都不可能是页对齐的,这样就可以检测出来了。 我们知道,一个slub页它可能在partial链表中,或在full链表中,或者被使用时,它就在cache-cpu(kmem_cache_cpu)中。在cache-cpu情况下,cpu-freeobj(二级指针)也指向下一个object。 slub_head-指向object链表的最后一个obj之后的next元素,这在释放slub对象slub_free()时有用。上面说到,obj链表的链表头可由private直接找到,链表尾也有判断方法,但却不能直接索引,遍历整个链表是可以的,不用说,代价很大,所以这里用end_ptr指向最后一个next,被释放的obj放在它之后。 综上,slub申请从链表头拿,释放时放到链表尾。 * object = *(cache-cpu.freeobj) obj是正常有效的,调整cache-cpu.freeobj及private使指向下一个obj,slub_head中的nr
您可能关注的文档
- 教学课件:《财经法规与会计职业道德》(高职).ppt
- 教学课件:《财经法规与会计职业道德》赵砚.ppt
- 教学课件:《财政学(第二版)》钟晓敏.ppt
- 教学课件:《出纳实务》孔德军.ppt
- 教学课件:《财政学(第三版)》储敏伟.ppt
- 教学课件:《产品设计表现技法》.ppt
- 教学课件:《产业经济学》王俊豪.ppt
- 教学课件:《成本管理》陈汉文.ppt
- 教学课件:《财政学(第二版)》王国清.ppt
- 教学课件:《财经法规与会计职业道德》(第二版)高翠莲.ppt
- 2025年重庆电讯职业学院单招(语文)测试题库必威体育精装版.docx
- 2025年海南健康管理职业技术学院单招(语文)测试题库附答案.docx
- 2025年开封职业学院单招(语文)测试模拟题库附答案.docx
- 2025年云南省思茅市单招语文测试题库附答案.docx
- 2025年西安高新科技职业学院单招(语文)测试题库附答案.docx
- 2025年河南省焦作市单招语文测试题库必威体育精装版.docx
- 2025年青海省玉树藏族自治州单招(语文)测试题库必威体育精装版.docx
- 2025年广东环境保护工程职业学院单招(语文)测试题库附答案.docx
- 2025年福建省龙岩单招(语文)测试题库附答案.docx
- 2025年无锡商业职业技术学院单招(语文)测试模拟题库必威体育精装版.docx
文档评论(0)