计算机系统

计算机系统由硬件和软件两部分组成。

  • 硬件:包括 CPU、内存、外存及各种外部设备
  • 软件:用于管理硬件资源并完成具体任务,主要包括:
    • 系统软件:操作系统,编译汇编程序
    • 支撑软件:数据库管理系统和开发工具。
    • 应用软件:面向实际需求编制的程序,直接为用户完成特定应用功能。

操作系统概念

用户观点

从用户角度看,操作系统是用户与计算机硬件之间的接口。

  • 命令接口:允许用户通过命令直接向计算机发出操作请求,如启动程序、管理文件等。
  • 程序接口:为应用程序提供一组系统调用,使程序能够间接使用计算机硬件资源。

资源管理观点

从资源管理角度看,操作系统是计算机系统资源的管理者。

  • 处理器资源:进行进程管理与调度,合理分配 CPU 使用时间。
  • 存储器资源:进行内存管理,负责内存的分配、回收与保护。
  • I/O设备资源:进行设备管理,协调和控制各类 I/O 设备的使用。
  • 外存资源:进行文件管理,实现数据的存储、组织和访问。

虚拟机观点

从虚拟机观点看,操作系统在裸机硬件之上构造了一台功能更强、使用更方便的扩展机器(虚拟机)。

操作系统通过对硬件资源的封装与抽象,向用户和应用程序提供统一、简化的使用接口,使用户无需直接操作复杂的硬件细节即可使用计算机系统。

操作系统发展

初期阶段

手工操作阶段

用纸带卡片进行打孔输入输出

脱机I/O技术

减少主机CPU空闲时间,提高IO速度

单道批处理系统

  • 作业的概念:作业=程序+数据+作业说明书

作业说明书用于向操作系统描述作业的控制信息,如所需资源、输入输出方式及执行要求。

  • 基本原理

系统将多个作业预先输入到外存中,由监控程序按顺序自动将作业装入内存并依次执行。

  • 单道批处理系统的性能分析

由于内存中始终只保留一个作业,CPU 在作业进行 I/O 操作时往往处于空闲状态,系统资源利用率较低。

操作系统的形成

多道批处理系统(提高系统吞吐量和资源利用率)

通过在内存中同时存放多个作业,使用例如I/O 与 CPU 计算的并行等,多种系统资源的重叠利用来实现作业之间的交替执行,从而提高 CPU 利用率和系统吞吐量。但CPU在一个时间只能操作一个作业,通过操作系统调度器自行决定。

  • 缺点:用户只能事先提交作业,运行过程中无法与程序进行交互,出错往往要等整个作业结束后才能发现。

分时系统(提高用户交互性和响应速度)

时间片是一个终端用户作业能连续使用 CPU 的最长时间。

将 CPU 时间划分为若干时间片,轮流分配给多个用户或进程,使用户获得良好的交互体验。

用户体验上任务是连续的,实际上是CPU快速在多个任务之间跳转。

强调资源共享,用户交互

实时系统(满足时间约束和确定性响应)

以满足严格的时间约束为首要目标,要求系统对外部事件在规定时限内作出确定性的响应。例如火星车空间站

操作系统的成熟

微机操作系统

主要运行在个人计算机上,面向终端用户

  • 单用户单任务:MS-DOS
  • 单用户多任务:Windows,macOS(单用户使用场景下)
  • 多用户多任务:Unix,Linux

网络操作系统

以网络为核心,为多台计算机提供资源共享与通信服务的操作系统。配置在网络中用于管理网络通信和共享资源,协调各计算机上任务的运行,并向用户提供统一的、有效方便的网络接口的程序集合。

多个独立计算机,无公共内存,具备消息通信机制

分布式系统

管理多个通过网络连接的计算机,使其在用户看来像一台统一的计算机系统。

用户感知的是一个整体系统,有一个分布式操作系统对资源进行全局和动态管理控制,系统和资源对用户是透明的。

可扩展性,增加性能,高可靠性

嵌入式操作系统

运行在嵌入式设备中,为特定功能服务的操作系统

Android,IOS,黑莓,pSOS,QNX,LynxOS

操作系统内核结构

整体式结构

将操作系统的主要功能模块(进程管理、存储管理、文件系统、设备驱动等)统一集成在一个内核空间中运行。每个过程都有接口定义,可以互相调用。接口简单效率高。

缺点:没有模块独立性,难以维护

实例:MS-DOS、Linux、传统 Unix

模块化结构

在整体式内核基础上,将内核划分为若干相对独立的模块,支持按需加载和卸载。模块之间可以任意调用。

缺点:模块关系复杂,OS结构不清晰

实例:Choices系统,Linux(Loadable Kernel Modules)

层次结构模型

将操作系统划分为若干层次,每一层只能调用其下一层提供的服务。每一层之间的模块只能单向调用。 缺点:系统开销增加导致效率降低

实例:THE 操作系统(Dijkstra 提出),Unix

微内核结构模型

将内核功能最小化,仅保留最基本机制,如:

  • 进程/线程管理
  • 地址空间管理(低级存储器管理)
  • 中断和陷入处理
  • 进程间通信(IPC)

其它核心:其余服务(文件系统、设备驱动等)运行在用户态

特点:内核精简,服务以用户进程形式存在,依赖消息传递进行通信

缺点:IPC开销大,性能低于整体式内核

例子:Mach,Minix,QNX,win NT,鸿蒙

中断

中断的基本概念

在程序运行过程中,当系统外部、系统内部或当前运行程序本身出现紧急事件时,处理器会暂停当前程序的执行,自动转入相应的中断服务程序(ISR)进行处理; 待事件处理完毕后,再返回被中断的程序继续执行。 这一完整过程称为中断处理。

采用中断系统的主要目的

现代计算机引入中断机制,主要是为了:

  1. 提高系统效率

    协调 CPU 与外设之间速度不匹配的问题,避免处理器空等。

  2. 保证系统可靠运行

    当发生越界访问、非法操作等异常时,及时中断并采取保护措施。

  3. 满足实时处理需求

    在实时系统中,处理器可随时响应外部设备的随机中断请求。

  4. 提供故障处理与现场保护手段

    一旦检测到硬件或系统错误,立即中断并记录现场,为后续处理提供依据。

中断与异常的基本分类

中断会改变 CPU 的指令执行顺序,通常与 CPU 内部或外部硬件信号有关。

从 产生方式和时序特性 看,可分为两大类:

  • 中断(Interrupt):

    一般是异步的,由外部事件触发,与当前执行指令无关。

  • 异常(Exception):

    一般是同步的,在执行特定指令或出现错误时由 CPU 产生。

中断的进一步分类

按是否可屏蔽分类

  • 可屏蔽中断:可由程序控制是否响应,屏蔽时 CPU 忽略中断请求,I/O 设备中断通常属于可屏蔽中断
  • 非屏蔽中断:不能被程序屏蔽,必须立即处理,数量少、紧急性高,例如:断电、电源故障等

按中断源分类

硬件中断

  • 外部中断:由外部设备产生,如键盘中断、定时器中断、磁盘中断等,是异步的
  • 内部中断:由硬件故障或运算异常引起,如除零、溢出、掉电等,是不可屏蔽的

软件中断

  • 并非真正由硬件触发
  • 由程序执行特定指令产生
  • 常用于用户态向内核态切换,实现系统调用

3. 按中断的主动性分类

  • 自愿性中断(访管中断):用户程序主动请求操作系统服务,如 I/O 操作、进程创建、内存分配等。
  • 程序中断:程序执行过程中出现异常或紧急情况,CPU 被动中断当前程序并处理。例如非法指令,越界等问题

异常的分类(重点)

异常是由 CPU 在执行指令过程中检测到的同步事件。

处理器探测异常

根据异常发生时 EIP 保存的地址不同,分为三类:

故障(Fault)

  • EIP 指向引发异常的指令
  • 异常处理结束后,该指令可能重新执行
  • 例:缺页异常

陷阱(Trap)

  • EIP 指向下一条指令
  • 不需要重新执行当前指令
  • 常用于调试(断点、单步执行)

异常中止(Abort)

  • 严重错误,无法确定出错指令位置
  • 通常导致进程被强制终止
  • 例:硬件故障、系统表损坏

编程异常(软中断)

  • 由程序员显式触发
  • 使用 intint3intobound 等指令
  • CPU 将其作为陷阱处理
  • 主要用途:
    • 执行系统调用
    • 向调试程序报告特定事件