概述

无论何时要放在一个大系统环境中去理解操作系统

计算机系统组成

计算机系统:硬件子系统 + 软件子系统

硬件:各种物理部件的有机组合,系统工作实体

软件:各种程序和文件,用于指挥计算机系统按指定要求协同工作

软硬件协同,硬件抽象为文件、外部shell

结构复杂的软件:工程化、社会计算性、文化性,考虑综合效益

用户视图

用户、程序员、语言处理程序设计者、操作系统设计者的视图是不同的,越往下能够看到和专注的地方越底层,分层思想

硬件系统

组成:中央处理器、主存、外围设备、总线

当今计算机硬件经典结构与主流组织方式:存储程序计算机。又称冯诺依曼计算机模型,现如今沿用的大得多还是该结构,由输入设备、存储器、控制器、运算器、输出设备五部分构成。

总线

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是CPU、内存、输入输出设备传递息的公用通道

计算机的各个部件通过总线相连接,外围设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统

总线类型

内部总线:CPU内部
系统总线:连接CPU、存储器和各种I/O模块主要部件
通信总线:用于计算机系统之间通信

系统总线实例:南桥、北桥。还挺意外的,原来所谓北桥就是主存控制器,南桥为I/O控制器

软件系统

组成:系统软件、支撑软件、应用软件

系统软件:操作系统、实用程序、语言处理程序、数据库管理系统

支撑软件:接口软件、工具软件、环境数据库,支持用户使用计算机的环境,提供开发工具,也可认为是系统软件的一部分

应用软件是用户按其需要自行编写的专用程序

操作技术发展

操作平台与操作系统

手工操作->装入程序引进->汇编语言引入->高级语言引入->简单批处理系统->操作系统与自动化操作

操作系统

OS是计算机系统最基础的系统软件,管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好运行环境。

OS是计算机系统的公共软件基础设施,所有应用程序共用OS服务,且OS内核是反应式reactive机制(中断驱动的)

操作系统组成:进程调度子系统、进程通信子系统……

操作系统类型:多道批处理操作系统、分时操作系统、实时操作系统

操作系统应用领域分类:服务器、并行、网络、手机、嵌入式……

计算无处不在,软件定义世界不过显然没有硬件加以匹配,这话也只能成为一句空话

资源管理视角

计算机系统资源:
硬件资源:处理器、内存、外设
信息资源:数据、程序

思考如何高效管理计算机的软硬件资源?
当底层的实现较为复杂时,显然就会有人帮我们做好抽象与屏蔽。驱动程序!
驱动程序:最底层的、直接控制和监视各类硬件资源的部分

资源的共享方式:
独占使用、并发使用

资源分配策略:

  • 静态分配:进程运行前一次拿到全部独占资源,资源使用效率低
  • 动态分配:使用资源前临时申请,可能产生竞争资源的死锁
  • 资源抢占:被抢夺资源进程需要回滚

程序控制执行视角

由于CPU速度与I/O速度不匹配的矛盾非常突出,只有让多道程序同时进入内存争抢CPU运行,才可以够使得CPU和外围设备充分并行,从而提高计算机系统的使用效率

多道程序设计:让多个程序同时进入计算机的主存储器进行计算

多道程序设计的特点:

  • CPU与外部设备充分并行
  • 外部设备之间充分并行
  • 发挥CPU的使用效率
  • 提高单位时间的算题量
  • 单道程序运算时间会增加

多道程序系统的实现:

  • 为进入内存执行的程序建立管理实体:进程
  • OS应能管理与控制进程程序的执行
  • OS协调管理各类资源在进程间的使用
  • 处理器的管理和调度
  • 主存储器的管理和调度
  • 其他资源的管理和调度

多道程序系统的实现要点:

  • 如何使用资源:调用操作系统提供的服务例程(如何陷入操作系统)
  • 如何复用CPU:调度程序(在CPU空闲时让其他程序运行)
  • 如何使CPU与I/O设备充分并行:设备控制器与通道(专用的I/O处理器)
  • 如何让正在运行的程序让出CPU:中断(中断正在执行的程序,引入OS处理)

操作控制计算机视角

计算机系统操作方式

  • OS规定了合理操作计算机的工作流程
  • OS的操作接口——系统程序
    OS提供给用户的功能级接口,为用户提供的解决操作计算机和计算共性问题的所有服务的集合
  • OS的两类作业级接口
    • 脱机作业控制方式:作业控制语言
    • 联机作业控制方式:操作控制命令

命令解释程序:接受和执行一条用户提出的对作业的加工处理命令,好像就是命令行交互式吧

人机交互视角

操作系统的人机交互部分

  • OS改善人机界面,为用户使用计算机提供良好的环境
  • 人机交互设备包括传统的终端设备和新型的模式识别设备
  • OS的人机交互部分用于控制有关设备运行和理解执行设备传来的命令
  • 人机交互功能是决定计算机系统友善性的重要因素,是当今OS研发热点

“人而不是技术是人机交互的中心”,代表性成果:鼠标、菜单与窗口控制

程序接口视角

操作系统的程序接口

  • 操作系统的程序接口:操作系统为程序运行扩充的编程接口
  • 系统调用:操作系统实现的完成某种特定功能的过程;为所有运行程序提供访问操作系统的接口
  • POSIX支持

系统调用的实现机制

  • 陷入处理机制:计算机系统中控制和实现系统调用的机制
  • 陷入指令:也称访管指令,或异常中断指令,计算机系统为实现系统调用而引起处理器中断的指令
  • 每个系统调用都事先规定了编号,并在约定寄存器中规定了传递给内部处理程序的参数

系统调用的实现要点

  • 编写系统调用处理程序
  • 设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,并包含系统调用自带参数的个数
  • 陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场

系统调用实现流程:
用户进程->系统调用功能号->进入内核->保护CPU现场->获取系统功能号、获取入口地址->系统调用处理子程序->结束处理、恢复现场

Linux系统调用执行流程:
应用程序->C库展开->中断处理->内核函数

系统结构视角

在计算机软件发展史上,OS是第一个大规模的软件系统

OS作为大型软件,结构设计是关键

操作系统软件的结构设计

  • OS构件
    内核、进程、线程、管程等
  • 设计概念
    模块化、层次式、虚拟化
  • 内核设计是OS设计中最为复杂的部分

操作系统内核:

  • 单内核:内核中各部件杂然混居的形态,始于1960年代,广泛使用;如Unix/Linux,及Windows(自称采用混合内核的CS结构)
  • 微内核:1980年代始,强调结构性部件与功能性部件的分离,大部分OS研究都集中在此
  • 混合内核:微内核和单内核的折中,较多组件在核心态中运行,以获得更快的执行速度
  • 外内核:尽可能减少内核的软件抽象化和传统微内核的消息传递机制,使得开发者专注于硬件的抽象化;部分嵌入式系统使用

处理器管理

处理器与寄存器

用户程序可见寄存器:

  • 可以使程序员减少访问主存储器的次数,提高指令执行的效率
  • 所有程序可使用,包括应用程序和系统程序
    • 数据寄存器:通用寄存器
    • 地址寄存器:索引、栈指针、段地址等寄存器

控制与状态寄存器:

  • 用于控制处理器的操作;主要被具有特权的操作系统程序使用,以控制程序的执行
  • 程序计数器PC:存储将取指令的地址
  • 指令寄存器IR:存储最近使用的指令
  • 条件码CC:CPU为指令操作结果设置的位,标志正/负/零/溢出等结果
  • 标志位:中断位、中断允许位、中断屏蔽位、处理器模式位、内存保护位……

指令与处理器模式

指令

机器指令:

  • 机器指令是计算机系统执行的基本命令,是中央处理器执行的基本单位
  • 指令由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码
  • 指令完成各种算术逻辑运算、数据传输、控制流跳转

指令执行过程:

  • CPU根据PC取出指令,放入IR,并对指令译码,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行
  • 一种指令执行步骤如下:
    • 取指:根据PC从存储器或高速缓冲存储器中取指令到IR
    • 解码:解译IR中的指令来决定其执行行为
    • 执行:连接到CPU部件,执行运算,产生结果并写回,同时在CC里设置运算结论标志;跳转指令操作PC,其他指令递增PC值

指令执行周期:包括取指、解码、执行过程

指令流水线:充分调度CPU

特权指令:只能被操作系统内核使用的指令
非特权指令:能够被所有程序使用的指令

处理器模式

处理器模式:

  • 计算机通过设置处理器模式实现特权指令管理
  • 计算机一般设置0、1、2、3等四种运行模式,建议分别对应:0操作系统内核、1系统调用、2共享库程序、3用户程序等保护级别
  • 0模式可以执行全部指令;3模式只能执行非特权指令;其他每种运行模式可以规定执行的指令子集
  • 一般来说,现代操作系统只使用0和3两种模式,对应于内核模式和用户模式

处理器模式切换:

  • 包括“用户模式→内核模式”和“内核模式→用户模式”的转换
  • 中断、异常或系统异常等事件导致用户程序向OS内核切换,触发:用户模式→内核模式
    • 程序请求操作系统服务
    • 程序运行时发生异常
    • 程序运行时发生并响应中断
  • OS内核处理完成后,调用中断返回指令(如Intel的iret)触发:内核模式→用户模式

中断与中断源

中断:中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程

操作系统是“中断驱动”的,换言之,中断是激活操作系统的唯一方式?此话何解,不过操作系统本身确实也是大型程序,在其上运行其他程序也必然需要中断吧。

中断、异常与系统异常:

  • 狭义的中断指来源于处理器之外的中断事件,即与当前运行指令无关的中断事件,如I/O中断、时钟中断、外部信号中断等
  • 异常指当前运行指令引起的中断事件,如地址异常、算术异常、处理器硬件故障等
  • 系统异常指执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求I/O、创建进程等

中断源:硬件故障中断事件、程序性中断事件、自愿性中断事件、I/O中断事件、外部中断事件

中断系统

中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分
中断响应由硬件子系统完成
中断处理由软件子系统完成

中断响应过程:

  • 发现中断源,提出中断请求
    • 发现中断寄存器中记录的中断
    • 决定这些中断是否应该屏蔽
    • 当有多个要响应的中断源时,根据规定的优先级选择一个
  • 中断当前程序的执行
    • 保存当前程序的PSW/PC到核心栈
  • 转向操作系统的中断处理程序

中断的处理:

  • 中断处理程序
    操作系统处理中断事件的控制程序, 主要任务是处理中断事 件和恢复正常操作
  • 中断处理过程
    • 保护未被硬件保护的处理器状态
    • 通过分析被中断进程的PSW中断码字段,识别中断源
    • 分别处理发生的中断事件
    • 恢复正常操作

多中断响应与处理

中断屏蔽:当计算机检测到中断时, 中断装置通过中断屏蔽位决定是否响应已发生的中断,从而进行有选择的响应中断

中断优先级:当计算机同时检测到多个中断时, 中断装置响应中断的顺序,不同类型操作系统有不同中断优先级

中断嵌套处理:当计算机响应中断后,在中断处理过程中,可以再响应其他中断

多中断的响应与处理:

  • 决定中断处理次序的因素:
    • 中断屏蔽可以使中断装置不响应某些中断
    • 中断优先级决定了中断装置响应中断的次序
    • 中断可以嵌套处理, 但嵌套的层数应有限制
    • 中断的嵌套处理改变了中断处理的次序