Skip to content

ch2 操作系统结构

2.1 操作系统服务

  1. 对用户
    • 用户界面:命令行界面(CLI)、批界面、图形用户界面(GUI)
    • 程序执行
    • I/O操作
    • 文件系统操作
    • 通信
    • 错误检测
  2. 对系统
    • 资源分配
    • 统计
    • 保护和安全

2.2 操作系统的用户界面

  1. 命令解释程序
    • 执行命令的两种常见的方法:
      1. 命令函解释程序本身包含代码以执行命令
      2. 由系统程序实现绝大多数命令(UNIX)
  2. 图形用户界面(占空间多一点)

2.3 系统调用(system call)

  1. 系统调用
    • 操作系统提供一系列的预定功能,通过一组称为系统调用接口呈现给编程人员
    • 系统调用把应用程序的请求传给内核,系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序
    • C/C++编写
    • 系统调用是内核的一部分
  2. 如何寻找相应的内核函数?
    • 实际上每一个系统调用都和一个相关联,通过索引表找到相应的内核函数,类似于中断向量表,本质上也是一种软中断(trap)
  3. 三种常用应用程序接口(API,Application Programming Interface)
    • 适用于Windows系统的Win32 API
    • 适用于POSIX系统的POSIX API(UNIX,Linux,Mac OS)
    • 适用于Java虚拟机程序的Java API
  4. 使用API而不是用系统调用的原因
    • 如果说系统调用是内核和应用程序之间信息交流的通道,那么API就是程序和开发人员之间交流的通道,为开发人员隐藏了系统调用的实现细节,提供访问操作硬件的权力
    • 原因:API的可移植性强,系统调用操作难度较大(细节和困难)
  5. 向操作系统传递参数的三种方法
    • 通过寄存器
    • 将参数存在内存和表中,将块的地址通过寄存器来传递
    • 参数通过程序压入堆栈,通过操作系统弹出

2.4 系统调用类型

  • 分为五类
  1. 进程控制
  2. 文件管理
  3. 设备管理
  4. 信息维护
  5. 通信

2.5 系统程序

  1. 系统程序提供了一个方便的环境,以开发程序和执行程序
  2. 一小部分的系统程序只是系统调用的简单接口,其他的可能是相当复杂的。分为如下的几类
    • 文件管理
    • 状态信息
    • 文件修改
    • 程序语言支持和装入
    • 通信

2.6 操作系统设计和实现

  1. 策略与机制
    • 策略决定做什么(what)
    • 机制决定如何做(how)

2.7 操作系统结构

  1. 四种结构
    • 简单结构(Simple Structure):早期的操作系统并没有很好的架构,有些甚至没有区分核心态和用户态,导致系统的不稳定性
    • 分层结构(Layered Structure):将操作系统分为多个层次,最底层的是硬件(层0),最高层的为用户接口(层N),每一层都只依靠更底层的功能来实现,这样形成一个层次化结构。
      • 优点:简化了构造和调试
      • 弊端:耦合性高,层次之间很难界定;效率较低,一个系统调用可能要陷入多个层再返回,增加开销
    • 微内核(Microkernels)
    • 模块(Module):使用面对对象的特点,将各个功能模块化,每个模块之间采用接口进行通讯,必要的时候可以将一部分的内容加载到内核之中进行操作。类似于层次结构,但是模块之间没有上下层依赖关系,模块之间可以相互调用,更加灵活;类似于微内核,但必要的时候会将内容加载到内核之中,比微内核更有效率。 许多操作系统采用混合架构
  2. 微内核
    • 将所有非基本的部分从内核中移走,并将他们实现为系统程序或用户程序,从而得到更小的内核
    • 微内核通常包括最小的进程和内存管理以及通信功能
    • 用户程序和系统服务(运行在用户空间的)通过微内核以消息传递的形式进行通信,并不会直接交互
  3. 微内核的优缺点
    • 优点:便于扩充操作系统;操作系统给容易移植;更好的安全性和可靠性
    • 缺点:由于系统功能总开销的增加二导致系统性能的下降(各个服务之间缺少通信,只能依靠微内核的信息传递,导致效率下降)

2.8 虚拟机

  1. 核心思想
    • 虚拟机的核心思想就是将一套硬件设备抽象成多套。采用CPU调度和虚拟内存的技术,制造每一个进程都有自己的处理器和内存的假象。
  2. 虚拟机的优点
    • 对于操作系统设计员,可以在虚拟机上进行系统开发,而不必进行中断,停止当前操作系统;对于用户来说,每个虚拟机完全独立于其他虚拟机,所以不同系统资源有完全的保护,没有安全问题
  3. 虚拟机资源共享的两种实现方法
    1. 可以通过共享小型磁盘来共享文件(模拟共享物理磁盘,但通过软件实现)
    2. 可以通过定义一个虚拟机的网络(模拟物理通信网络,但通过软件实现)
  4. 虚拟机实例 JVM,VMware,VirtualBox,Cygwin(基于Windows的Unix模拟环境)

2.9 系统,启动!(系统启动

  1. 生成操作系统以后,它必须要为硬件所使用
    • 绝大多数的计算机系统都有一小块代码,称为引导程序或者引导装载程序,这段代码能定位操作系统内核,将他装入内存,开始执行

2.10 例题