【计算机操作系统】第一章.计算机系统概述
文章目录
- 第一章.计算机系统概述
-
-
1.基本构成
-
2.指令的执行
-
3.中断
-
- 3.1 目的
- 3.2 类型
- 3.3 中断控制流
- 3.4 中断处理
- 3.5 多个中断
-
4.存储器的层次结构
-
- 4.1 高速缓存
-
5.直接内存存取(DMA)
-
第一章.计算机系统概述
1.基本构成
计算机的四个主要组件
- 处理器
- 内存
- I/O模块
- 系统总线

2.指令的执行
基本指令周期,指令处理包括2步:
- 处理器从存储器一次读一条指令
- 执行每条指令

处理器中的PC保存下一条指令的地址,IR保存当前即将执行的指令
3.中断
允许“其他模块”(I/O、存储器)中断“处理器”正常处理过程的机制
3.1 目的
提高CPU利用率,防止一个程序垄断CPU资源
3.2 类型
- 1)程序中断
- 2)时钟中断
- 3)I/O中断
- 4)硬件失效中断

3.3 中断控制流

I/O程序:
- 指令序列4:为实际I/O作准备
- I/O命令:如果不使用中断,执行命令时,程序必须等待I/O设备执行请求的函数(或周期性地检测I/O设备的状态或轮询I/O设备)。程序可能通过简单地重复执行一个测试操作的方式进行等待,以确定I/O操作是否完成
- 指令序列5:操作完成,包括设置成功或失败标签
中断:短I/O等待
- 利用中断功能,处理器可以在I/O操作的执行过程中执行其它指令:用户程序到达系统调用WRITE处,但涉及的I/O程序仅包括准备代码和真正的I/O命令。在这些为数不多的几条指令执行后,控制返回到用户程序。在这期间,外部设备忙于从计算机存储器接收数据并打印。这种I/O操作和用户程序中指令的执行是并发的
- 当外部设备做好服务的准备时,也就是说,当它准备好从处理器接收更多的数据时,该外部设备的I/O模块给处理器发送一个中断请求信号。这时处理器会做出响应,暂停当前程序的处理,转去处理服务于特定I/O设备的程序,这个程序称为中断处理程序。在对该设备的服务响应完成后,处理器恢复原先的执行
中断:长I/O等待
- 对于如打印机等较慢的设备来说,I/O操作比执行一系列用户指令的时间长得多,因此在下一次I/O操作时,前一次I/O可能还为执行完。在上图c)中,第二次WRITE调用时,第一次WRITE的I/O还为执行完,结果是用户程序会在这挂起,当前面I/O完成后,才能继续新的WRITE调用
3.4 中断处理
中断激活了很多事件,包括处理器硬件中的事件及软件中的事件

被中断程序的信息保存与恢复:

3.5 多个中断
在处理一个中断的过程中,可能会发生另一个中断,处理多个中断有2种方法
- 当正在处理一个中断时,禁止再发生中断 :如果有新的中断请求信号,处理器不予理睬。通常在处理中断期间发生的中断会被挂起,当处理器再次允许中断时再处理
- 定义中断优先级 :允许高优先级的中断处理打断低优先级的中断处理程序的允许

4.存储器的层次结构

从上往下看,会出现以下情况:
- 每“位”的价格递减
- 容量递增
- 存取时间递增
- 处理器访问存储器的频率递减(有效的基础是访问的局部性原理)
4.1 高速缓存
内存的存储周期跟不上处理器周期,因此,利用局部性原理在处理器和内存间提供一个容量小而速度快的存储器,称为高速缓存

上图中高速缓存通常分为多级:L1、L2、L3
5.直接内存存取(DMA)
针对I/O操作有3种可能的技术
- 可编程(程序控制)I/O(需处理器干预)
- 中断驱动I/O(需处理器干预)
- 直接内存存取
当处理器正在执行程序并遇到一个I/O相关的指令时,它通过给相应的I/O模块发命令来执行这个指令:
1)使用可编程I/O时,I/O模块执行请求的动作并设置I/O状态寄存器中相应的位,但它并不进一步通 知处理器,尤其是它并不中断处理器 ,因此处理器在执行I/O指令后,还需定期检查I/O模块的状态。为了确定I/O模块是否做好了接收或发送更多数据的准备,处理器等待期间必须不断询问I/O模块的状态,这会严重降低整个系统的性能
2)如果是中断驱动I/O,在给I/O模块发送I/O命令后,处理器可以继续做其它事。当I/O模块准备好与处理器交换数据时,会中断处理器并请求服务,处理器接着响应中断,完成后再恢复以前的执行过程
尽管中断驱动I/O比可编程I/O更有效,但是处理器仍需要主动干预在存储器和I/O模块直接的数据传送,并且任何数据传送都必须完全通过处理器 。由于需要处理器干预,这两种I/O存在下列缺陷:
- I/O传送速度受限于处理器测试设备和提供服务的速度(数据传送受限于处理器)
- 处理器忙于管理I/O传送工作,必须执行很多指令以完成I/O传送(处理器为数据传送需要做很多事)
3)因此,当需要移动大量数据时,需要使用一种更有效的技术:直接内存存取。DMA功能可以由系统总线中一个独立的模块完成,也可以并入到一个I/O模块中。
DMA的工作方式如下,当处理器需要读写一块数据时,它给DMA模块产生一条命令,发送下列信息:
- 是否请求一次读或写
- 涉及的I/O设备的地址
- 开始读或写的存储器单元
- 需要读或写的字数
之后处理器继续其它工作。处理器将这个操作委托给DMA模块,DMA模块直接与存储器交互,这个过程不需要处理器参与。当传送完成后,DMA模块发送一个中断信号给处理器。因此只有在开始和结束时,处理器才会参与

