HyperOS操作系统 研究课题.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hyper OS 提前上学 杨天祺 提前上学 李嘉图 选题背景 操作系统教学中的问题: 在操作系统课程中,需要涉及处理器体系结构、编译原理、汇编语言、算法与数据结构等各方面的知识,还需要很强的文档阅读能力。 对不熟悉硬件的同学而言学习曲线较为陡峭。 需要一个合适的教学用操作系统,在简洁的条件下展示操作系统的执行过程 操作系统研究中需求: 在部分操作系统的研究中,需要硬件无关的、足够简单的模拟环境 例如对算法效率的分析等 现状 ucore/rcore 等教学用操作系统: 时常需要阅读 Intel 手册,了解部分硬件的作用和原理 无法清晰的看出操作系统的实际执行流程,增加了学生理解 OS 本质原理的难度 OSTEP 等实现,将各个部分拆分成小的模拟程序 各个部分之间耦合度为 0,无法展示操作系统各个部分之间的协调工作 例如 process 的时间片调度需要用到时钟中断来对时间片进行处理 例如虚拟存储中需要用到缺页中断来处理缺页情况 需求分析 硬件无关:屏蔽掉与硬件相关的内容,展示出 OS 中协调工作的逻辑过程 对硬件不太了解的学生学习时,可以大大降低学习难度 在对操作系统中算法进行研究时,可以忽略大量与算法本身无关的硬件相关问题,减少测试开销。 足够真实:应当体现为一个完整的各个部分协同工作的系统 OSTEP 等实现虽然易用,但是难以将各个部分耦合,无法展示协同工作 逻辑清晰:应该尽量遵循真实操作系统中的流程,展示真实系统中硬件、操作系统、软件是如何协调工作的。 Hyper OS 一个运行在用户态,利用线程之间的通信和协调模拟 OS 调度的模拟操作系统 硬件无关 比较真实的展现操作系统的对各个部分的处理过程 放弃了硬件对 kernel 的限制,以及一些 kernel 的实现技巧 目前解决的主要问题包括: 中断的处理:如何被正确发送给处理器,以及如何正确的返回 内存的支持:如何模拟页机制以及虚拟存储,如何利用物理地址进行寻址 进程的支持:如何定义用户态程序格式,并被加载成为进程,如何从用户进程中抢夺 CPU 的控制权 外部设备的支持:外部设备如何和 OS 协调工作 小组分工 杨天祺: 中断机制 外部设备支持 李嘉图: 内存管理 用户态程序与进程管理 中断机制 – 调研 对支持 SMP 的中断机制进行了调研 在多处理器系统中,中断控制器 APIC 分为 Local APIC 和 I/O APIC 两部分 Local APIC:处理一个核心的中断 I/O APIC:接收一个主板上的中断 外部中断分发到哪个进程在由 I/O APIC 发送至 Local APIC 过程中由用户定义的 interrupt affinity 决定 内部中断分发至发送该中断的 CPU 指令所在的核心 中断处理完成后,CPU 会写入 Local APIC 的 EOI 寄存器通知 Local APIC 中断处理完成,并由 Local APIC 完成后续操作 中断机制 – 实现 中断机制的难点在于如何仅通过用户态的机制实现这些信号的传递,以及如何打断当前正在执行的用户进程 在线程中通过线程安全队列进行事件的触发和通信 线程安全队列中实际采用条件变量 采用 std::promise 阻塞发起中断的线程,并在返回时通知发起中断的线程 由于 Hyper OS 中 LAPIC 等待在事件队列上,无法通过写入 EOI 寄存器实现中断的返回。因此采用对事件队列发送一条信号事件,通知 LAPIC 进行相关的处理操作 中断嵌套采用维护一个中断处理例程栈实现,在收到的是一个内部中断,且目前中断栈上也是内部中断的时候进行嵌套 中断机制 – 打断 中断机制中另一个难题是如何打断当前用户进程的执行,并执行中断服务例程。 1. 采用软中断,利用进程间的信号模拟一个中断,但是这样需要把所有逻辑进程/设备都用进程维护,需要进程间共享信息,非常不方便 2.所有逻辑进程/设备都分别用线程来维护,但这时候就不能用软中断,采用一个单独的线程处理一个CPU的所有中断 实际我们采用解决方案2,需要用户态程序放弃 CPU 使用权 Kernel 应用程序 访存接口 代码 进程 进程条件变量 所执行程序 页表 调度器 进程状态队列 调度算法 虚拟内存 物理内存管理 进程内存布局 缺页处理程序 应用程序接口 应用程序接口设计的难点是如何实现打断应用程序的控制流。 可能的解决方案: 编写指令级和编译器,用汇编码表示程序: 工作量大,复杂性高,失去了 Hyper OS 的抽象性和简洁性 我们的设计是,应用程序使用给定的接口:handleT 访问内存 访存语句结束后检查是否有中断,如果有则将自己阻塞在一个条件变量上,主动交出控制权。 应用程序格式 任何程序是一个继承自program的子类,要实现两个虚函数: st

文档评论(0)

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

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

版权声明书
用户编号:8047000056000024

1亿VIP精品文档

相关文档