操作系统MIT6.S081:[xv6参考手册第2章]->操作系统组织结构

本文是MIT6.S081操作系统课程的学习笔记,主要探讨了操作系统如何通过多路复用、隔离和交互来满足需求。文章介绍了宏内核设计,强调了用户模式、管理员模式和系统调用在实现进程隔离中的作用。xv6操作系统采用宏内核结构,通过进程抽象实现资源隔离,并详细描述了xv6的启动过程和进程管理。

本系列文章为MIT6.S081的学习笔记,包含了参考手册、课程、实验三部分的内容,前面的系列文章链接如下
操作系统MIT6.S081:[xv6参考手册第1章]->操作系统接口
操作系统MIT6.S081:P1->Introduction and examples
操作系统MIT6.S081:Lab1->Unix utilities


前言

操作系统需要满足三大要求:多路复用、隔离、交互。

  • 操作系统的一个关键要求是支持并发。例如,通过使用系统调用接口fork,一个进程可以创建出一个新的子进程。
  • 操作系统必须在进程之间分时共享计算机资源。例如,即使进程数多于CPU的核心数,操作系统也必须确保所有进程都有机会执行。
  • 操作系统还必须使进程之间具有隔离性,也就是说如果一个进程发生错误或故障,它不应该影响其它不依赖于该错误进程的其它进程。
  • 完全的隔离也不太合适,因为进程之间有时需要交互,例如管道。

前言

①本章概述了如何组织操作系统来实现这三个要求。事实证明有很多方法可以做到这一点,但本文重点关注宏内核这一主流设计(许多Unix操作系统都使用宏内核)。本章还对xv6的进程(xv6中的隔离单元)和xv6启动时第一个进程的创建过程进行了概述。
②xv6运行在一颗多核RISC-V微处理器上,它的许多低级功能(如进程实现)是特定于RISC-V的。RISC-V是64位CPU,xv6是用LP64 C写的,这意味着C语言中的long(L)和pointer§是64位,而int是32位。本书假设读者已经对某些架构进行了一些机器级编程,并将在这些架构出现时介绍RISC-V特定的想法。
③计算机中的CPU被其所支持的硬件所包围,其中大部分以I/O接口的形式存在。xv6是以qemu的-machine virt选项模拟的硬件上编写的。这包括RAM、包含引导代码的 ROM、与用户键盘/屏幕的串行连接以及用于存储的磁盘。


一、抽象物理资源

应用程序直接与硬件交互

遇到操作系统时,人们可能会问的第一个问题是为什么需要它?也就是说,可以将图1.2中的系统调用实现为一个库,将应用程序与之链接。在这种设计中,每个应用程序甚至可以有自己的库来满足其需求。应用程序可以直接与硬件资源交互,并以最优的方式使用这些资源(例如实现高性能或可预测的性能)。一些嵌入式设备或实时系统的操作系统就是以这种方式组织的。
在这里插入图片描述
这种方法的缺点: 如果有多个应用程序在运行,则应用程序必须表现良好。例如,每个应用程序必须定期释放对CPU的占用,以便其他应用程序可以运行。如果所有应用程序相互信任并且没有错误,这种协作分时方案可能是可行的。但是一般来说,应用程序之间不信任彼此并且容易存在bug,因此需要为这些应用程序提供强隔离性。


抽象硬件资源

①为了实现强隔离、禁止应用程序直接访问敏感的硬件资源,将硬件资源抽象为服务是很有帮助的。例如,Unix的应用程序仅通过文件系统的openreadwriteclose系统调用与存储硬件交互,而不是让应用程序直接读写磁盘。这为应用程序提供了便利的路径名,并允许操作系统(作为接口的实现者)管理磁盘。即使隔离性不是问题,有意交互的程序(或只是希望彼此远离)也可能会发现使用文件系统比直接使用磁盘更方便和抽象。
②同样,Unix透明地在进程之间切换CPU,并根据需要来保存和恢复寄存器状态,因此应用程序不必知道时间共享。即使某些应用程序处于无限循环中,这种透明性也允许操作系统共享CPU。
③另一个例子,Unix进程使用exec来构建它们的内存图像,而不是直接与物理内存交互。这允许操作系统决定进程在内存中存放的位置。如果内存资紧张,操作系统甚至可能将一些进程的数据存储在磁盘上。exec还为用户提供了便利的文件系统来存储可执行程序图像。
④Unix进程之间的交互形式大部分都是通过文件描述符实现的。文件描述符不仅抽象了许多细节(例如,管道或文件中的数据存储在哪里),还简化了交互的方式。例如,如果管道中的一个应用程序出错,内核会为管道中的下一个进程生成文件结束信号。
最后: 图1.2中的系统调用接口经过精心设计,既方便了程序员,又提供了强隔离性。Unix接口不是抽象资源的唯一方法,但它已被证明是一种非常好的方法。


二、用户模式、管理员模式、系统调用

实现强隔离需要应用程序和操作系统之间有硬边界。如果一个应用程序出错,我们不希望操作系统或其他应用程序跟着出错。相反,操作系统应该能够清理出错的应用程序并继续运行其它的应用程序。为了实现强隔离,操作系统必须让应用程序不能修改(甚至读取)操作系统的数据结构和指令,并且应用程序不能访问其他进程的内存。


CPU为强隔离提供硬件支持。例如,RISC-V的CPU能以三种模式来执行指令:机器模式管理员模式用户模式

  • 在机器模式下执行的指令具有所有权限,CPU以机器模式启动。机器模式主要用于配置计算机,xv6在机器模式下执行一些代码后就切换到管理员模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知初与修一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值