操作系统(OS)(一)
计算机系统概述——Chapter One
目录
文章目录
计算机系统
- 电子数字计算机,是一种能够自行按照已设定的程序进行数据处理的电子设备。
- 电子数字计算机,是软件与硬件相结合、面向系统、侧重应用的自动化求解工具。
- 1946年,首台计算机
ENLAC
诞生与美国。 - 短短70年,计算机技术迅猛发簪,从科学技术、数据处理等应用领域,迅速扩展到实时控制、辅助设计、智能模拟等诸多领域。
- 今天计算机无所不在,深入社会的各个领域,深深改变了当今人类社会的组织行为。
计算机发展史
- 1945-:电子真空管、机器语言,应用于科学计算
- 1956-:晶体管、批处理控制、Fortran/COBOL,扩展到数据处理领域
- 1959-:集成电路、多道程序、操作系统/数据库/高级语言,应用领域继续拓展
- 1976-:大规模/超大规模集成电路,向快速化/小型化/系统化/网络化/智能化等方面发展
- 1980-:微机出现,廉价化促使应用领域快速膨胀
- 1990-:图形化人机交互技术,有善化推动了应用人群的快速扩展
- 2000-:移动计算的出现,计算无处不在
计算机系统的组成
- 计算机系统:包括硬件子系统和软件子系统
- 硬件:借助电、磁、光、机械等原理构造的各种物理部件的有机组合,是系统工作的实体
- CPU,主存储器,I/O控制系统,外围设备
- 软件:各种程序和文件,用于指挥计算机系统按指定的要求进行协同工作
- 包括系统软件、支撑软件的应用软件
- 关键系统软件是:操作系统与语言处理程序
计算机系统的用户视图
计算机硬件系统
计算机硬件系统的组成
- 中央处理器
- 运算单元
- 控制单元
- 主存储器
- 外围设备
- 输入设备
- 输出设备
- 存储设备
- 网络通信设备
- 总线
存储程序计算机
- 冯·诺伊曼等人再1946年总结并明确提出,被称为冯·诺伊曼计算机模型
- 存储程序计算机在体系结构上主要特点
- 以运算单元为u中心,控制流由指令流产生
- 采用存储程序原理,面向主存组织数据流
- 主存是按地址访问、线性编址的空间
- 指令由操作码和地址码组成
- 数据以二进制编码
存储程序计算机的结构
当中计算机引荐的经典结构和主流组织方式
总线及其组成
- 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是CPU、内存、输入输出设备传递信息的公用通道
- 计算机的各个部件通过总线相连接,外围设备通过想要接口电路再与总线相连接,从而形成了计算机硬件系统
- 按照所传输的信息种类,总线包括一组控制线、一组数据线和一组地址线
总线的类型
- 内部总线:用于CPI芯片内部连接各元件
- 系统总线:用于连接CPU、存储器和各种I/O模块等主要不见
- 通信总线:用于计算机系统之间通信
中央处理器(CPU)
- 中央处理器是计算机的运算核心(Core)和控制单元(Control Unit),主要包括:
- 运算逻辑部件:一个或多个运算器
- 寄存器部件:包括通用寄存器、控制与状态寄存器,以及告诉缓冲存储器(Cache)
- 控制部件:实现各部件间联系的数据、控制及状态的内部总线;负责对指令译码、发出为完成每条指令所要执行操作的控制信号、实现数据传输等功能的部件
处理器与寄存器
- 处理器:
- 运算单元
- 控制单元
- 内部总线
- PC/IR/Flag
- MAR/MDR
- 寄存器
- Cache
- IOAR/IODR
存储器的组织层次
外围设备及其控制
- 设备类型
- 输入设备
- 输出设备
- 存储设备
- 机机通信设备
- 设备控制方式
- 轮询方式:CPU忙式控制 + 数据交换
- 中断方式:CPU启动/终端 + 数据交换
- DMA方式:CPU启动/中断,DMA数据交换
计算机软件系统
- 系统软件:操作系统、实用程序、语言处理程序、数据库管理系统
- 操作系统实施对各种软硬件资源的控制
- 实用程序为方便所设,如文本编辑等
- 语言处理程序把用汇编语言/高级语言编写的程序,翻译成可执行的机器语言程序
- 支持软件由接口软件、工具软件、环境数据库,支持用户使用计算机的环境,提供开发工具
- 也可以认为是系统软件的一部分
- 应用软件是用户按其需要自行编写的专用程序
程序员的计算机系统视图
软件开发的不同层次
- 计算机硬件系统:机器语言
- 操作系统之资源管理:机器语言 + 广义指令(扩充了硬件资源管理)
- 操作系统值文件系统:机器语言 + 系统调用(扩充了信息资源管理)
- 数据库管理系统:机器语言 + 数据库语言(扩充了功能更强的信息资源管理)
- 语言处理程序:面向问题的语言
计算机程序的执行过程
计算机操作技术的发展
操作平台与操作系统
- 任何一台机器都有其操作平台与操作系统
- 例子:洗衣机
- 确定水量、洗衣时间、洗涤强度、洗衣粉;
- 启动按钮;
- 指示灯显示工作状态
- 这一方式可以总结为:开关表示,按钮控制,亮灯显示
- 操作平台的精细化和系统化,产生了操作系统
- 例子:洗衣机
- 计算机也不例外,由此产生了极为系统的计算机操作平台–计算机操作系统
计算机的手工操作
开关表示,按钮控制,亮灯显示
装入程序的引进
- 引入卡片和纸袋描述程序指令与数据
- 映入装入程序(Loader)
- 自动化执行程序装入,必要时进行地址转换
- 通常存放在ROM中
引入汇编语言后的计算机控制
引入高级语言后的计算机控制
简单批处理系统的操作控制
- 引入作业控制语言,用户边写作业说明书,描述对一次计算机求解(作业)的控制
- 操作员控制计算机成批输入作业,成批执行作业
- 这一方式明显缩短了手工操作的时间,提高了计算机系统利用率
- 这一阶段,磁带的出现,使得卡片与纸带等机械输入方式得以进一步提高
操作系统与自动化操作控制
- 电子计算速度与机械I/O速度的矛盾
- 你在输,我再等
- 在程序执行过程中能否同时输入作业,重叠时间
- 需要多到程序同时执行
- 程序切换需要高速的外存储设备
- 磁盘设备出现
- 计算机操作系统浓墨登场,实现了计算机系统的自动化控制
计算机操作系统
操作系统的概念
操作系统(Operating System),简称OS。OS是计算机系统最基础的系统软件,管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好运行环境。
操作系统
- 简而言之,操作系统是方便用户、管理和控制计算机软硬件资源的系统程序集合
- 从用户角度看,OS管理计算机系统的各种资源,扩充硬件的功能,控制程序的执行
- 从人机交互看,OS是用户与用户使用计算机,在整个计算机系统中具有承上启下的地位
- 从系统结构看,OS是一个大型软件系统,其功能复杂,体系庞大,采用层次式、模块化的程序结构
操作系统的组成
- 进程调度子系统
- 进程通信子系统
- 内容管理子系统
- 设备管理子系统
- 文件管理子系统
- 网络通信子系统
- 作业控制子系统
操作系统的类型
- 从操作控制方式看
- 多道批处理操作系统,脱机控制方式
- 分时操作系统,交互式控制方式
- 分时操作系统
- 从应用领域看
- 服务器操作系统、并行操作系统
- 网络操作系统、分布式操作系统
- 个人机操作系统、手机操作系统
- 嵌入式操作系统、传感器操作系统
资源管理的角度
计算机系统的资源
- 硬件资源
- 处理器、内存、外设
- 信息资源
- 数据、程序
管理计算机系统的软硬件资源
- 处理器资源:哪个程序占有处理器运行?
- 内存资源:程序/数据在内存中如何分布?
- 设备管理:如何分配、去配合使用设备?
- 信息资源管理:如何访问文件信息?
- 信号量资源:如何管理进程之间的通信?
屏蔽资源使用的底层细节
- 驱动程序:最底层的、直接控制和监视各类硬件(或文件)资源的部分
- 职责是隐藏底层硬件的具体细节,并向其他部分提供一个抽象的、通用的结构
- 比如说:打印一段文字或一个文件,既不需要知道文件信息存储在硬盘上的细节,也不必知道具体打印机类型和控制细节
资源的共享与分配方式
- 资源共享方式
- 独占使用方式
- 并发使用方式
- 资源分配策略
- 静态分配方式
- 动态分配方式
- 资源抢占方式
程序控制的角度
多道程序同时计算
- 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处理)
操作系统控制计算机的角度
计算机系统操作方式
- OS规定了合理操作计算机的工作流程
- OS的操作接口——系统程序
- OS提供给用户的功能级接口,为用户提供的解决操作计算机和计算共性问题的所有服务的集合
- OS的两类作业级接口
- 脱机作业控制方式:作业控制语言
- 联机作业控制方式:操作控制命令
脱机作业控制方式
- OS:提供作业说明语言
- 用户:编写作业说明书,确定作业加工控制步骤,并与程序数据一并提交
- 操作员:通过控制台输入作业
- OS:通过作业控制程序自动控制作业的执行
- 例:批处理OS的作业控制方式,UNIX的shell程序,DOS的bat文件
联机作业控制方式
- 计算机:提供终端(键盘/显示器)
- 用户:登陆系统
- OS:提供命令解释程序
- 用户:联机输入命令,直接控制作业步的执行
- 例:分时OS的交互控制方式
命令解释程序
- 命令解释程序:接受和执行一条用户提出的对作业的加工处理命令
- 当一个新的批作业被启动,或新的交互型用户登录进系统时,系统就自动地执行命令解释程序,负责读入控制卡或命令行,做出相对应解释,并予以执行
- 会话语言:可编程的命令解释程序
- 图形化地命令控制方式
- 多通道交互的命令控制方式
命令解释程序的处理过程
- OS启动命令解释程序,输出命令提示符,等待键盘中断/鼠标点击/多通道识别
- 每当用户输入一条命令(暂存在命令缓冲区)并按回车换行时,申请中断
- CPU响应后,将控制权交给命令解释程序,接着读入命令缓冲区内容,分析命令、接受参数,执行处理代码
- 前台命令执行结束后,再次输出命令提示符,等待下一条命令
- 后台命令处理启动后,即可接收下条命令
人机交互的角度
操作系统的人机交互部分
- 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
- 容许用户产生模糊和不精确的输入
程序接口的角度
操作系统的程序接口
- 操作系统的程序接口——系统调用
- 操作系统实现的完成某种特定功能的过程;为所有运行程序提供访问操作系统的接口
系统调用的实现机制
- 陷入处理机制:计算机操作系统中控制和实现系统调用的机制
- 陷入指令:也称访管指令,或异常中断指令,计算机系统为实现系统调用而引起处理器中断的指令
- 每个系统调用都事先规定了编号,并在约定寄存器中规定了传递给内部处理程序的参数
系统调用的实现要点
- 编写系统调用处理程序
- 设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,并包含系统调用自带参数的个数
- 陷入处理机制需避开现场保护区,以保持发生系统调用时的处理器现场
系统调用的实现流程
系统结构的角度
计算机操作系统软件的规模
- 在计算机软件发展史上,OS是单元格大规模的软件系统
- 1960年代,由OS开发所衍生的体系结构、模块化开发、测试与验证、演化与维护等研究,直接催生了软件工程这一新兴研究领域(另一个催生来源是DB应用引发的需求与规格)
- OS作为大型软件,结构设计是关键
操作系统软件的结构设计
- OS构件
- 内核、进程、线程、管程等
- 设计概论
- 模块化、层次化、虚拟化
- 内核设计是OS设计中最为复杂的部分
操作系统内核
- 单内核:内核中个部件杂然混居的形态,始于1960年代,广泛使用;如Unix/Linux,及Windows(自称采用混合内核的CS结构)
- 微内核:1980年代始,强调结构性部件与功能性不见得分离,大部分OS研究都集中在此
- 混合内核:微内核和单内核的折中,较多组件在核心态中运行,以及获得更快的执行速度
- 外内核:尽可能减少内核的软件抽象化和传统微内核的消息传递机制,使得开发者专注于硬件的抽象化;部分嵌入式系统使用