操作系统_Chapter1
第1章 计算机系统概述
1.1 基本构成
- 4个主要的结构化部件:
- 处理器(Processor)
- 内存(Main memory)
- 输入/输出模块(I/O modules)
- 系统总线(System bus)
- CPU内部
- PC(Program Counter,程序计数器):保存下一次要取的指令地址
- IR(Instruction Register,指令寄存器):保存取到的指令
- AC(Accumulator,累加器):保存计算产生的中间结果
- MAR(Memory Address Register,存储器地址寄存器):确定下一次读/写的存储器地址
- MBR(Memory Buffer Register,存储缓冲寄存器):存放写入/读出存储器的数据
- IO/AR(I/O Address Register,输入/输出地址寄存器):确定一个特定I/O设备
- IO/BR(I/O Buffer Register,输入/输出缓冲寄存器):用于I/O模块和处理器交换数据
1.2 指令的执行
- 处理器执行的程序有一组保存在存储器中的指令组成。
- 单个指令所需要的处理称为一个指令周期:取指阶段和执行阶段
- 所有指令和数据长度均为16位,使用16位的单元或字长组织存储器
- 指令格式有4位是操作码,最多有2的4次方(16)种不同操作码,定义了处理器执行的操作,后12位是访问的数据地址
1.3 中断
- 中断的分类:
- 程序中断:在某些条件下由执行的结果产生(算术溢出、除数为0)
- 时钟中断:处理器内部的计时器产生
- I/O中断:由I/O控制器产生,通知正常完成或错误条件
- 硬件失效中断:掉电或存储器奇偶校验错等故障发生
1.3.1 中断和指令周期
- 中断处理程序(interrupt handler):外部设备的I/O模块给处理器发送中断请求信号,处理器暂停当前程序的处理,转去处理服务于特定I/O设备的程序。
- 为适应中断产生,指令周期中增加一个中断阶段
- 中断处理必须执行额外的指令以确定中断的性质和采用何种操作,与简单等待I/O操作完成花费更多时间相比,中断能使I/O操作与处理器并发执行,提高处理器效率。
1.3.2 中断处理
- 当I/O设备完成一次I/O操作时,发生下列硬件事件:
- 设备给处理器发送中断信号
- 处理器结束当前指令的执行
- 处理器确认存在未响应中断,并给提交中断的设备发送确认信号
- 处理器保存从中断点恢复当前程序所需要的信息(把程序状态字PSW和PC压入控制栈)
- 根据中断,处理器加载新PC值
- 新PC值意味处理器进行下一指令周期,控制权被转交到中断处理程序,执行以下软件操作:
- 保存剩余的处理状态信息(PC、PSW、寄存器的内容保存到系统栈)
- 处理中断
- 恢复处理状态信息(被保存的寄存器值从栈中释放并恢复到寄存器中)
- 恢复旧PSW和PC
1.3.3 多个中断
- 处理多个中断的两种方法:
- 正在处理一个中断时,禁止再发生中断(对其他中断信号不响应,保持挂起)
- 定义中断优先级,允许高优先级打断低优先级中断的运行
- 中断服务例程:Interrupt Service Routine,ISR
1.4 存储器的层次结构
存储器三个重要特性:价格、容量、访问时间
存储器层次结构(memory hierarchy):从上往下看,
层次 具体存储器 板上存储器 寄存器—>高速缓存—>内存 板外存储器 磁盘、CD-ROM、CD-RW、DVD-RW、DVD-RAM、Blu-Ray 离线存储器 磁带 从上往下:
- 每“位”的价格递减
- 容量递增
- 存取时间递增
- 处理器访问存储器的频率递减
命中率(hit ratio):对较快存储器(如高速缓存)的访问次数与对所有存储器的访问次数的比值。
板上存储器通常是易失性,采用半导体技术,数据表现形式为byte或word
非易失性外部存储器又称,二级存储器(secondary memory)或辅助存储器(auxiliary memory),数据存储形式为file或record
1.5 高速缓存
1.5.1 动机
- 处理器速度提高快于存储器访问速度的提高
- 解决方法:在处理器和内存之间提供一个容量小且速度快的存储器,称为高速缓存(cache)
1.5.2 高速缓存原理
- 高速缓存包含一部分内存数据的副本,当处理器读取存储器时:
- 检查改字是否在高速缓存中
- 如果在,传递给处理器
- 如果不在,由固定数目的字节组成的一块内存数据读入高速缓存,再传递给处理器
- 根据访问局部性原理(principle of locality),位于被访问字附件的数据在近期被访问到的概率较大
- 内存的系统结构:
- 由2^n个可寻址的字组成,每个字有唯一的n位地址
- 划分成固定的块(block),每块包含K个字,即共有M=2^n/K个块
- 高速缓存的系统结构:
- 有C个存储槽(slots/lines),每个槽有K个字,槽的数量远小于存储器中块的数量(C<<M)
- 由于一个槽不能唯一或永久对应于一个块,每个槽中有个标签,标识当前存储的是哪个块
1.5.3 高速缓存设计
- 高速缓存大小(cache size):适当小的高速缓存会对性能产生明显的影响
- 块大小(block size):即高速缓存与内存之间的数据交换单位,当块大小从很小增长到很大时,由于局部性原理,命中率首先会增加;当块更大时,新近取到的数据被用到的可能性开始小于被疑出缓存的数据再次被用到的可能性,命中率开始降低。
- 映射函数(mapping function):确定这个块将占据哪个高速缓存单元
- 置换算法(replacement algorithm):选择置换那些在不久的将来被访问的可能性最小的块
- 写策略(write policy):规定何时发生存储器写操作
- 每当块被更新后就发生写操作
- 只有当被置换时才发生写操作(会使内存处于过时状态)
1.6 直接内存存取
- 可编程I/O(programmed I/O)
- 处理器正在执行程序遇到一个与I/O相关的指令时,通过给相应的I/O模块发命令执行这个指令
- 不会中断处理器,处理器轮巡检查I/O操作是否完成
- 中断驱动I/O(interrupt-driven I/O)
- 处理器给I/O模块发送I/O命令,然后处理器继续其他工作
- 当I/O模块准备好与处理器交换数据时,打断处理器的执行并请求服务
- 处理器仍然主动干预在存储器和I/O模块之间的数据传送
- 直接内存存取(Direct Memory Access,DMA)
- DMA功能由系统总线中的一个独立模块完成,也可以并入一个I/O模块中
- 处理器读或写一块数据时,给DMA模块产生一条命令,之后处理器继续其他工作
- DMA模块直接与存储器交互,传送数据块,完成后向处理器发送中断信号。
- 只有在开始传送和结束时处理才会参与(两次中断)
操作系统_Chapter1
http://example.com/2022/09/09/操作系统-Chapter1/