计算机系统概览

corresponding slide-ch1.1

电子数字计算机

  • 电子数字计算机,是一种能够自行按照已设定的程序进行数据处理的电子设备
  • 电子数字计算机,是软件与硬件相结合、面向系统、侧重应用的自动化求解工具

    电子数字计算机的诞生与发展

    军事需求催生和驱动自动化的计算技术

冯诺依曼架构

程序内存式“计算机的设计思想

计算机系统的组成

  • 计算机系统:包括硬件子系统和软件子系统
    • 硬件:借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统工作的实体
      • CPU,主存储器,I/O控制系统,外围设备
    • 软件:各种程序和文件,用于指挥计算机系统按指定的要求进行协同工作
      • 包括系统软件、支撑软件和应用软件
      • 关键系统软件是:操作系统语言处理程序

计算机系统的用户视角

计算机硬件系统

corresponding slide-ch1.2

计算机硬件系统的组成

  • 中央处理器
    • 运算单元
    • 控制单元
  • 主存储器
  • 外围设备
    • 输入设备
    • 输出设备
    • 存储设备
    • 网络通信设备
  • 总线

存储程序计算机

  • 冯·诺伊曼等人在1946年总结并明确提出,被称为冯·诺伊曼计算机模型
  • 存储程序计算机在体系结构上主要特点
    • 运算单元为中心,控制流由指令流产生
    • 采用存储程序原理,面向主存组织数据流
    • 主存是按地址访问、线性编址的空间
    • 指令由操作码和地址码组成
    • 数据以二进制编码

结构

  • 当今计算机硬件的经典结构和主流组织方式

总线

  • 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是CPU、 内存、输入输出设备传递信息的公用通道
  • 计算机的各个部件通过总线相连接,外围设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统

总线的组成

  • 总线是传输各类通信信号的线路
  • 按照所传输的信息种类,总线包括:
    • 一组控制线
    • 一组数据线
    • 一组地址线

总线的类型

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

总线系统实例:南北桥

片上系统(SoC)

  • 片上系统(SoC, System on a Chip)
  • 单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术
  • 所谓完整的系统一般包括中央处理器(CPU)、存储器、 以及外围电路等
  • SoC是与其它技术并行发展的,如绝缘硅(SOI),它可以提供增强的时钟频率,从而降低微芯片的功耗

中央处理器(CPU)

  • 中央处理器是计算机的运算核心(Core)控制单元( Control Unit),主要包括:
    • 运算逻辑部件:一个或多个运算器
    • 寄存器部件:包括通用寄存器、控制与状态寄存器,以及高速缓冲存储器(Cache)
    • 控制部件:实现各部件间联系的数据、控制及状态的内部总线;负责对指令译码、 发出为完成每条指令所要执行操作的控制信号、实现数据传输等功能的部件

处理器与寄存器

  • 运算单元
  • 控制单元
  • 内部总线
  • PC/IR/Flag
  • MAR/MDR
  • 寄存器
  • Cache
  • IOAR/IOD

存储器的组织层次

外围设备及其分类

  • 设备类型
    • 输入设备
    • 输出设备
    • 存储设备
    • 机机通信设备

I/O控制方式

  • 轮询方式:CPU忙式控制I/O,CPU执行内存数据交换
  • 中断方式:CPU启动I/O设备,设备进行I/O,设备中断CPU以善后,CPU执行内存数据交换
  • DMA方式:CPU启动DMA,DMA独立进行I/O和内存数据交换,DMA中断CPU以善后

计算机软件系统

corresponding slide-ch1.3

计算机软件系统的组成

  • 系统软件
    • 操作系统:实施对各种软硬件程序的资源控制
    • 实用程序:为方便用户而设,如文本编辑
    • 语言处理程序:把用汇编语言/高级语言编写的程序,翻译成可执行的机器语言程序
    • 数据库管理系统
  • 支撑软件
    • 有接口软件、工具软件、环境数据库等
    • 支持用户使用计算机的环境,提供开发工具
    • 也可认为是系统软件的一部分
  • 应用软件
    • 用户按其需要自行编写的专用程序

程序员的计算机系统视图

软件开发的不同层次

  • 计算机硬件系统:机器语言
  • 操作系统之资源管理:机器语言+广义指令(扩充了硬件资源管理)
  • 操作系统之文件系统:机器语言+系统调用(扩充了信息资源管理)
  • 数据库管理系统:+数据库语言(扩充了功能更强的信息资源管理)
  • 语言处理程序:面向问题的语言

计算机程序的执行过程

计算机操作技术的发展

corresponding slide-ch1.4

操作平台与操作系统

  • 任何一台机器都有其操作平台与操作系统
    • 例子:洗衣机
        1. 确定水量、洗衣时间、洗涤强度、洗衣粉
        1. 启动按钮
        1. 指示灯显示工作状态
    • 这一方式可以总结为:开关表示,按钮控制,亮灯显示
    • 操作平台的精细化系统化,产生了操作系统
  • 计算机也不例外,由此产生了极为系统的计算机操作平台——计算机操作系统

计算机的手工操作

  • 开关表示,按钮控制,亮灯显示
  • 问题:手工操作速度与电子计算速度不匹配

装入程序的引进

  • 引入卡片和纸带(打孔)描述程序指令与数据
  • 引入装入程序(Loader)
    • 自动化执行程序装入,必要时进行地址转换
    • 通常存放在ROM中
  • 早期校园卡(一整个震撼
    • 问题:安全性极低(只需记住孔位即可盗用)

外存储设备的变迁

  • 已经消失的外存储设备
    • 磁带机
    • 软驱软盘
  • 使用越来越少的外存储设备
    • 光驱光盘

引入汇编语言后的计算机控制

引入高级语言后的计算机控制

简单批处理系统(Batch Processing)

简单批处理系统的操作控制

  • 引入作业控制语言,用户编写作业说明书,描述对一次计算机求解(作业)的控制
    • 作业:还没有在内存中创建运行映像的程序
  • 操作员控制计算机成批输入作业,成批执行作业
  • 这一方式明显缩短了手工操作的时间,提高了计算机系统的使用效率

简单批处理系统的操作进展

  • 初步的资源管理程序出现,屏蔽了硬件处理细节
  • I/O中断出现,实现了CPU与I/O设备的并行
  • 磁带设备出现
    • 卡片与纸带等机械输入方式得以提高
    • 磁盘文件系统形成
    • I/O效率还是不支持多道程序切换

操作系统与自动化操作控制

  • 电子计算速度与机械I/O速度的矛盾
    • 设备在慢慢输,CPU在等
  • 在程序执行过程中能否同时输入作业,重叠时间
    • 需要多道程序同时执行
    • 程序切换需要高速的外存储设备
  • 磁盘设备出现
    • 计算机操作系统浓墨登场,实现了计算机系统的自动化控制

计算机操作系统

corresponding slide-ch1.5

操作系统的概念

  • 操作系统(Operating System),简称OS
  • OS是计算机系统最基础的系统软件,管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好运行环境
  • OS是计算机系统的公共软件基础设施,所有应用程序共用OS服务,且OS内核是反应式reactive机制(中断驱动的)

操作系统

  • 操作系统是方便用户、管理和控制计算机软硬件资源的系统程序集合,在整个计算机系统中具有承上启下的地位
    • 从用户角度看,OS管理计算机系统的各种资源,扩充硬件的功能,控制程序的执行
    • 从人机交互看,OS是用户与机器的接口,提供良好的人机界面,方便用户使用计算机
    • 从系统结构看,OS是一个大型软件系统,其功能复杂,体系庞大,采用层次式、模块化的程序结构

操作系统的组成

  • 进程调度子系统
  • 进程通信子系统
  • 内存管理子系统
  • 设备管理子系统
  • 文件管理子系统
  • 网络通信子系统
  • 作业控制子系统

操作系统的类型

  • 从操作控制方式看
    • 多道批处理操作系统,脱机控制方式
    • 分时操作系统,交互式控制方式
      • 分时系统(Time-Sharing Systems):在一个系统中用户分时地使用同一台计算机
    • 实时操作系统
      • 实时系统(Real-Time Systems):计算机及时响应外部事件地请求并在规定时限内完成对该事件地处理,控制所有实时外设和实时任务协调一致地运行

操作系统的应用领域分类

  • 服务器操作系统
  • 并行操作系统
  • 网络操作系统
  • 分布式操作系统
  • 个人机操作系统
  • 手机操作系统
  • 嵌入式操作系统
  • 传感器操作系统

资源管理的视角

corresponding slide-ch1.6

计算机系统的资源

  • 硬件资源
    • 处理器、内存、外设
  • 信息资源
    • 数据、程序

管理计算机系统的软硬件资源

  • 处理器资源:那个程序占有处理器运行?
  • 内存资源:程序/数据在内存中如何分布?
  • 设备管理:如何分配、去配和使用设备?
  • 信息资源管理:如何访问文件信息?
  • 信号量资源:如何管理进程之间的通信?

屏蔽资源使用的底层细节

  • 驱动程序:最底层的、直接控制和监视各类硬件(或文件)资源的部分
  • 职责是隐藏底层硬件的具体细节,并向其他部分提供一个抽象的、通用的接口
  • 比如说:打印一段文字或一个文件,既不需知道文件信息存储在硬盘上的细节, 也不必知道具体打印机类型和控制细节

资源的共享方式

  • 独占使用方式
    • 如:打印机在一个时间段内只能被一个进程独立使用
  • 并发使用方式
    • 如:一个文件可以同时被多个进程一起读

资源分配策略

  • 静态分配方式:进程运行前一次拿到全部独占资源
    • 资源使用效率低
  • 动态分配方式:使用资源前临时申请
    • 可能产生竞争资源的死锁
    • 并发访问的难题-详见第六章
  • 资源抢占方式
    • 被抢夺资源的进程需要回滚执行

控制程序执行的视角

corresponding slide-ch1.7

多道程序同时计算

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

  • 单道算题工作
  • 两道程序同时工作

    宏观分析

  • 甲、乙两道程序
  • 独占计算机单道运行时均需1小时,占用CPU时间18分钟,CPU利用率为30%
  • 按多道程序设计方法同时运行,CPU利用率 50%,由于要提供36分钟的CPU时间,大约运行72分钟。考虑到OS调度开销,实际花费时间还要长些,如80分钟
  • 就处理两道作业而言,提高效率33%
  • 就单道作业而言,延长执行时间20分钟,即延长了33%的时间

磁盘结构

多道程序设计

  • 指让多个程序同时进入计算机的主存储器进行计算

    多道程序设计的特点

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

多道程序系统

多道程序系统的实现

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

多道程序系统的实现要点

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

操作控制计算机的视角

corresponding slide-ch1.8

计算机系统操作方式

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

脱机作业控制方式

  • OS:提供作业说明语言
  • 用户:编写作业说明书,确定作业加工控制步骤,并与程序数据一并提交
  • 操作员:通过控制台输入作业
  • OS:通过作业控制程序自动控制作业的执行
  • 例:批处理OS的作业控制方式,UNIX的shell程序,DOS的bat文件

联机作业控制方式

  • 计算机:提供终端(键盘/显示器)
  • 用户:登录系统
  • OS:提供命令解释程序
  • 用户:联机输入操作控制命令,直接控制作业步的执行
  • 例:分时OS的交互控制方式

命令解释程序

  • 命令解释程序:接受和执行一条用户提出的对作业的加工处理命令
  • 当一个新的批作业被启动,或新的交互型用户登录进系统时,系统就自动地执行命令解释程序,负责读入控制卡或命令行,作出相应解释,并予以执行
  • 会话语言:可编程的命令解释程序
  • 图形化的命令控制方式
  • 多通道交互的命令控制方式

命令解释程序的处理过程

  • OS启动命令解释程序,输出命令提示符,等待键盘中断、鼠标点击、多通道识别
  • 每当用户输入一条命令(暂存在命令缓冲区)并按回车换行时,申请中断
  • CPU响应后,将控制权交给命令解释程序,接着读入命令缓冲区内容,分析命令、接受参数,执行处理代码

前台命令与后台命令

  • 前台命令执行结束后,再次输出命令提示符,等待下一条命令
  • 后台命令处理启动后,即可接收下条命令

人机交互的视角

corresponding slide-ch1.9

操作系统的人机交互部分

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

人机交互的初期发展

  • 交互式控制方式
    • 行命令控制方式:1960年代开始使用
    • 全屏幕控制方式:1970年代开始使用
  • 斯坦福研究所提出的发展计划
    • 始于1960年代,1980年代广泛应用
    • 强调人而不是技术人机交互的中心
    • 代表性成果:鼠标、菜单与窗口控制

人机交互发展

WIMP界面

  • 缘起:70年代后期Xerox的原型机Star
  • 特征:窗口(Windows) 、图标(Icons)、菜单(Menu) 和指示装置(Pointing Devices)为基础的图形用户界面WIMP
  • 得益:Apple最初采用并大力推动
  • 时间:1990年代开始广泛使用
  • 不足:不允许同时使用多个交互通道,从而产生人-机交互的不平衡

多媒体计算机

  • 缘起:1985年的MPC
  • 把音频视频、图形图像和人机交互控制结合起来,进行综合处理的计算机系统
  • 构成:多媒体硬件平台、多媒体OS 、图形用户接口、多媒体数据开发工具
  • 提供与时间有关的时变媒体界面,既控制信息呈现,也控制何时呈现/如何呈现
  • 人机交互界面需要使用多种媒体,同时支持多通道交互整合,改善用户体

虚拟现实系统

  • 缘起:1980年代的虚拟现实新型用户界面
  • VR通过计算机模拟三维虚拟世界,根据观察点、观察点改变的导航和对周围对象的操作,来模拟临境(身临其境)的感觉
  • 支持多通道交互整合,改善用户体验
  • 支持用户主动参与的高度自然的三维HCI,以及语音识别、头部跟踪、视觉跟踪、姿势识别等新型HCI 容许用户产生含糊和不精确的输入

新型人机交互

新型人机交互产品

  • 侧重多媒体技术的产品
    • 触摸式显示屏实现的桌面计算机,随意折叠的柔性显示屏制造的电子书,从电影院搬进客厅的3D显示器,使用红绿蓝光激光二极管的视网膜成像显示器
  • 侧重多通道技术的产品
    • 手写汉字识别系统,数字墨水笔,连续语音识别系统,摄像机/图像采集卡的手势识别,支持复杂姿势识别的多触点式触摸屏、基于传感器的捕捉用户意图的隐式输入

新型人机交互技术的热点

  • 智能手机的地理空间跟踪,可穿戴计算机、隐身技术、浸入式游戏等的动作识别,虚拟现实、遥控机器人、远程医疗等的触觉交互,呼叫由、 家庭自动化、语音拨号等的语音识别,语言障碍人士的无声语音识别,广告、网站、产品目录、杂志效用测试的眼动跟踪,语言或行动障碍人士意念轮椅的基于脑电波的人机界面等技术
  • 改善基于视觉的手势识别的精度和速度,探索虹膜、掌纹、笔迹、步态、语音、唇读、人脸、DNA等人类特征识别, 提高多通道整合,与无所不在计算或云计算等相关技术的融合与促进

程序接口的视角

corresponding slide-ch1.10

操作系统的程序接口

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

系统调用

系统调用的实现机制

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

系统调用的实现要点

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

系统调用的实现流程

  • 特权指令被封装在内核态,用户无法直接调用,由操作系统提供接口进行调用

Linux系统调用执行流程

操作系统提供的程序接口

应用程序、库函数、系统调用的调用关系链

两个空间与模式切换

CPU在进程之间切换

用户模式与内核模式之间的切换

  • 实质上就是改变模式位mode bit的值

系统结构的视角

corresponding slide-ch1.11

操作系统软件

操作系统软件的规模

  • 在计算机软件发展史上,OS是第一个大规模的软件系统
  • 1960年代,由OS开发所衍生的体系结构、模块化开发、测试与验证、演化与维护等研究,直接催生了软件工程这一新兴研究领域(另一个催生来源是DB应用引发的需求与规格)
    • 早期促进软件工程发展的三个领域:OS、数据库、编译系统
  • OS作为大型软件,结构设计是关键

操作系统软件的结构设计

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

操作系统内核

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

单内核与微内核


微内核结构


微内核结构举例

安卓系统架构

C/S Model

操作系统实现的一种层次式结构

操作系统实现的第二种层次结构