1.64k likes | 1.87k Views
Linux 操作系统分析与实践 第二讲:计算机系统硬件基础. 《 Linux 操作系统分析与实践 》 课程建设小组 北京大学 二零零八年春季 *致谢:感谢 Intel 对本课程项目的资助. 本讲主要内容. 概述 中央处理器( CPU ) 存储系统 中断机制 I/O 系统 时钟以及时钟队列 Linux 启动过程 SMP 及多核技术. 操作系统的硬件环境. 讨论操作系统对运行硬件环境的要求 讨论 操作系统设计者 考虑的硬件问题 中央处理器( CPU ) 存储系统 中断机制 I/O 系统 时钟以及时钟队列. 一、概述.
E N D
Linux操作系统分析与实践第二讲:计算机系统硬件基础Linux操作系统分析与实践第二讲:计算机系统硬件基础 《Linux操作系统分析与实践》课程建设小组 北京大学 二零零八年春季 *致谢:感谢Intel对本课程项目的资助
本讲主要内容 • 概述 • 中央处理器(CPU) • 存储系统 • 中断机制 • I/O系统 • 时钟以及时钟队列 • Linux启动过程 • SMP及多核技术
操作系统的硬件环境 讨论操作系统对运行硬件环境的要求 讨论操作系统设计者考虑的硬件问题 • 中央处理器(CPU) • 存储系统 • 中断机制 • I/O系统 • 时钟以及时钟队列
一、概述 任何系统软件都是硬件功能的延伸 操作系统直接依赖于硬件条件 OS的硬件环境以较分散的形式同各种管理相结合 实现操作系统时必须理解的 计算机基本结构 操作系统管理的重要资源
中央处理器(CPU) 专门设计了一系列基本机制: - 具有特权级别的处理器状态,能在不同特权级运行的各种特权指令 - 硬件机制使得OS可以和普通程序隔离 实现保护和控制
1.1 CPU的构成与基本工作方式 处理器由运算器、控制器、一系列的寄存器以及高速缓存构成 • 运算器实现指令中的算术和逻辑运算,是计算机计算的核心 • 控制器负责控制程序运行的流程,包括取指令、维护CPU状态、CPU与内存的交互等等
寄存器是指令在CPU内部作处理的过程中暂存数据、地址以及指令信息的存储设备寄存器是指令在CPU内部作处理的过程中暂存数据、地址以及指令信息的存储设备 在计算机的存储系统中它具有最快的访问速度 • 高速缓存处于CPU和物理内存之间 一般由控制器中的内存管理单元(MMU:Memory Management Unit)管理 访问速度快于内存,低于寄存器 利用程序局部性原理使得高速指令处理和低速内存访问得以匹配,从而提高CPU的效率
处理器中的寄存器 • 寄存器提供了一定的存储能力 • 速度比主存快得多 • 造价高,容量一般都很小 两类寄存器: • 用户可见寄存器,高级语言编译器通过算法分配并使用之,以减少程序访问主存次数 • 控制和状态寄存器,用于控制处理器的操作 由OS的特权代码使用, 以控制其他程序的执行
用户可见寄存器 • 机器语言直接引用 • 包括数据寄存器、地址寄存器以及条件码寄存器 • 数据寄存器(data register)又称通用寄存器 主要用于各种算术逻辑指令和访存指令 • 地址寄存器(address register)用于存储数据及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。如index register、segment pointer、stack pointer • 条件码寄存器保存CPU操作结果的各种标记位 如算术运算产生的溢出、符号等等
控制和状态寄存器 • 用于控制处理器的操作 • 大部分对于用户是不可见的 • 一部分可以在某种特权模式(由OS使用)下访问 常见的控制和状态寄存器: • 程序计数器(PC:Program Counter),记录将要取出的指令的地址 • 指令寄存器(IR:Instruction Register),包含最近取出的指令 • 程序状态字(PSW:Program Status Word),记录处理器的运行模式信息等等
1.2、特权指令和非特权指令 特权指令:只能由操作系统使用的指令 • 使用多道程序设计技术的计算机指令系统必须要区分为特权指令和非特权指令 • 处理器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态) • CPU如何知道当前运行的是操作系统还是一般应用软件?有赖于处理器状态的标识
1.3、处理器的状态 根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态 多数系统将处理器工作状态划分为管态和目态 管态:操作系统管理程序运行的状态,较高的特权级别,又称为特权态(特态)、核心态、系统态 目态:用户程序运行时的状态,较低的特权级别,又称为普通态(普态)、用户态 有些系统将处理器状态划分核心状态、管理状态和用户程序状态(目标状态)三种
实例:x86系列处理器(1) • 386、486、Pentium系列都支持4个处理器特权级别(特权环:R0、R1、R2和R3) • 从R0到R3特权能力依次降低 • R0相当于双状态系统的管态 • R3相当于目态 • R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系:
实例:x86系列处理器(2) 各个级别有保护性检查(地址校验、I/O限制) 特权级别之间的转换方式不尽相同 四个级别运行不同类别的程序: • R0-运行操作系统核心代码 • R1-运行关键设备驱动程序和I/O处理例程 • R2-运行其他受保护共享代码,如语言系统运行环境 • R3-运行各种用户程序 现有基于x86处理器的操作系统,多数UNIX、Linux以及Windows系列大都只用了R0和R3两个特权级别
1.4、程序状态字PSW(Program Status Word ) 在PSW中专门设置一位,根据运行程序使用指令的权限而设置CPU状态 • CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其他的特殊权力 • 条件码——反映指令执行后的结果特征 • 中断屏蔽码——指出是否允许中断
例:微处理器M68000的程序状态字 条件位: C: 进位标志位 V: 溢出标志位 Z: 结果为零标志位 N: 结果为负标志位 I0 – I2:三位中断屏蔽位 S:CPU状态标志位,为1处于管态,为0处于目态 T:陷阱(Trap)中断指示位为1, 在下一条指令执行后引起自陷中断
CF: 进位标志位 ZF: 结果为零标志位 SF: 符号标志位 OF: 溢出标志位 标准条件位: TF:陷阱标志位 IF:中断允许(中断屏蔽)标志位 VIF:虚拟中断标志位 VIP:虚拟中断待决标志位 IOPL:IO特权级别 例:微处理器Pentium的程序状态字
CPU状态的转换 目态→管态 唯一途径 是 中断 管态→目态 设置PSW(修改程序状态字) 可实现
二、存储系统 支持OS运行硬件环境的一个重要方面: • 作业必须把它的程序和数据存放在内存中才能运行 • 多道程系统中,若干个程序和相关的数据要放入内存 操作系统要管理、保护程序和数据,使它们不至于受到破坏 • 操作系统本身也要存放在内存中并运行
2.1、存储器的类型 半导体存储器 实现 内存 • 存储器芯片的内部组织结构 • 静态存储器(SRAM) • 异步动态随机存储器(DRAM) • 同步动态随机存储器(SDRAM) • 双倍数据速率SDRAM(DDR SDRAM)(开放标准) • Rambus公司的SDRAM
存储器的类型 只读型存储器 • ROM( Read-Only Memory) :只能从其中读取数据,但不能随意用普通方法写入数据(写入数据只能用特殊方法) • 在微机中,一些常驻内存的模块以微程序形式固化在ROM中,如:PC BIOS和CBASIC解释程序被固化于ROM中 • PROM:可编程只读存储器,使用特殊PROM写入器写入数据 • EPROM:电可擦写可编程只读存储器,用特殊的紫外线光照射此芯片,以“擦去”信息,恢复原来状态,再使用特殊EPROM写入器写入数据 • 闪存(flash memory)
2.2、存储器的层次结构 存储系统设计三个问题: 容量、速度和成本 • 容量:需求无止境 • 速度:能匹配处理器的速度 • 成本问题:成本和其他部件相比应在合适范围之内
容量、速度和成本 • 三个目标不可能同时达到最优,要作权衡 • 存取速度快,每比特价格高 • 容量大,每比特价格越低,同时存取速度也越慢 解决方案:采用层次化的存储体系结构 • 当沿着层次下降时 • 每比特的价格将下降,容量将增大 • 速度将变慢,处理器的访问频率也将下降
存储访问局部性原理 提高存储系统效能关键点:程序存储访问局部性原理 • 程序执行时,有很多的循环和子程序调用,一旦进入这样的程序段,就会重复存取相同的指令集合 • 对数据存取也有局部性,在较短的时间内,稳定地保持在一个存储器的局部区域 处理器主要和存储器的局部打交道 在经过一段时间以后,使用的代码和数据集合会改变
2.3、存储分块 • 存储最小单位:“二进位”,包含信息为0或1 • 最小编址单位:字节,一个字节包含八个二进位 主流个人电脑 • 主存:128MB~512MB之间 • 辅助存储器:在20GB~70GB 工作站、服务器 • 主存:512MB ~ 4GB之间 • 硬盘容量:数百GB 为简化分配和管理,存储器分成块,称一个物理页(Page) • 块的大小:512B、1K、4K、8K
2.4、存储保护设施 对主存中的信息加以严格的保护,使操作系统及其他程序不被破坏,是其正确运行的基本条件之一 多用户,多任务操作系统: OS给每个运行进程分配一个存储区域 问题: • 多个程序同时在同一台机器上运行,怎样才能互不侵犯? • 如何处理重定位?
保护的硬件支持 解决方案 依赖于 配有特殊硬件的CPU 硬件可提供如下功能: • 界地址寄存器(界限寄存器) • 存储键 • 地址转换机制
界地址寄存器(界限寄存器) • 界地址寄存器被广泛使用的一种存储保护技术 • 机制比较简单,易于实现 实现方法: • 在CPU中设置一对下限寄存器和上限寄存器 存放用户作业在主存中的下限和上限地址 • 也可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度) • 每当CPU要访问主存,硬件自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界 • 如果未越界,则按此地址访问主存,否则将产生程序中断——越界中断(存储保护中断)
界地址寄存器 存储保护技术
存储键 • 每个存储块有一个由二进位组成的存储保护键 • 一用户作业被允许进入主存,OS分给它一个唯一的存储键号 • 并将分配给该作业各存储块存储键也置成同样键号 • 当OS挑选该作业运行时,OS将它的存储键号放入程序状态字PSW存储键(“钥匙”)域中 • 每当CPU访问主存时,都将该主存块的存储键与PSW中的“钥匙”进行比较 • 如果相匹配,则允许访问,否则,拒绝并报警
地址转换机制 同时有多个程序在内存 程序在内存的位置不是固定的而是随机的 用户程序B 用户程序A 内存
虚拟地址 CPU 内存 磁盘 控制器 MMU 总线 物理地址 MMU:内存管理单元
地址转换机制 • 虚拟地址(逻辑地址) 处理器生成的指令或数据的二进制地址 • 这些地址用硬件和软件结合的方法转换成物理地址 • MMU:内存管理单元,一种特殊硬件,完成转换工作
三、中断技术 中断对于操作系统的重要性 就像机器中的驱动齿轮一样 所以有人把操作系统称为是由 “中断驱动”或者 “(中断)事件驱动” • 它使得OS可以捕获用户程序发出的系统功能调用 • 及时处理设备的中断请求 • 防止用户程序中破坏性的活动等等
3.1、中断的概念 • CPU对系统发生的某个事件作出的一种反应 • CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断点,继续执行被打断的程序 特点: 1) 中断随机的 2) 中断是可恢复的 3) 中断是自动处理的 引入中断的目的 • 解决主机与外设的并行工作问题 • 实现实时控制
中断的概念 中断/异常:指系统发生某个异步/同步事件后,处理机暂停正在执行的程序,转去执行处理该事件程序的过程 中断的引入:为了开发CPU和通道(或设备)之间的并行操作,当CPU启动通道(或设备)进行输入/输出后,通道便(或设备)可以独立工作了,CPU也可以转去做与此次输入/输出不相关的事情,那么通道(或设备) 输入/输出完成后,还必须告诉CPU继续输入/输出以后的事情,通道(或设备)通过向CPU发中断告诉CPU此次输入/输出结束
中断的概念 异常引入:用于表示CPU执行指令时本身出现算术溢出、零做除数、取数时的奇偶错,访存指令越界或就是执行了一条所谓“异常指令”(用于实现系统调用)等情况,这时中断当前的执行流程,转到相应的错误处理程序或异常处理程序 注意:最早中断和异常并没有区分,都把它们叫做中断。随着它们的发生原因和处理方式的差别愈发明显,才有了以后的中断和异常
中断的概念 I/O中断 中断(外中断) 时钟中断 广义中断 系统调用 缺页异常 断点指令 其他程序性异常 (如算术溢出等) 异常(内中断) 例外 中断(狭义)与异常的区别: 中断:与正执行指令无关,可以屏蔽 异常:与正执行指令有关,不可屏蔽
3.2、中断系统 中断系统是现代计算机系统的核心机制之一 硬件和软件相互配合、相互渗透而使得计算机系统得以充分发挥能力的计算模式 中断系统的两大组成部分:硬件中断装置和软件中断处理程序 • 中断系统的硬件中断装置-中断系统的机制部分 负责捕获中断源发出的中断请求,以一定方式响应中断源,然后将处理器控制权交给特定的中断处理程序 • 软件中断处理程序-中断系统的策略部分 负责辨别中断类型并做出相应的操作
3.3、中断优先级和中断屏蔽 中断优先级设计原则:一般来说,高速设备的中断优先级高,慢速设备的中断优先级低。因为高速设备的中断被处理机优先响应时,可以让处理机尽快地向它发出下一个I/O请求,提高高速设备的利用率
中断优先级和中断屏蔽 处理机优先级:指出处理机正运行程序的中断响应级别。即当处理机处于某一优先级时,只允许处理机去响应比该优先级高的中断,而屏蔽低于或等于该优先级的中断。可以通过置处理机优先级来通知硬件:屏蔽优先级小于等于处理机优先级的中断 中断屏蔽:指禁止处理机响应中断或禁止中断出现
中断优先级和中断屏蔽 中断屏蔽有两种方法: • 硬件实现——由软件置处理机优先级,硬件按系统设计时的约定,屏蔽那些低优先级中断 • 软件实现——由软件按操作系统优先级约定,设置屏蔽寄存器
3.4、中断类型 强迫性中断 正在运行的程序所不期望的,由于某种硬件故障或外部请求引起的 自愿性中断 用户在程序中有意识安排的中断,是由于用户在编制程序时因为要求操作系统提供服务,有意使用“访管”指令或系统调用,使中断发生
中断类型 强迫性中断 • 输入/输出(I/O)中断:主要来自外部设备通道 • 程序性中断:运行程序中本身的中断 (如溢出,缺页中断,缺段中断,地址越界) • 时钟中断 • 控制台中断 • 硬件故障
中断类型 自愿性中断 • 执行I/O,创建进程,分配内存 • 信号量操作,发送/接收消息
微机中的中断 1.可屏蔽中断(IO中断) 2.不可屏蔽中断(机器内部故障、掉电中断) 3.程序错误中断(溢出、除法错等中断) 4.软件中断(Trap指令或中断指令INT)
IBM370中的中断 1. 机器故障中断:如电源故障,机器电路检验错等 2. 输入输出中断:输入输出设备和通道数据传输状态) 3. 外部中断:时钟中断,操作员控制台中断,多机系统中其他机器的通信要求中断,各种外设或传感器发来的实时中断等 4. 程序中断:程序中的问题引起的中断,如错误地使用指令或数据、溢出等问题,存储保护等 5. 访管中断:访管指令或陷阱指令(Trap指令)中的操作数规定了要求服务的类型。每当CPU执行访管指令或陷阱指令时,即引起中断并调用操作系统相应的功能模块为其服务
3.5、中断响应 CPU如何响应中断, 两个问题: • CPU何时响应中断? 通常在CPU执行了一条指令以后,更确切地,在指令周期最后时刻接受中断请求,或此时扫描中断寄存器 • 如何知道提出中断请求的设备或中断源? 因为只有知道中断源或中断设备,才能调用相应的中断处理程序