第五章,抢占式调度(lab3).pptVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章,抢占式调度(lab3) 提纲 用户环境的建立 中断、系统调用 用户环境的建立 用户执行环境数据结构的分配 装载并执行用户环境 用户环境的建立(续) 用户环境(Environments)数据结构的分配 envs是指向一个包含1024个(1<<NENV(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 Intel's 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 sync

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档