xv6--一个类Unix的教学用操作系统

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

2020-11-21  本文已影响0人  橡树人

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

今天的主题:

  1. 操作系统设计
  1. 在xv6中的第一个系统调用

操作系统的示意图

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

操作系统的目标有哪些?

操作系统设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

处理器提供虚拟内存

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

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

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

应用必须能跟内核通信

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

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

xv6案例探究

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读