操作系统教材第6版——个人笔记3

2.1 处理器

2.1.1 处理器与寄存器

处理器部件的简单示意

用户程序可见寄存器

  • 可以使程序员减少访问主存储器的次数,提高指令执行的效率
  • 所有程序可使用,包括应用程序和系统程序
  • 数据寄存器:又称通用寄存器
  • 地址寄存器:索引、栈指针、段地址等寄存器

控制与状态寄存器

  • 用于控制处理器的操作;主要被具有特权的操作系统程序使用,以控制程序的执行
  • 程序计数器PC:存储将取指令的地址
  • 指令寄存器IR:存储最近使用的指令
  • 条件码CC:CPU为指令操作结果设置的位,标志正/负/零/溢出等结果 标志位:中断位、中断允许位、中断屏蔽位、处理器模式位、内存保护位、…,等

程序状态字PSW

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

2.1.2 指令与处理器模式

机器指令

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

指令执行过程

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

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

特权指令与非特权指令

  • 特权指令:只能被操作系统内核使用的指令 #特权只有系统内核用
  • 非特权指令:能够被所有程序使用的指令 #非特权所有程序可以用

处理器模式

  • 设置处理器模式实现特权指令管理 一般设置0、1、2、3等四种运行模式,建议分别对应:0OS内核、1系统调用、2共享库程序、3用户程序等保护级别
  • 0模式可以执行全部指令;3模式只能执行非特权指令;其他每种运行模式可以规定执行的指令子集
  • 操作系统常用的处理器模式
  • 一般来说,现代操作系统只使用0和3两种模式,分别对应于内核模式和用户模式 #目前os只用0内核3用户

处理器模式的切换

  • 中断、异常或系统异常等事件导致用户程序向OS内核切换,触发:用户模式→内核模式
  • 程序请求操作系统服务
  • 程序运行时发生异常
  • 程序运行时发生并响应中断 #程序请求系统服务、运行异常、中断
  • OS内核处理完成后,调用中断返回指令(如Intel的iret)触发:内核模式→用户模式

2.2 中断管理

2.2.1 中断

中断的概念

  • 中断是指程序执行过程中,遇到急需处理事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程 #程序进行中中断现行程序处理另一个程序再返回原程序被中断处
  • 中断是激活操作系统的唯一方式

中断、异常与系统异常

  • 狭义的中断指来源于处理器外的中断事件,即与当前运行指令无关的中断事件,如I/O中断、时钟中断、外部信号中断等
  • 异常指运行指令引起的中断事件,如地址异常、算术异常、处理器硬件故障等
  • 系统异常指执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求I/O、创建进程等

2.2.2 中断源

处理器硬件故障中断事件

  • 由处理器、内存储器、总线等硬件故障引起的中断事件
  • 处理原则为:保护现场,停止设备,停止CPU,向操作员报告,等待人工干预 #硬件故障解决=保现+停机+停cpu+报告+人工

程序性中断事件

  • 处理器执行机器指令引起的中断事件
  • 除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理
  • 非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程
  • 终止进程指令:终止进程
  • 虚拟地址异常:调整内存重新执行指令

自愿性中断事件(系统调用)

  • 处理器执行陷入指令请求OS服务引起的中断事件;又被称作系统调用
  • 请求分配外设、请求I/O、等等
  • 处理流程是:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序

I/O中断事件

  • 来源于外围设备,用于报告I/O状态的中断事件
  • I/O完成:调整进程状态,释放等待进程,加入就绪进程队列
  • I/O出错:等待人工干预
  • I/O异常:等待人工干预

外部中断事件

  • 由外围设备发出的信号引起的中断事件
  • 时钟/间隔时钟中断:记时与时间片处理
  • 设备报到与结束中断:调整设备表
  • 键盘/鼠标信号中断:根据信号作出相应反应
  • 关机/重启动中断:写回文件,停止设备与CPU

2.2.3 中断系统1

中断系统

  • 中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分 #中断os=硬件子os+软件子os
  • 断响应由硬件子系统完成
  • 中断处理由软件子系统完成 #断响应

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

中断装置

  • 计算机系统中发现并响应中断/异常的硬件装置称为中断装置
  • 这些中断装置因计算机而异,通常有:
  • 处理器外的中断:由中断控制器发现和响应
  • 处理器内的异常:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷阱
  • 请求OS服务的系统异常:处理器执行陷入指令时直接触发,相应机制称为系统陷阱

中断响应过程

  • 发现中断源,提出中断请求
  • 发现中断寄存器中记录的中断
  • 决定这些中断是否应该屏蔽
  • 当有多个要响应的中断源时,根据规定的优先级选择一个
  • 中断当前程序的执行
  • 保存当前程序的PSW/PC到核心栈
  • 转向操作系统的中断处理程序 #发现源-请求中断-看记录决定屏蔽-多个优先级高先-中断-保存psw/pc-os中断程序

 2.2.3 中断系统2

中断处理程序

  • OS处理中断事件的控制程序, 主要任务是处理中断事件和恢复正常操作

中断处理过程

  • 保护未被硬件保护的处理器状态
  • 通过分析被中断进程的PSW中断码字段,识别中断源
  • 分别处理发生的中断事件
  • 恢复正常操作

中断系统处理流程

2.2.4 多中断的响应与处理

中断屏蔽

  • 当计算机检测到中断时,中断装置通过中断屏蔽位决定是否响应已发生的中断
  • 有选择的响应中断

中断优先级

  • 当计算机同时检测到多个中断时, 中断装置响应中断的顺序,有优先度的响应中断
  • 一种可能的处理次序:
  • 处理机硬件故障中断事件
  • 自愿性中断事件
  • 程序性中断事件
  • 时钟等外部中断事件
  • 输入输出中断事件
  • 重启动和关机中断事件 #不同类型操作系统有不同的中断优先级

中断的嵌套处理

  • 当计算机响应中断后,在中断处理过程中,可以再响应其他中断
  • 操作系统是性能攸关程序系统,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在一定层数内,如3层
  • 中断的嵌套处理改变中断处理次序,先响应的有可能后处理

多中断的响应与处理

  • 中断屏蔽可以使中断装置不响应某些中断 #可屏蔽
  • 中断优先级决定了中断装置响应中断的次序 #可前后
  • 中断可以嵌套处理,但嵌套层数应有限制 #有限制
  • 中断的嵌套处理改变了中断处理的次序 #可改序

多重中断处理-顺序

  • X、Y两个中断同时发生
  • 先响应X
  • 因Y被屏蔽,继续处理X
  • 再响应并处理Y #同时发生 某个被屏蔽不响应 响应并处理未屏蔽 再处理屏蔽

多重中断处理-嵌套

  • X、Y两个中断同时发生
  • 根据中断优先级,先响应X
  • 因未屏蔽Y,再响应并处理Y
  • Y处理完成后,再处理X #同时发生 优先级优先响应 响应并处理未屏蔽 再处理优先响应

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

review of c++

友元关系是单向的。 指针

为什么要做与运算?网关如何和ip做与运算?

在计算机网络中,“与运算”是一个基本而重要的概念,尤其在IP地址和子网掩码的处理中起着关键作用。本文将解释为什么要进行与运算,以及网关如何和IP地址进行与运算。 为什么要做与运算? 1. 确定网络地址 与运算(AND…

Linux学习笔记9

Linux 进程间通信 介绍一下管道,管道是一种特殊的文件,它通过文件描述符来进行访问和操作 管道的读写操作是阻塞式的,如果没有数据可读,读操作会被阻塞,直到有数据可读;如果管道已满,写操作也…

CodeArts 6月体验官活动重磅来袭,限量领取华为GT系列手表!

千呼万唤始出来,CodeArts 6月体验官活动来啦! 为了让开发者更好地体验CodeArts,小编特意给大家准备了重磅好礼。 不仅有华为GT系列手表,还有开发者定制礼盒,更有多重定制好礼~ 快叫上小伙伴一起来体验CodeArts&…

2024年湖北职称评审面试答辩技巧有哪些?看完你就懂了

2024年度湖北省部分工程专业水平能力测试面试答辩开始了,答辩时间是:2024年6月15、16日。 测试地点:武汉市武昌区洪山侧路63号茶港军转小区1号楼(武汉大学西门旁) 水平能力测试注意事项: (一)报名参加202…

数据结构之归并排序算法【图文详解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

Kolmogorov–Arnold Networks (KAN) 即将改变 AI 世界

目录 一、说明 二、KAN介绍 2.1 什么是 Kolmogorov-Arnold Networks (KAN): 2.2 KAN 的秘诀,Splines! 2.3 了解KAN工作的最简单方法 三、KAN的主要优点 四、KAN 的 Python 实现 (PyKAN) 4.1 …

可燃气体报警器效检:预防事故,守护家园

在现代化工业生产、居民生活中,可燃气体报警器作为安全预防的重要工具,其准确性和可靠性直接关系到人们的生命财产安全。 因此,对可燃气体报警器进行定期效检,确保其处于最佳工作状态,是保障安全生产的必要措施。 接…

Java集合之List(超详细)

List是Java集合框架中一个非常重要的接口,它代表了一个有序的集合,允许元素重复,并且可以按照插入的顺序进行访问。 我们先来看看List在集合中的位置: List是单列集合接口Collection下的一个分支,另两个分支是Set和Qu…

【Redis数据库百万字详解】数据类型

文章目录 一、字符串类型概述1.1、数据类型1.2、字符串简介1.3、字符串应用场景 二、字符串命令三、哈希类型概述3.1、哈希介绍3.2、哈希类型应用场景3.3、哈希命令 四、列表类型概述4.1、列表简介4.2、使用场景4.3、列表命令 五、集合概述5.1、集合简介5.2、使用场景5.3、集合…

网络工程从头做-1

网络工程从头做-1 自下而上,从接入交换机开始网络的配置和规划 实验拓扑: 实验步骤: 1.完成基本配置 1.1 PC端IP地址信息配置略 1.2 接入层交换机S1配置 [Huawei]sys S1 [S1]undo in [S1]vlan b 10 20 [S1]int e0/0/1 [S1-Ethernet0/0/1]p l…

k8s怎么监听自定义资源的变更?(2)

接上一篇当生成下面代码之后怎么去使用呢? 1.生成crd文件 这里我们通过kubebuilder的一个子项目 controller-gen 来生成crd文件 https://github.com/kubernetes-sigs/controller-tools curl -L -o https://github.com/kubernetes-sigs/controller-tools; go ins…

D-Day 上海站回顾丨以科技赋能量化机构业务

5月31日下午,DolphinDB 携手光大证券,在上海成功举办 D-Day 行业交流会。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场,深入交流量化投研交易过程中的经验、挑战及解决方案。 DolphinDB 赋能机构业务平台 来自光…

1877java项目建设平台管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 项目建设平台管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开 发。开发环境为TOMCAT7.0,Myeclipse8.…

java表实体 蛇形转驼峰 正则匹配替换

java表实体 蛇形转驼峰 正则匹配替换 1.匹配寻找正则:([a-z])_([a-z])2.替换结果正则:$1\U$2\E效果如下图所示:

Python第二语言(三、Python函数def)

目录 1. Python函数(def 函数名():) 1.1 sorted对容器进行排序:无法指定排序规则 1.2 sort对容器自定义排序:可以指定排序规则 1.3 获取变量长度函数(len) 1.4 函数的定义 1.5 函数-传参定义 1.6 函…

OpenCV如何判断一张图片是否有过高的明暗变化

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 前言 判断一张图片是否有过高的明暗变化,可以通过分析图像的亮度分布一致性来实现。一种常见的做法是计算图像的亮度标准差(Standard …

免费,C++蓝桥杯等级考试真题--第7级(含答案解析和代码)

C蓝桥杯等级考试真题--第7级 答案:D 解析:步骤如下: 首先,--a 操作会使 a 的值减1,因此 a 变为 3。判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。因此,程…

ElementUI的Table组件在无数据情况下让“暂无数据”文本居中显示

::v-deep .el-table__empty-block {width: 100%;min-width: 100%;max-width: 100%; }

如何在npm上发布自己的包

如何在npm上发布自己的包 npm创建自己的包 一、一个简单的创建 1、创建npm账号 官网:https://www.npmjs.com/创建账号入口:https://www.npmjs.com/signup 注意:需要进入邮箱验证 2、创建目录及初始化 $ mkdir ufrontend-test $ cd ufron…