计算机操作系统(1) 计算机操作系统概述
2023-08-09 14:53:19 # NJU # 计算机操作系统

第一章 计算机操作系统概述

1.1 计算机系统

1.1.1 计算机系统概述

电子计算机

电子数字计算机,是一种能够自行按照已设定的程序进行数据处理的电子设备

电子数字计算机,是软件与硬件相结合、面向系统、侧重应用的自动化求解工具

冯诺依曼结构

image-20220915144230717

1945年6月冯·诺伊曼等发表了著名的“101页报告”,指出计算机分为运算器、逻辑控制器、存储器、输入设备和输出设备五大部件,发展至今,大多数机器结构并未突破冯·诺依曼结构。

计算机发展历史

image-20220915144320055

计算机系统的组成

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

计算机系统的用户视图

image-20220915144440410

1.1.2 计算机硬件系统

计算机硬件系统的组成

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

存储程序计算机

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

存储程序计算机的结构

image-20220915145542231

总线

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

总线的组成

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

总线类型

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

系统总线实例: 南北桥

image-20220915152426064

片上系统(SoC)

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

中央处理器(CPU)

中央处理器是计算机的运算核心(Core)和控制单元(Control Unit),主要包括:

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

处理器与寄存器

image-20220915154154788

存储器的组织层次

image-20220915154421311

  • L1 Cache与CPU同频,与寄存器一样连接在内部总线,访问速度也与寄存器同步,可用来存储最关键的数据,对CPU性能影响最大
  • L2 Cache多用在CPU现场,连接在内部总线上,考虑实现成本也可连接在系统总线上,用于存储最频繁访问的主存储器数据,加快处理速度
  • L3 Cache一般用于存放游戏数据,或多媒体计算机/虚拟现实系统的数据

外围设备及其分类

  • 输入/输出设备
  • 存储设备
  • 网络设备(机机通信设备)

I/O控制方式

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

1.1.3 计算机软件系统

计算机软件系统的组成

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

软件扩充计算机系统功能

  • 操作系统为程序员增加了一个叫做系统调用的访问集合,它们屏蔽了程序访问硬件的细节
  • 系统调用加上允许用户使用的机器指令子集,构成了一个扩展的机器指令集,使程序员的编程可以侧重于CPU的计算和具体任务的解决

image-20220915195804272

软件开发的不同层次

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

计算机程序的解译执行过程

image-20220915195853406

可执行程序是指在操作系统环境下可执行的程序

图中给出的是裸机上计算机程序的解译执行过程,现代计算机系统在实现上往往是基于虚拟机的,即基于一个汇编指令集合提供计算功能。这种情况下,目标代码变成了单纯的汇编指令,而汇编程序的功能则变成了程序优化

1.2 计算机操作系统

1.2.1 计算机操作技术的发展

手工操作阶段

  • 开关表示,按钮控制,亮灯显示

    • 问题: 手工操作速度与电子计算速度不匹配

    image-20220915201607061

  • 装入程序的引进

    • 引入卡片和纸带描述程序指令和数据
    • 引入装入程序(Loader)
      • 自动化执行程序装入,必要时进行地址转换
      • 通常存放在ROM中
    • 计算机开机后自动导入主存,装入程序从纸带机或卡片机上读取程序和数据,然后循环装入程序

    image-20220915201841585

  • 引入汇编语言

    • 实现机器指令的符号化

    • 对计算机的操作变为汇编和执行两个阶段

      image-20220915202348248

  • 引入高级语言

    • 操作扩展为编译、链接、执行

      image-20220915202455494

半自动化控制方式

  • 简单批处理系统的操作控制
    • 引入作业控制语言,用户编写作业说明书,描述一次对计算机求解作业控制的过程
    • 操作员控制计算机成批输入作业,然后排队执行
    • 这一方式明显缩短了手工操作时间,提高了计算机系统的使用效率
  • 简单批处理系统的操作进展
    • 初步的资源管理程序出现,屏蔽了硬件处理细节
    • I/O中断技术已使CPU与外围设备具备了并行工作的能力,支持了概念上多道程序设计实现的可能性
    • 磁带设备出现
      • 卡片与纸带等机械输入方式得以提高
      • 磁盘文件系统形成
      • I/O效率还是无法支撑多道程序切换

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

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

1.2.2 操作系统及其分类

操作系统的概念

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

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

操作系统

操作系统是方便用户、管理和控制计算机软硬件资源的系统程序集合,在整个计算机系统中具有承上启下的地位

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

操作系统的组成

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

操作系统的类型

从操作控制方式看

  • 多道批处理操作系统,脱机控制方式
    • 把批中的作业预先输入作业队列中,由操作系统按照作业说明书的要求来调度和控制作业执行,大幅减少人工干预,形成自动转接和连续处理的作业流
    • 最先采用多道程序设计技术,根据预先设定的调度策略选择若干作业并发地执行
  • 分时操作系统,交互式控制方式
    • 多个联机用户同时使用一个计算机系统,在各自终端上进行交互式会话,程序、数据和命令均在会话过程中提供,以问答方式控制程序运行
    • 系统把处理器的时间划分成时间片轮流分配给各个联机终端,若时间片用完则产生时钟中断,将控制权转至操作系统并重新进行调度
  • 实时操作系统
    • 当外部事件或数据产生时,能够及时对其予以接受并以足够快的速度进行处理
    • 可以提供及时响应和高可靠性

从应用领域看

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

1.3 深入观察操作系统

1.3.1 资源管理的角度

计算机系统的资源

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

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

问题:

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

屏蔽资源使用的底层细节

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

资源的共享方式

  • 独占使用方式
    • 如: 打印机在一个时间段内只能被一个进程独立使用
    • 资源分配方式
      • 静态分配: 进程运行前一次性拿到全部独占资源
        • 资源使用率低
      • 动态分配: 使用资源前临时申请
        • 可能产生竞争资源的死锁
      • 资源抢占式分配: 操作系统可以根据需求剥夺正在被使用的资源
        • 被抢夺资源的进程需要执行回滚,实现代价大
  • 并发使用方式
    • 如: 一个文件可以同时被多个进程一起读

资源管理技术

复用、虚拟和抽象是三种基本的资源管理技术

  • 复用技术可以创建虚拟资源以解决物理资源数量不足的问题,包括空分复用共享和时分复用共享
  • 虚拟技术是对资源进行转化、模拟或整合,把一个或多个物理资源转变成一个或多个逻辑上的对应物
  • 操作系统可以对物理资源进行抽象,任何一种特定的硬件资源都有一个接口和一组复杂的基本操作
    • 资源抽象是指通过编制软件来屏蔽硬件资源的物理特性和实现细节,简化对硬件资源的操作、控制和使用

三个基础抽象

基于资源,现代操作系统引入了三个核心概念: 进程、虚存、文件,形成了三个最基础的抽象

  • 进程抽象—是对已进入主存正在运行的程序在处理器上操作的状态集的抽象
    • 操作系统提供进程调度和上下文切换功能
  • 虚存抽象—是对物理主存的抽象,进程可获得一个硕大的连续地址空间来存放可执行程序和数据,可使用虚拟地址来引用物理主存单元
  • 文件抽象—是对设备(磁盘)的抽象,通过将文件中的字节映射到存储设备的物理块中来实现文件抽象

1.3.2 程序控制的角度

多道程序设计

  • CPU速度与I/O速度不匹配的矛盾非常突出
  • 多道程序设计(multiprogramming)允许多个程序同时进入计算机系统的主存,通过竞争处理器资源获得交替执行
  • 是操作系统的核心功能,中断技术和硬盘为其实现提供了支撑

多道程序设计的特点

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

多道程序系统的实现

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

多道程序系统的实现要点

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

1.3.3 操作控制计算机的角度

计算机操作控制方式

  • OS规定了合理操作计算机的工作流程

  • OS的操作接口——系统程序

    • 为用户提供操作控制计算的所有服务
  • OS的两类作业级接口
    • 脱机作业控制方式: 作业控制语言
    • 联机作业控制方式: 操作控制命令

脱机作业控制方式

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

联机作业控制方式

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

命令解释程序

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

命令解释程序的处理过程

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

前台命令与后台命令

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

1.3.4 人机交互的角度

1.3.5 程序接口的角度

操作系统的程序接口

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

系统调用

程序的运行空间分为内核空间和用户空间,程序各自按不同的特权运行

系统调用把应用程序的访问请求传送至内核,调用相应的服务例程完成所需处理,再将处理结果返回给应用程序

系统调用的作用

  • 内核可以基于权限和规则对资源访问进行裁决,保证系统的安全性
  • 系统调用对资源进行抽象,提供一致性接口,避免用户在使用资源时发生错误,且使编程效率大大提高

系统调用的实现机制

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

系统调用的实现要点

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

系统调用的实现流程

image-20220919105348293

按号定位的前提

  • 各数据结构的尺寸相同
  • 各数据结构按号连续排列

传递参数的方法

  • 陷入指令自带参数,可以规定陷入指令之后的若干单元存放参数,叫做直接参数;或者在指令之后紧邻的单元中存放参数的地址,叫做间接参数
  • 通过CPU的通用寄存器传递参数,该方法不适用于传递大量参数,可以在主存的某个区或表中存放参数,将其首地址送入寄存器,实现参数传递
  • 在主存中开辟专用堆栈区传递参数

Linux系统调用执行流程

image-20220919110641932

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

image-20220919110743072

例:read系统调用的执行步骤

int read(int fd, char *buf, int n)

read 从文件描述符 fd 读 n 字节的内容写入 buf,返回值是成功读取的字节数。

image-20220919111236909

CPU进程间切换

image-20220919111438839

模式切换

image-20220919111530279

1.3.6 系统结构的角度

操作系统软件的结构设计

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

操作系统内核

  • 单内核:内核中各部件杂然混居的形态,始于1960年代,广泛使用;如Unix/Linux,及Windows(自称采用混合内核的CS结构)

  • 微内核:1980年代始,强调结构性部件与功能性部件的分离,大部分OS研究都集中在此

  • 混合内核:微内核和单内核的折中,较多组件在核心态中运行,以获得更快的执行速度
  • 外内核:尽可能减少内核的软件抽象化和传统微内核的消息传递机制,使得开发者专注于硬件的抽象化;部分嵌入式系统使用

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

image-20220919113717873 image-20220919113735045