第3课 操作系统的组织结构

作者: 橡树人 | 来源:发表于2020-11-21 20:45 被阅读0次

第3课 操作系统的组织结构

今天的主题:

  1. 操作系统设计
  • 系统调用
  • 微内核/整体内核
  1. 在xv6中的第一个系统调用

操作系统的示意图

应用,比如sh、echo等
系统调用接口,比如open、close等
操作系统

操作系统的目标有哪些?

  • 同时运行多个应用
  • 隔离多个应用
  • 多路复用多个应用
  • 在多个应用间共享资源

操作系统设计

稻草人设计:没有操作系统
应用直接跟硬件交互,比如CPU、寄存器、DRAM、磁盘等;
操作系统类库可能抽象了一部分硬件;

稻草人设计不利于多路复用,因为每个app必须周期性地放弃硬件;

稻草人设计提供的弱隔离,比如应用忘记放弃硬件了,则没有其他应用会运行;应用出现死循环了,则没有其他应用会运行;甚至不能杀掉来自另一个应用的恶意应用。

稻草人设计不利于内存隔离,因为所有的应用共用一个物理内存;一个应用能覆盖另一个应用的内存;一个应用能覆盖操作系统库。

Unix接口有利于操作系统目标

对硬件进行了如下4个抽象来实现目标,

  • 进程 fork
    进程是对CPU的抽象;
    操作系统透明地将CPU分配给进程,保存和恢复寄存器,保证:进程放弃CPU,周期性地重新获取CPU
  • 地址空间 exec
    内存是对物理内存的抽象;
    每个进程都有自己的地址空间;
    操作系统能决定应用在内存中的位置;
    操作系统能保证不同应用之间的内存相互隔离;
    操作系统允许在文件系统中存储内存映像;
  • 文件
    文件是对磁盘块的抽象;
    操作系统允许在不同进程/用户间共享文件;
  • 管道
    管道是对共享物理内存的抽象;
    操作系统能使发送者/接收者停止;

操作系统必须有一定的防御力

应用不应该能使操作系统崩溃;
应用不应该打破它的隔离;

因此,在操作系统和应用之间需要强隔离。
方法:需要来自硬件的支持

  • 用户/内核模式
  • 虚拟内存

处理器提供用户/内核模式

内核模式:能执行特权指令,比如设置内核/用户模式标记位,重复编程计时器芯片等

用户模式:不能执行特权指令

以内核模式运行操作系统,以用户模式运行应用

注意:RISC-V还有一个M模式,但是大部分情形都被忽略了。

处理器提供虚拟内存

硬件提供页表机制来完成从虚拟地址到物理地址的转换;

定义应用能访问什么物理内存;

操作系统设置页表使得:每个应用只能访问自己的内存。

应用必须能跟内核通信

解决方案:添加一条指令来以一种可控的方式修改模式

ecall <n>:在预先安排好的入口处进入内核

xv6案例探究

目标:不用参考书,阅读源代码,并理解它

xv6使用了整体内核,其中Unix系统调用等价于内核接口

xv6的源代码反映了操作系统的组织结构,比如:

  • user/
    包含了在用户模式下运行的应用
  • kernel/
    包含了内核的代码

相关文章

网友评论

    本文标题:第3课 操作系统的组织结构

    本文链接:https://www.haomeiwen.com/subject/foneiktx.html