【NJUSE操作系统】2.处理器管理

2.1 处理器与寄存器

处理器

在这里插入图片描述

部件简单示意图,CPU可看做处理器

  1. 上图各组件通过内部总线连接起来,构成一个不包含通用寄存器、I/O相关寄存器、地址寄存器、数据寄存器和Cache的示意图。
  2. CPU中的各组件描述
    1. 算数逻辑单元:计算结束之后会将结果的标志放置到标志寄存器Flag中。
    2. 控制单元:包含重要的指令译码器ID(具体解释指令的执行),而指令是放置在指令暂存器IR中。
    3. 程序计数器PC:指向下一条指令的内存地址
    4. 内存地址寄存器内存数据寄存器:用来完成对内存数据的访问。
  3. 通过系统总线来访问内存中的数据,首先设置地址和数据,然后通过控制来完成数据的读取和写回。
  4. 时钟等外部信号来反应到处理器线程中来。

例:
读内存:设置好MAR,然后发出读命令,数据就到MDR中。
写内存:设置好MAR和MDR,然后发出写命令。
外部信号:程序是一条一条执行的,外围设备本身不能打断。当打印机完成后需要操作系统命令CPU善后,打印机可能同时被其他程序使用。打印机完成/缺纸和正在执行的程序没有关系,所以需要外部信号打断,引出OS来善后,最后再恢复正在执行的程序。

寄存器

1. 用户程序可见寄存器

  1. 可以使程序员减少访问主存储器的次数,提高指令执行的效率
  2. 所有程序可使用,包括应用程序和系统程序
    1. 数据(通用)寄存器:AX、BX、CX、DX等
    2. 地址寄存器:索引(SI、DI)、栈指针(SP、BP)、段地址(CS、DS、SS、ES)、页表寄存器等

2. 控制和状态寄存器

  1. 控制和状态寄存器用于控制处理器的操作,主要是被具有特权的操作系统程序使用,以控制程序的执行
    1. 程序计数器PC:存储将取指令的地址
    2. 指令寄存器IR:存储最近使用的指令
    3. 条件码CC:CPU为指令操作结果设置的,标志正/负/零/溢出等结果
  2. 标志位
描述
中断位是否有中断发生了,中断源是什么
中断允许位表示目前是否响应中断
中断屏蔽位中断发生了,中断响应了,我们要不要屏蔽中断
处理器模式位现在处理器是处于何种模式
内存保护位对这段内存是只读还是读写还是不可操作

程序状态字PSW

  1. PSW既是操作系统的概念,指记录当前程序运行的动态信息,通常包含:
    1. 程序计数器、指令寄存器、条件码
    2. 中断字、中断允许/禁止、中断屏蔽、处理器模式、内存保护、调试控制
  2. PSW也是计算机系统的寄存器
    1. 通常设置一组控制与状态寄存器
    2. 也可以专设一个PSW寄存器

控制与状态寄存器是OS的概念,原则上只能由OS内核访问,否则不能实现多道程序。
程序切换:外部信号打断处理器中的运行程序,调用操作系统安排哪道程序运行。打断时状态寄存器会记录被打断的情况(中断字等),显然只能被内核态使用。

2.2 处理器与寄存器

机器指令

  1. 机器指令是计算机系统执行的基本命令,是中央处理器执行的基本单位。
  2. 指令由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码。
  3. 指令完成各种算术逻辑运算、数据传输、控制流跳转。

指令执行过程

  1. CPU根据PC取出指令,放入IR,并对指令译码,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行
  2. 一种指令执行步骤如下:(还有更加细分,这只是一种示例)
    1. 取指:根据PC从存储器或高速缓冲存储器中取指令到IR
    2. 解码:解译IR中的指令来决定其执行行为
    3. 执行:连接到CPU部件,执行运算,产生结果并写回,同时在CC里设置运算结论标志;跳转指令操作PC,其他指令递增PC值

这是最简单的执行过程,其他操作系统可能把执行和写回分开。

指令执行周期与指令流水线

在这里插入图片描述

现在的操作系统不是顺序地完成指令执行(不是循环),而是选择使用指令流水线的方式来执行指令(提高CPU处理效率)

特权指令与非特权指令

用户程序并非能够使用全部机器指令,那些与计算机核心资源相关的特殊指令会被保护

  1. 比如:启动I/O指令(打印机打印文件会细分成按照行打印,若用户直接操纵I/O可能会导致逻辑上不连续,所以需要OS管理)、置PC指令(若用户随意使用,会访问到别人的内存区域,所以要OS保证多道程序调用)等等
  2. 核心资源相关的指令只能被操作系统程序使用(作为特权指令,不允许在用户态使用这些命令)
    1. 特权指令
      1. 只有操作系统本身可以使用的指令,在内核态才能调用的命令,不仅仅影响运行程序本身,还会干扰其他程序及操作系统。
      2. 比如改变机器状态、修改寄存器值、置中断屏蔽位、加载程序状态字等。
      3. 如果应用程序执行特权指令则会导致非法执行而产生保护中断,进而转向操作系统的"用户非法执行特权指令"的异常处理程序处理。
    2. 非特权指令
      1. 所有的用户程序都能够使用的指令,在用户态和内核态都可以调用的命令。
      2. 非特权命令在目态和管态的情况下都能工作。

处理器模式

  1. 计算机通过设置处理器模式实现特权指令管理
  2. 计算器一般设置0、1、2、3等四种运行模式(保护级别)
    • 0:内核级,操作系统内核,可以执行全部指令,包括中断处理、处理I/O操作等命令
    • 1:系统调用级,执行系统调用,获得特定的和受保护的程序服务(比如文件系统可以放在内核之外,可以用1;数据库也可能用1)
    • 2:共享库级,可以多个运行进程共享,允许调用库函数,读取但不修改相关数据。
    • 3:用户程序,只能执行非特权指令,收到的保护最少
  3. 0模式可以执行全部指令;3模式只能执行非特权指令;其他每种运行模式可以规定执行的指令子集
  4. 一般来说,现代操作系统只使用0和3两种模式,对应于内核模式和用户模式
  5. 处理器模式是由处理器模式位决定的。

设计特权/非特权/模式的意义->支持内核->支持多道程序设计

0:内核

1:文件系统+数据库

2:程序设计语言

3:用户

现在:012放在0实现,2的绝大部分和3放在3实现

处理器模式切换

  1. 简称模式切换,包括用户模式->内核模式内核模式->用户模式的两种切换。
  2. 中断、异常或系统异常等事件导致用户程序向OS内核切换,触发:用户模式->内核模式,以下三种方式是唯一能触发的方式:
    1. 程序运行时发生并响应中断(一般是I/O中断)
    2. 程序运行时发生异常(如发生程序性中断,或者目态执行特权指令)
    3. 程序请求操作系统服务,执行系统调用
  3. 我们可以认为中断和异常是用户态到内核态转换的仅有途径。
  4. OS内核处理完成后,调用中断返回指令(如Intel的iret)触发:内核模式->用户模式,操作系统将控制权转交给应用进程。

2.3 中断

中断、异常和系统异常

  1. 广义的中断(来自PPT)是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程
  2. 狭义的中断指来源于处理器之外的中断事件(来自处理器之外的外围设备),即与当前运行指令无关的中断事件,如I/O中断(为打印机结束后进行善后)、时钟中断(计算机系统计时,多一段时间就要更新系统时间)、外部信号中断(关机)等
  3. 异常当前运行指令引起的中断事件,如地址异常(访问其他程序的内存、读写没有权利读写的内存、虚拟地址的异常(此时需要从外存调入内存))、算术异常(数字溢出、对0除法)、处理器硬件故障(奇偶校验位错误)等
  4. 来自于CPU内部的广义中断事件我们称之为异常,和狭义的中断构成了广义的中断。
  5. 系统异常执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求I/O、创建进程等,与硬件无关(通过系统异常请求服务),系统异常可以被认为是异常中的一类
    在这里插入图片描述

操作系统与中断

  1. 操作系统是中断驱动的;换言之,中断是激活操作系统的唯一方式
  2. 操作系统要求计算机硬件系统为其设置相应的中断激活的硬件机制,再配合操作系统的内核程序共同完成中断驱动方式,这个是操作系统实现的最根本的基础,中断处理需要借助硬件电路
  3. 广义的中断是激活操作系统的唯一方式。

2.4 中断源

1. 处理器硬件故障中断事件(硬中断)

  1. 由处理器、内存储器、总线等硬件故障引起,除了极少类的校验错误可以恢复以外,是非常严重的中断。
  2. 处理原则为:保护现场,停止设备,停止CPU,向操作员报告,等待人工干预
  3. 电脑会配置一个小电容保证尽可能较少硬件损伤

2. 程序性中断事件

处理器执行机器指令引起

  1. 语法错误:由编译程序发现
  2. 逻辑错误:由测试程序发现
  3. 程序运行过程中产生异常
    1. 除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理
    2. 非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程
    3. 终止进程指令:终止进程
    4. 虚拟地址异常:指令和数据不在内存当中,调整内存后重新执行指令

3. 自愿性中断事件(访管中断)

  1. 处理器执行陷入指令请求OS服务引起;在操作系统中,它一般又被称作系统调用,比如请求分配外设、请求I/O等等
  2. 处理流程是:
    1. 陷入OS:程序执行访管指令,并通过适当方式指明系统调用号。
    2. 保护现场:通过中断机制进入访管中断处理程序,现场信息被保护到核心栈,按功能号实现跳转。
    3. 根据功能号查入口地址:通过系统调用入口地址表找到对应中断服务历程的入口地址
    4. 跳转具体处理程序:执行终端服务例程

4. I/O中断事件

  1. 来源于外围设备报告I/O状态的中断事件
    1. I/O完成:调整进程状态,释放等待进程
    2. I/O出错:先向设备发命令索取状态字,分析产生故障的确切原因,再执行复执或请求人工干预
    3. I/O异常:等待人工干预,缺纸,人工加纸
    4. 设备报道或设备结束:表示有设备接入可供使用或设备断开暂停使用
  2. 狭义中断事件

5. 外部中断事件

外围设备发出的信号引起的中断事件。

  1. 时钟中断、间隔时钟中断:记时与时间片处理,最常见
  2. 设备报到与结束中断:调整设备表
  3. 键盘/鼠标信号中断:根据信号作出相应反应
  4. 关机/重启动中断:写回文件,停止设备与CPU

2.5 中断系统

中断响应处理与指令执行周期

在这里插入图片描述
在指令执行周期最后增加一个微操作,以响应中断,CPU在完成执行阶段后,如果允许中断,则进入中断阶段

中断装置

  1. 计算机系统中发现并响应中断/异常的硬件装置称为中断装置
  2. 由于中断源的多样性,硬件实现的中断装置有多种,分别处理不同类型的中断
  3. 这些中断装置因计算机而异,通常有:
    1. 处理器外的中断:由中断控制器发现和响应
    2. 处理器内的异常:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷阱(陷阱都是同步)
    3. 请求OS服务的系统异常:处理器执行陷入指令时直接触发,相应机制称为系统陷阱
      在这里插入图片描述

1. 中断控制器

  1. 中断控制器:CPU中的一个控制部件,包括中断控制逻辑线路和中断寄存器,中断控制器会记录中断是来自哪里
    1. 狭义中断:(异步过程)外部设备向其发出中断请求IRQ,在中断寄存器中设置已发生的中断
    2. (同步过程)指令处理结束前,会检查中断寄存器,若有不被屏蔽的中断产生,则改变处理器内操作的顺序,引出操作系统中的中断处理程序
  2. 狭义中断是异步进程,CPU正在做的事情和中断可能是两个不同部分

2. 陷阱与系统陷阱

陷阱与系统陷阱:指令的逻辑和实现线路的一部分

  1. 执行指令出现异常后,线路会根据异常情况转向操作系统的异常处理程序
  2. 出现虚拟地址异常后,需要重新执行指令,往往越过陷阱独立设置页面异常处理程序(没有执行完,所以比较特殊)
  3. 执行陷入指令后,越过陷阱处理,触发系统陷阱,激活系统调用处理程序

中断程序的处理&中断/异常响应过程

  1. 中断处理程序:操作系统处理中断事件的控制程序, 主要任务是处理中断事件和恢复正常操作。
  2. 是一个软件过程
  3. 中断/异常响应过程
    1. 发现中断源,提出中断请求(选择响应哪一个程序)
      1. 发现中断寄存器中记录的中断
      2. 决定这些中断是否被屏蔽
      3. 当有多个要响应的中断源时,根据规定的优先级选择一个
    2. 中断当前程序的执行(保护现场):保存当前程序的PSW(程序状态字:记录程序的执行行为)/PC到核心栈
    3. 转向操作系统的中断处理程序:处理器状态已从用户态转换至内核态。
    4. 恢复现场:恢复原运行程序的PSW,重新返回中断点,以便执行后续指令。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值