原理归纳与小结
读者通过阅读本章和做实验,相信已经尝试了加载操作系统、操作系统访问外设、操作系统处理中断、用户态与内核态切换等一系列小 project。这里面体现了哪些操作系统的原理和概念呢?
系统软件:在这里读者应该体会到操作系统是一个软件,采用编译器生成可执行代码,通过 bootloader 加载到内存中执行,可以执行所有 CPU 指令(包括特权指令),访问到所有硬件资源。相对于一般的应用软件,它主要完成的工作是对计算机的硬件资源管理,并给上层应用提供服务(这里还体现不够)。所以我们把操作系统看成是提供计算机系统级管理和基础共性服务的一种系统软件。
段式的内存管理:在这里读者应该体会到 CPU 访问的地址首先是一个虚拟地址,然后通过 MMU 的段式地址保护检查和变换(这要看段描述符表中的描述符是如何设置段基址和段范围的)才能把虚拟地址变换成线性地址(由于没有启动分页机制,线性地址就是物理地址),如果虚拟地址的偏移值超过了段范围值,这会出现故障中断。
中断处理:在这里读者应该体会到中断包含了外设产生的外设中断(来的时机不确定)和 CPU 主动产生的陷阱中断(执行特定指令就会产生),有了中断,操作系统就可以随时打断 CPU 正常的顺序执行,转而处理相对更加紧急的中断事件。为了能够让 CPU 继续正常执行,在中断处理前需要保存足够的硬件信息(主要是 CPU 各种寄存器的值,一般放在内核栈中),以便于中断处理完毕后,通过恢复这些硬件信息,能够回到被打断的地方继续执行。
特权级:在这里读者应该体会到在不同的特权级可以完成的事情是不一样的。操作系统需要管理整个计算机资源,所以它应该运行在 CPU 的最高特权级,而应用程序不必也不能使用特权指令或访问操作系统的地址空间,所以它应该运行在 CPU 的非特权级。如果应用程序执行特权指令或访问操作系统的的地址空间,则 CPU 硬件的安全检查机制会阻止应用程序的执行并尝试故障中断,把 CPU 控制权转给操作系统进行进一步处理。如果应用程序需要访问计算机资源,可以通过执行特定的指令,产生陷阱中断,从而完成从用户态到内核态的切换,让操作系统为应用程序提供服务。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论