- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章,搶占式调度(lab3)
第五章,抢占式调度(lab3)
提纲
用户环境的建立
中断、系统调用
用户环境的建立
用户执行环境数据结构的分配
装载并执行用户环境
用户环境的建立(续)
用户环境(Environments)数据结构的分配
envs是指向一个包含1024个(1NENV(10))struct Env结构的指针,与pages指针非常类似,连建立链表的一些宏定义都和在页面管理中的一模一样
可以在分配完pages结构后,分配envs结构,并在env_init()函数中
在i386_vm_init()函数中,将envs结构映射到UENVS逻辑地址处
用户环境的建立(续)
装载并执行用户环境
相关的函数调用
i386_init-ENV_CREATE(user_hello)-env_create-env_alloc-load_icode
i386_init-env_run
需要解决以下问题:
用户环境页表的配置与空间分配
装载用户执行代码
切换到用户执行代码
用户环境的建立(续)
用户环境页表的配置与空间分配
页表的配置
在env_create-env_alloc-env_setup_vm
按照JOS的规划,用户执行的逻辑地址空间实际上是与内核共享4GB,内核代码在lab2中已经映射到KERNBASE(0xf0000000)以上的空间,而剩下的低地址空间则留给了用户执行代码
构建用户环境的页表,为了保持内核部分的逻辑地址到物理内存的映射关系,实际上可以将内核的地址映射关系拷贝到用户环境的页表中来。
思考:通过拷贝,可以让用户环境顺利寻址到所有内核端的代码,可是用户代码装载到的低地址空间,还没有实际的物理内存页面与之进行映射,应该采用什么样的办法呢?是通过分配页面的办法将用户环境的空间填满,还是以后根据需要动态分配页面?为什么?
用户环境的建立(续)
装载用户程序到内存(load_icode)
函数原型load_icode(struct Env *e, uint8_t *binary, size_t size)
其中binary指向用户程序在内存中的镜像(如何指向的?)
Size是用户程序在内存中镜像的大小
ELF文件的装载过程
ELF文件的格式(见第3章)
将ELF文件中的代码段、数据段、bss段拷贝到Env *e指向的用户环境中(用哪一个CR3会比较方便?)
找到用户程序的入口地址,并将该入口地址赋值到e-env_tf. tf_eip中
用户环境的建立(续)
将用户环境投入执行
env_run(struct Env *e)函数
载入用户环境的页目录
将e-env_tf中包含的寄存器值赋值到物理的寄存器,使得用户环境中的程序开始执行
用户环境的建立(续)
完成用户环境加载
跟踪其运行过程,直到int $0x30
思考
1. 如何赋值e-env_tf才能使装载进来的用户程序投入真正的执行?
2. JOS系统在env_pop_tf之前都对e-env_tf中的值做了哪些初始化的工作?
3. 用户环境的堆栈段从什么地方开始?JOS是如何实现堆栈段的定位的?
4. env_pop_tf是如何工作的?为什么首先执行popal来设置通用寄存器,而不是先pop env_tf结构中后面的tf_ss和tf_esp?
中断、系统调用
i386的异常与中断
i386的异常或中断处理过程
TSS的作用与发生中断后堆栈的构成
JOS中的异常处理
缺页错误、系统调用的实现
中断、系统调用(续)
i386的异常与中断
Exceptions and interrupts are both protected control transfers, which cause the processor to switch from user to kernel mode (CPL=0) without giving the user-mode code any opportunity to interfere with the functioning of the kernel or other environments. In Intels terminology, an interrupt is a protected control transfer that is caused by an asynchronous event usually external to the processor, such as notification of external device I/O activity. An exception, in contrast, is a protected control transfer caused synchronously by the curre
您可能关注的文档
- 第五章 社會主义本质和根本任务.ppt
- 第五章 發酵工艺条件的确定.ppt
- 第五章 票據法.ppt
- 第五章 稅收法律制度.ppt
- 第五章 社會主义的本质和根本任务.ppt
- 第五章 粉體学.ppt
- 第五章 索引技術.ppt
- 第五章 系統的稳定性.ppt
- 第五章 細胞的能量供应和利用.ppt
- 第五章 統计指数.ppt
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)