操作系统教材第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 #同时发生 优先级优先响应 响应并处理未屏蔽 再处理优先响应

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

表达式求值中的“整型提升”概念

一.基本原理和概念 如:代码 char a,b,c ; a b c ; 该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后,再将数据进行截断存放在内存存放变量 a 的空间中。 (1)提升和截…

【quarkus系列】实战自定义注解实现策略模式分发

目录 序言自定义注解业务接口渠道消息实现策略分发测试知识扩展AnyAnnotationLiteral 应用场景和语法 序言 策略模式大家都应该了解或者使用过,此篇文章中就不再阐述,之前springboot项目中小编也真正的实战应用过。现在换Quarkus框架开发项目&#xff0…

Java面试题:Redis双写一致性问题

Redis双写一致性 缓存和数据库数据同步 正常流程: 读操作: 查询缓存,查询命中直接返回,没命中查询数据库将查询到的数据写入缓存,并设定超时时间 写操作: 删除缓存,修改数据库,在延时一段时间后再删除缓存 (延迟双删)延迟:等待数据库的主节点同步到从节点 因为如果先删…

C++实现,简单的命令行交互框架

目录 背景背景 在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过命令行输入命令的方式完成测试验证,将大大提升工作效率,下面的示例程序是一…

【C语言】一节课拿捏---动态内存分配

谢谢观看!希望以下内容帮助到了你,对你起到作用的话,可以一键三连加关注!你们的支持是我更新地动力。 因作者水平有限,有错误还请指出,多多包涵,谢谢! 目录 一、 为什么要有动态内存…

winscp无法上传,删除,修改文件并提示权限不够的分析

使用winscp删除文件,报了个错如下 根据这个错就去百度,网上大部分都是通过下面这种方法解决: 在winscp端进行设置 输入主机名(即IP地址)、用户名和密码,然后点击高级 在箭头所指位置输入sudo + sftp应用程序的路径 先查询 sudo find / -name sftp-server -print点击Sh…

springboot项目中第三方jar包打包进jar包

springboot项目中,如果手动引入了jar包,打包时不会将手动引入的第三方jar包打包进价包里,如何处理? 若第三方的jar包的lib和src同级,则maven打包时默认不会将lib下的jar包打包进jar包,处理方式有两种&#…

neo4j入门并使用案例说明

1、neo4j是什么 Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络(在数学角度称为图)上,而不是传统的表中。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。它因其高性能、轻量级、易嵌入和…

c++(内存分配,构造,析构)

#include <iostream>using namespace std; class Per { private:string name;int age;double *height;double *weigh; public://无参构造Per(){cout << "Per::无参构造" << endl;}//有参构造Per(string name,int age,double height,double weigh):…

私募状告基金经理,七千月薪被索赔上百万

一个私募机构的基金经理&#xff0c;月薪七千元&#xff0c;但是却被公司诉讼追索100多万元赔偿。 这样“奇葩”的事情&#xff0c;不仅发生在视频网剧里&#xff0c;也发生在现实生活中。 根据日前相披露的一则案件文书&#xff0c;一家江浙一带的私募机构日前把自己的“基金…

docker create rm export exec命令详解

容器生命周期管理命令教程-3 1. 创建容器 docker create&#xff1a;创建一个新的容器但不启动它。 docker create -it --name mycontainer ubuntu bash通常使用 docker run(详细可看上一篇关于run命令的详细介绍) 2. 删除容器 docker rm&#xff1a;删除一个或多个容器。 d…

计算机网络9——无线网络和移动网络1 无线局域网 WLAN2

文章目录 一、802.11局域网的 MAC 层协议1、CSMA/CA协议2、时间间隔 DIFS 的重要性3、争用信道的过程4、对信道进行预约 二、802.11局域网的 MAC 帧1&#xff09;关于 802.11 数据帧的地址2&#xff09;序号控制字段、持续期字段和帧控制字段 一、802.11局域网的 MAC 层协议 1…

Spring boot+vue前后端分离

目录 1、前端vue的搭建 2、后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 service层 imp层 mapper 实体类 额外写一个类、解决跨域问题 3、测试 1、前端vue的搭建 建立项目的过程略 开启一个建立好…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化&#xff0c;营销系统作为企业营销管理的重要组成部分&#xff0c;扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用&#xff0c;从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

Leetcode3168. 候诊室中的最少椅子数

Every day a Leetcode 题目来源&#xff1a;3168. 候诊室中的最少椅子数 解法1&#xff1a;模拟 代码&#xff1a; /** lc appleetcode.cn id3168 langcpp** [3168] 候诊室中的最少椅子数*/// lc codestart class Solution { public:int minimumChairs(string s){int chair…

学习笔记——路由网络基础——浮动静态路由(路由备份和冗余)

2、浮动静态路由(路由备份和冗余) (1)基本概念 浮动静态路由是两条或多条链路组成浮动路由。当到达某一网络有多条路径&#xff0c;通过为静态路由设置不同的优先级&#xff0c;你可以指定主用路径和备用路径。当主用路径不可用时&#xff0c;走备用路径的静态路由进入路由表…

LeakSearch:针对网络公开凭证的安全扫描与检测工具

关于LeakSearch 在红队演戏过程中&#xff0c;往往需要获取到针对目标域的访问权限。在这个过程中&#xff0c;很多红队人员会选择使用暴露在互联网上的代理服务器来实现目标域的访问&#xff0c;那么此时就需要在互联网上收集公开暴露的凭证信息。 对于蓝队来说&#xff0c;…

使用HTML、CSS和Javascript编写一个注册界面(二)

倘若代码中有任何问题或疑惑&#xff0c;欢迎提出交流哦~ 在上一篇文章我们实现了页面的建设&#xff0c;接下来我们实现JavaScript交互逻辑。 交互功能&#xff1a; 密码显示当用户输入的内容不符合规范时报错在提交注册界面是若有报错则提交失败 密码显示 要实现密码显示的…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种&#xff09;&#x1f339;&#x1f339;&#x1f339; 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成&#x1f339;&#x1f339;&#x1f339; 三、Ingress 工作原理&#x1f431;&#x1f…

TSR,FSR,DLSS超级分辨率的原理分析

先了解一些时域抗锯齿的方法&#xff1a; TAA&#xff1a; 抖动 TAA 的主要原理是跨帧计算多个子像素样本&#xff0c;然后将它们组合成一个最终像素。最简单的方案是在像素内生成随机样本&#xff0c;但有更好的方法来生成固定序列的样本。选择一个好的序列以避免聚集非常重…