目录
- 1.CPU的功能和组成
- 1.1CPU的四大功能
- 1.2CPU的基本组成
- [1.3 一条指令如何在CPU内运行](#1.3 一条指令如何在CPU内运行)
- 2.指令系统
- 2.1机器语言与指令
- 2.2指令格式的设计
- 2.3指令系统
- [2.3.1 指令系统基本概念](#2.3.1 指令系统基本概念)
- 2.3.2指令系统设计风格
- 2.3.2RISC出现的原因
- 3.进程的基本概念
- [4 进程的状态及其变迁](#4 进程的状态及其变迁)
* - 5.进程控制块
- 5.1进程实体的构成
- 5.2PCB的作用
- [5.3 进程控制块中的信息](#5.3 进程控制块中的信息)
- 5.4进程控制块的组织方式
- 6.进程控制
- 6.1操作系统内核
- 6.2原语
- [6.3进程图(Process Graph)](#6.3进程图(Process Graph))
- 6.4进程的创建
- 6.4.1引起创建进程的事件
- [6.4.2 进程的创建 (Creation of Progress)](#6.4.2 进程的创建 (Creation of Progress))
- 6.5进程的终止
- 6.6进程的阻塞与唤醒
- 6.7进程的挂起与激活
1.CPU的功能和组成
1.1CPU的四大功能
CPU的4大功能 | 描述 |
---|---|
指令控制 | 即程序的顺序控制。程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。保证机器按顺序执行程序是CPU的首要任务。 |
操作控制 | 一条指令的功能往往是由若干个操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各操作信号送往相应的部件,从而控制各部件按指令要求进行动作。 |
时间控制 | 对各种操作实施时间上的定时称为时间控制。在计算机中,各种指令的操作信号均受到时间的严格定时。一条指令的整个执行过程也受到时间的严格定时,只有这样,计算机才能有条不紊地自动工作。 |
数据加工 | 即对数据进行算术和逻辑运算处理。完成数据的加工处理是CPU的根本任务。 |
1.2CPU的基本组成
组件 | 功能描述 |
---|---|
控制器 | 发布命令的"决策机构",协调和指挥整个计算机系统的操作。 |
- 从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置。 | |
- 对指令进行译码或测试,并产生相应的操作控制信号。 | |
- 指挥并控制CPU、数据cache和输入/输出设备之间数据流动的方向。 | |
运算器 | 数据加工处理部件,执行算术和逻辑运算。 |
- 执行所有算术运算,产生运算结果。 | |
- 执行所有逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。 | |
Cache | 高速缓冲存储器,解决CPU和主存之间速度不匹配问题。 |
寄存器组 | 暂存计算机字,包括数据缓冲寄存器(DR)、指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、通用寄存器(Ro-R)。 |
- 数据缓冲寄存器(DR):暂存ALU运算结果,或数据存储器读出的数据字,或外部接口数据字。 | |
- 指令寄存器(IR):保存当前正在执行的一条指令。 | |
- 程序计数器(PC):存放将要执行的下一条指令的地址。 | |
- 地址寄存器(AR):保存当前CPU所访问的数据cache存储器单元的地址。 | |
- 通用寄存器(Ro-R):为ALU提供工作区,用于算术或逻辑运算。 | |
状态字寄存器(PSW) | 保存运算或测试结果建立的条件代码和系统工作状态信息。 |
- 保存进位标志(C)、溢出标志(V)、零标志(Z)、负标志(N)等。 |
1.3 一条指令如何在CPU内运行
- 取指:
- 先根据程序计数器(PC)将指令从指令cache 中取出,通过指令总线(IBUS) 传输到**指令寄存器(IR)**中。
- PC加1指向下一条指令。
- 指令译码
- 将指令寄存器(IR) 中的操作码(OP) 传输到指令译码器,然后通过操作控制器、时序发生器转换为控制信号。
- 执行指令
①当前的指令是转移指令- 指令寄存器IR 中的下一条将要执行的指令的地址将PC中要加一的覆盖,再进行取指操作。
②当前的指令是非转移指令 - 将指令寄存器IR 中的地址码传到地址寄存器AR ,然后从数据cache中 将数据取出,通过数据总线DBDS传输到数据缓冲寄存器DR ,将数据存储到通用寄存器 中,计算的结果传输到数据缓冲寄存器DR ,状态传输到状态字寄存器PSW 中。
- 指令寄存器IR 中的下一条将要执行的指令的地址将PC中要加一的覆盖,再进行取指操作。
2.指令系统
2.1机器语言与指令
2.1.1基本概念
术语 | 定义 |
---|---|
机器语言 | 用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。 |
指令 | 由指令集架构定义的单个的CPU操作,是指示计算机执行某种操作的命令。 |
指令集 | 一台计算机能执行的全部指令的集合;是计算机程序员接触到的计算机的所有功能。 |
2.1.2一条指令一般应包含的信息
信息 | 描述 |
---|---|
操作码(Operation Code) | 指定要完成的操作,如ADD、I/O等。这些二进制代码常称为操作码。 |
操作数的地址(Source Operand Reference) | 操作会涉及一个或多个源操作数,这是操作所需的输入。 |
操作结果的地址(Result Operand Reference) | 操作可能产生一个结果。 |
下一条指令地址(Next Instruction Reference) | 告诉CPU这条指令执行完成后到哪儿去取下一条指令。 |
指令的基本格式:操作码 | 地址码
2.1.3指令的类型与功能
指令类型 | 功能描述 |
---|---|
数据传送指令 | 将数据从一个地方移到另一个地方(实际是"拷贝")。 |
数据运算指令 | 包括算术运算指令和逻辑运算指令。 |
移位指令 | 实现对操作数的左、右移位,分为算术移位、逻辑移位和循环移位三种,可以实现对操作数左移或右移一位或几位。 |
程序控制指令 | 控制程序流程的指令,包括:跳转指令(条件或无条件)或分支指令、子程序调用和子程序返回指令、"软中断"指令、停机指令。 |
2.1.4寻址方式
寻址方式 | 描述 |
---|---|
直接寻址 | 直接寻址 指令字中直接给出操作数的有效地址。 |
间接寻址 | 间接寻址 指令中指定的是含有操作数地址的内存单元的地址。 |
寄存器间接寻址 | |
立即值寻址 | 指定的操作数不是一个地址,而是确实要用到的数据 |
隐含寻址 | 并不明确地指出操作数,因为总是用到特定的寄存器 |
堆栈及堆栈操作 | 一种按"后进先出"存取顺序进行存取的存储结构 |
相对寻址 | 将程序计数器 PC 的当前内容与指令中给出的形式地址相加形成操作数的有效地址 |
变址寻址方式 | 与相对寻址方式类似,但它是将指令提供的地址与变址寄存器中而不是程序计数器中的内容相加。 |
基址寻址 | 操作数的有效地址等于指令中的形式地址与基址寄存器中的内容之和。 |
2.2指令格式的设计
2.2.1基本概念
指令格式的设计包含两个方面:
- 确定指令的长度;
- 划分指令的字段,定义各字段的位数、含义
指令长度 - 指令字长度:一个指令字所包含的二进制信息位数。
- 定长指令:指令系统中所有指令的长度都是一样的。
- 可变长指令:各指令的长度可以不同。
- 机器字长:计算机能直接处理的二进制数据的位数
2.2.2指令类型
指令类型 | 格式 | 意义 | 适用机型 | 说明 |
---|---|---|---|---|
零地址指令 | 无需任何操作数 | 空操作,停机等指令 | 通用 | 操作数隐含指定 |
一地址指令 | A OP (A) 或 AC (AC) OP (A) | 操作数A与操作码OP的运算结果存回A或AC | 通用 | 操作数隐含指定 |
二地址指令 | A1 (A1) OP (A2) | 最常用的指令格式 | 中、小、微型机 | 有几种形式:S-S型、R-R型、R-S型 |
三地址指令 | A3 (A1) OP (A2) | 常用于复杂操作 | 大、中型机 | 格式示例 |
多地址指令 |
2.2.3操作码类型
操作码类型 | 描述 | 优点 | 适用机型 | 示例 |
---|---|---|---|---|
固定长度操作码 | 操作码长度固定,集中放在指令字的一个字段中 | 简化硬件设计,减少指令译码时间 | 大、中型及超级小型机 | 无 |
可变长度操作码 | 操作码长度有几种不同的选择,根据地址数调整 | 灵活,适用于不同指令需求 | 无 | 无 |
扩展操作码 | 在满足需要的前提下,有效地缩短指令字长 | 减少指令字长,提高效率 | 无 | 某机指令字长16位,固定OP为4位,三个地址码,每个4位 |
2.2.4指令设计
2.3指令系统
2.3.1 指令系统基本概念
指令系统定义
- 一台计算机中所有机器指令的集合。
指令系统的重要性
- 直接影响硬件结构和系统软件。
- 影响机器的适用范围。
完善的指令系统要求
- 完备性:足够指令直接使用,无需软件实现。
- 有效性:程序高效率运行。
- 兼容性:系列机间基本结构和指令集相同,软件通用。
- 规整性:指令格式和数据格式一致,对称性和匀齐性。
2.3.2指令系统设计风格
CISC(复杂指令系统计算机)
- 增强指令功能,增加复杂度。
- 指令系统庞大,多达200-300条指令。
- 多种指令格式和寻址方式。
- 执行时间和使用频率差异大。
- 采用微程序控制器。
RISC(精简指令系统计算机)
- 精简指令系统,简化功能。
- 使用频率高的简单指令组成。
- 指令数少,长度一致,格式和寻址方式少。
- 指令流水线调度,大部分指令一个周期内完成。
2.3.2RISC出现的原因
2/8规则
- 20%指令占80%处理机时间,80%不常用指令占20%时间。
3.进程的基本概念
3.1程序的顺序执行特征
特征 | 描述 |
---|---|
顺序性 | 操作严格按照程序规定的顺序执行。 |
封闭性 | 程序在封闭环境下运行,独占全机资源,状态只有本程序能改变。 |
可再现性 | 环境和初始条件相同,多次执行结果相同,与执行速度无关。 |
3.2程序的并发执行特征
特征 | 描述 |
---|---|
间断性 | 程序共享资源或合作完成任务,导致"执行-暂停执行-执行"的间断性活动规律。 |
3.3进程的概念
定义 |
---|
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。 |
3.4进程与程序的区别
区别项 | 进程 | 程序 |
---|---|---|
静态/动态 | 动态 | 静态 |
并发描述 | 能真实描述并发 | 不能 |
生命周期 | 有诞生和消亡,短暂 | 相对长久 |
保存性 | 一次执行过程,暂时的 | 可长期保存 |
调度单位 | 系统分配调度的独立单位 | 非调度单位 |
组成 | 由程序和数据两部分组成 | 无数据部分 |
创建进程 | 具有创建其他进程的功能 | 没有 |
3.5进程的特征
特征 | 描述 |
---|---|
动态性 | 具有动态的地址空间,包括代码、数据和系统控制信息。 |
独立性 | 各进程的地址空间相互独立。 |
并发性 | 多个进程实体同存于内存中,且能在一段时间内同时运行。 |
异步性 | 各进程按各自独立的、不可预知的速度向前推进。 |
结构性 | 包括程序段、数据段和PCB。 |
3.6进程的类型
类型 | 描述 |
---|---|
系统进程 | 起着资源管理和控制的作用的进程。 |
用户进程 | 为用户算题任务而建立的进程。 |
3.7作业与进程的关系
阶段/状态 | 描述 |
---|---|
提交状态 | 用户程序和数据等待输入。 |
后备状态 | 作业输入到后援存储器上,等待调度。 |
执行状态 | 作业进入内存开始运行,到计算完成为止。 |
完成状态 | 作业计算完成,到善后处理完毕并退出系统为止。 |
3.8作业与进程的比较
比较项 | 作业 | 进程 |
---|---|---|
任务实体 | 用户向计算机提交任务的任务实体。 | 完成用户任务的执行实体。 |
存储 | 系统将它放入外存中的作业等待队列中等待执行。 | 总有相应的部分存在于内存中。 |
组成 | 一个作业可由多个进程组成,至少由一个进程组成。 | 单个执行实体。 |
系统应用 | 主要用在批处理系统中。 | 用在几乎所有多道程序系统中。 |
4 进程的状态及其变迁
4.1进程的三种基本状态
状态类型 | 描述 | 备注 |
---|---|---|
就绪(Ready)状态 | 可运行,已获得除CPU外的所需资源,等待分配CPU | 多个处于就绪状态的进程排成就绪队列 |
执行(Running)状态 | 占用CPU运行;处于此状态的进程的数目小于或等于CPU的数目 | 没有其他进程可以执行时,自动执行系统的idle进程 |
阻塞(Blocked)状态 | 等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行 | 通常阻塞进程也排成一个阻塞队列 |
4.2进程状态的转换条件
状态转换 | 条件 |
---|---|
就绪->运行 | 调度程序选择一个新的进程运行 |
运行->就绪 | - 运行进程用完了时间片 - 运行进程被中断,因为一高优先级进程处于就绪状态 |
运行->等待 | - OS尚未完成服务 - 初始化I/O且必须等待结果 - 等待某一进程提供输入(IPC) |
等待->就绪 | 当所等待的事件发生时 |
![[PCC2_12.png]] |
4.3创建状态和终止状态
状态 | 描述 | 备注 |
---|---|---|
创建状态 | 进程刚建立,还未进入就绪队列 | - |
终止状态 | 进程已(正常或异常)结束,已从就绪队列中移出,但尚未撤销 | 暂留,以便其他进程收集该进程的有关信息 |
4.4挂起(Suspend)与激活(Activate)
操作 | 描述 | 原因 | 目的 | 状态转换 | |
---|---|---|---|---|---|
挂起(Suspend) | 操作系统进程管理程序将前台的进程暂停并转入后台的动作,即将进程从内存转出到外存 | 由于引入进程优先级,一些低优先级进程可能等待较长时间,从而被对换至外存 | - 提高处理机效率 - 为运行进程提供足够内存 - 用于调试 | -就绪挂起:活动就绪到静止就绪 -阻塞挂起:活动阻塞到静止阻塞 -行到就绪挂起:对抢占式分时系统 | |
激活(Activate) | 将被挂起的进程从后台转入前台,并从暂停处开始继续运行,即将进程从外存转入内存 | -就绪激活:静止就绪到活动就绪 -阻塞激活:静止阻塞到活动阻塞 |
5.进程控制块
5.1进程实体的构成
构成进程实体的部分 | 作用 |
---|---|
程序段 | 进程执行的程序代码 |
数据段 | 进程执行过程所处理的数据 |
进程控制块(PCB) | 操作系统为了描述和管理进程而定义的数据结构,记录OS所需的、用于描述进程情况及控制进程运行所需的全部信息。 |
5.2PCB的作用
- OS根据PCB来对并发执行的进程进行控制和管理的。
- 是进程存在的唯一标志。在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,即系统是根据进程的PCB而感知到该进程的存在的。
- 当OS要调度某进程时,从其PCB中查出该进程的现行状态及优先级;
- 调度到某进程后,要根据其PCB中所保存的处理机状态信息去设臵该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址找到其程序和数据;
- 进程在执行过程中,当需要和与之合作的进程实现同步、通信或访问文件时也需要访问PCB;
- 当进程因某种原因而暂停执行时,就需要将其断点的处理机环境保存在PCB中。
5.3 进程控制块中的信息
PCB经常被系统访问,尤其是被运行频率很高的进程调度及分派程序访问,故应常驻内存。系统
将所有的PCB组成若干个链表(或队列),存放在OS中专门开辟的PCB区内。
进程控制块中的信息:四个用于描述和控制进程运行的信息,分别是进程标识信息、处理机状态
信息、进程调度信息和进程控制信息。
进程控制块中的信息 | 作用 | 类型 |
---|---|---|
进程标识符(name) | 唯一地标识一个进程 | 内部标识符。操作系统为每个进程赋予一个惟一的数字标识符,通常是一个进程的序号。 主要是为方便系统使用。 外部标识符。由创建者提供,通常由字母、数字组成,往往 是由用户(进程)在访问该进程时使用。 |
处理机状态信息 | 由处理机的各种寄存器中的内容组成。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,这些信息都必须保存在被中断进程的PCB中,以便该进程重新执行时,能从断点继续执行 | |
进程调度信息 | 与进程调度和进程对换有关的信息 | 进程状态:指明进程的当前状态, 作为进程调度和对换时的 依据; 进程优先级:用于描述进程使用处理机的优先级别的一个整数, 优先级高的进程应优先获得处理机; 进程调度所需的其它信息:与所采用的进程调度算法有关,如进程已等待CPU的时间总和、 进程已执行的时间总和等。 事件:指进程由执行状态转变为阻塞状态所等待发生的事件, 即阻塞原因 |
进程控制信息 | 程序和数据的地址:进程的程序和数据所在的内存或外存地( 首)址,以便再调度到该进程执行时,能从PCB中找到其程序 和数据; 进程同步和通信机制:实现进程同步和进程通信时必需的机制 , 如消息队列指针、信号量等,它们可能全部或部分地放在 PCB中; 资源清单:一张列出了除CPU外进程所需全部及已分配到该进 程的资源清单; 链接指针:给出了本进程(PCB)所在队列中的下一个进程的 PCB的首地址。 |
5.4进程控制块的组织方式
进程控制块的组织方式 | 描述 |
---|---|
链接方式 | 把具有相同状态的PCB,用其中的链接字 组成一个队列,从而形成就绪队列、若干个阻塞队列 和空闲队列等 |
索引方式 | 系统根据所有进程的状态,建立几张索引表。 |
6.进程控制
职责是对系统中全部进程实施有效管理,包括
- 创建新进程
- 终止已结束进程
- 终止由于某事件而无法运行下去的进程
- 负责进程的状态转换
6.1操作系统内核
把与硬件紧密相关的模块、运行频率较高的模块及一些公用的基本操作安排在靠近硬件的软件层次中,并常驻内存,以提高系统运行效率。
操作系统内核的功能 | 作用 |
---|---|
支撑功能 | 提供给OS其它许多模块所需要的一些基本 功能,以支持这些模块工作 |
资源管理功能 | 进程管理、存储器管理、设备管理 |
6.2原语
- 由若干条机器指令构成的、用以执行一定"原子操作(atomic operation)"功能的一个过程。
- 原语具有不可分割性,其执行期间不允许被中断,要么从头到尾执行一遍,要么全不执行。
- 原语常见的实现方法是以系统调用的方式提供原语接口,原语在执行过程中采用屏蔽中断的方式来保证其不能被中断。
6.3进程图(Process Graph)
是用于描述一个进程的家族关系的有向树,树中的结点表示进程
6.4进程的创建
6.4.1引起创建进程的事件
事件 | 描述 |
---|---|
用户登录 | 分时系统中合法用户在终端键入登录命令后,系统将为该终端用户建立一进程,并把它插入就绪队列 |
作业调度 | 批处理系统中,作业调度程序按算法调度某个作业时,就将该作业装入内存,为它分配必要的资源,并立即为它创建进程,插入就绪队列 |
提供服务 | 当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,如要求打印时创建一打印进程 |
应用请求 | 以上三种都是由系统内核创建进程,应用进程也可以自己创建进程 |
6.4.2 进程的创建 (Creation of Progress)
进程创建可以通过调用进程创建原语 create()
按照以下步骤完成:
-
申请空闲 PCB:
- 为新进程分配唯一的标识符,并从 PCB 集合中索取一空闲 PCB。
-
为新进程分配资源:
- 为新进程的程序、数据及用户栈分配必要的内存空间。
-
初始化进程控制块:
- 初始化标识符信息
- 初始化处理机状态信息
- 初始化处理机控制信息
进程控制块初始化内容
项目 | 说明 |
---|---|
标识符信息 | 将系统分配的标识符、父进程的标识符填入新 PCB 中 |
处理机状态信息 | 程序计数器指向程序的入口地址,栈指针指向栈顶 |
处理机控制信息 | 将进程的状态设为就绪状态,默认优先级为最低优先级 |
- 将新进程插入就绪队列 :
- 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
6.5进程的终止
6.5.1引起进程终止的事件 (Termination)
-
正常结束:
- 在任何计算机系统中,都应有一个表示进程已运行完成的指示。如在批处理系统中,使用 Halt 指令;在分时系统中,用户利用 Logs off。
-
异常结束:
- 由于出现错误和故障而迫使进程终止的情况,包括但不限于:
异常结束类型
类型 | 原因 |
---|---|
越界错误 | 程序访问的存储区已越出该进程的区域 |
保护错 | 进程试图访问不允许的资源或文件 |
非法指令 | 程序执行一条不存在的指令 |
特权指令错 | 用户进程执行只允许 OS 执行的指令 |
运行超时 | 进程执行时间超过指定的最大值 |
等待超时 | 等待某事件的时间超过规定的最大值 |
算术运算错 | 执行禁止的运算,如被 0 除 |
I/O 故障 | 在 I/O 过程中发生错误 |
- 外界干预 :
- 操作员或操作系统、父进程请求、父进程终止等导致的进程终止。
6.5.2进程的终止过程
- OS 调用进程终止原语
terminate()
来终止进程,过程如下:- 根据被终止进程的标识符,从 PCB 集合中检索该进程的 PCB。
- 判断被终止进程的状态:
- 若处于执行状态,应立即终止执行。
- 若有子孙进程,终止其所有子孙进程
6.6进程的阻塞与唤醒
6.6.1引起进程阻塞的事件
-
请求系统服务:
- 进程请求服务,但 OS 不立即满足。
-
启动某种操作:
- 进程必须在操作完成后才能继续执行。
-
新数据尚未到达:
- 合作进程之间的数据等待。
-
无新工作可做:
- 系统进程完成任务后,进入阻塞状态。
6.6.2进程阻塞过程
- 进程通过调用阻塞原语
block()
将自己阻塞。阻塞是进程自身的一种主动行为。
6.7进程的挂起与激活
6.7.1进程的挂起
- 当用户请求将进程挂起时,系统使用挂起原语
suspend()
。
suspend() 原语的执行过程
- 得到挂起进程的标识符。
- 检查被挂起进程状态。
- 复制 PCB 至指定内存区域。
- 若正在执行,转向调度程序。
6.7.2进程的激活
- 当发生激活事件时,系统使用激活原语
active()
进行激活。
active() 原语的执行过程
- 将进程从外存调入内存,检查当前状态。
- 根据状态决定如何处理激活。
- 进行调度比较,必要时进行重新调度。