PC_OS中断/中断屏蔽字

news2024/11/18 18:44:08

文章目录

  • 程序中断🎃
    • 中断概念
      • 中断功能(作用)
      • 中断请求
      • 中断源
      • 中断分类
        • 外中断
          • 非屏蔽中断和可屏蔽中断
        • 陷入(内中断)
      • 硬件中断和软件中断
      • 关系整理🎈
    • 中断判优🎈中断优先级
      • CPU响应中断的条件
      • 外中断实现思路🎈
      • 中断隐指令 及其工作
        • ①关中断
        • ②保存断点
        • ③引出中断服务程序
      • 中断向量(入口地址)
        • 中断向量表(入口地址表)
    • 中断处理过程
    • 🎈对多中断源的处理方式
      • 1)屏蔽(禁止)中断/单重中断
      • 2)嵌套中断/多重中断
      • 屏蔽字
        • 优先级控制
    • 🎈中断处理程序(操作系统部分)
      • (1)测定是否有未响应的中断信号
      • (2)保护被中断进程的CPU环境
      • (3)转入相应的设备处理程序。
      • (4)中断处理
      • (5)恢复CPU的现场并退出中断
    • 小结:程序中断方式的思想
  • 🎈例:多重中断和中断屏蔽技术

程序中断🎃

  • 程序中断方式中断是现代计算机有效合理地发挥效能和提高效率的一个十分重要的功能。

  • CPU中通常设有处理中断的机构——中断系统,以解决各种中断的共性问题

中断概念

  • 计算机执行现行程序的过程中,出现某些急需要处理的

    • 异常情况
    • 特殊请求
  • 暂时终止现行程序,而转去对这些情况进行处理

  • 处理完后在返回到现行程的断点处,继续执行原程序

中断功能(作用)

  • 早期:
    • 处理数据传送
  • 现在
    • 实现cpu与IO设备的并行工作(parallel)
    • 处理硬件故障和软件错误
    • 实现人机交互
      • 用户干预机器需要借助于中断系统
    • 实时处理需要借助中断系统来实现快速响应
    • 实现应用程序和操作系统(管态程序)之间的切换
      • 称为软中断
    • 多处理器系统中各个处理器之间的信息交流和任务切换

中断请求

  • 中断请求:是指中断源向CPU发送中断请求信号

中断源

  • 中断源:请求cpu中断的设备或者事件
  • 一台计算机允许有多个中断源
  • 每个中断源向cpu发送中断请求的时间是随机的

中断分类

  • 根据中断源的类别,可把中断源分为内中断和外中断两种。
  • 每个中断源向CPU发出中断请求的时间是随机的。
  • 记录中断事件区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求
    • 这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中

外中断

  • 中断(外中断)是指:CPU对IO设备发来的中断信号的一种响应。

  • CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行该IO设备的中断处理程序

  • 执行完后,再回到断点,继续执行原来的程序。

    • IO设备可以是字符设备,也可以是块设备、通信设备等。
  • 由于中断是由外部设备引起的,故又称外中断

  • 外中断是指来自处理器和内存以外的部件引起的中断

    • 包括I/O设备发出的I/O中断
    • 外部信号中断(如用户按Esc键)
    • 以及各种定时器引起的时钟中断等。
    • 外中断在狭义上一般称为中断(后文若未说明,一般是指外中断)。
    • 硬件中断属于外中断
非屏蔽中断和可屏蔽中断
  • 非屏蔽中断:非屏蔽中断是一种硬件中断,此种中断通过不可屏蔽中断请求NMI控制,不受中断标志位IF的影响,即使在关中断(IF=0)的情况下也会被响应。
  • 可屏蔽中断:可屏蔽中断也是一种硬件中断,此种中断通过中断请求标记触发器INTR控制,且受中断标志位IF的影响,在关中断情况下不接受中断请求
  • 也就是说,可屏蔽中断和非屏蔽中断均是外中断

陷入(内中断)

  • CPU内部事件(运算过程中)所引起的中断,称为内中断陷入(trap)

  • 与(外)中断一样,若系统发现了有陷入事件,CPU也将暂停正在执行的程序,转去执行该陷入事件的处理程序。

  • 中断和陷入的主要区别信号的来源,即是来自CPU外部,还是CPU内部。

  • 内中断主要是指在处理器和内存内部产生的中断包括

    • 程序运算引起的各种错误
      • 如地址非法、
      • 校验错、
      • 页面失效、
      • 存取访问控制错、
      • 算术操作溢出、
      • 数据格式非法、
      • 除数为零、
      • 非法指令、
      • 用户程序执行特权指令、
      • 分时系统中的时间片中断及用户态到核心态的切换
      • 程序出错
      • 地址越界
      • 电源故障

硬件中断和软件中断

  • 硬件中断:通过外部的硬件产生的中断。

    • 属于外中断
  • 软件中断:通过某条指令产生的中断,这种中断是可以编程实现

    • 内中断是cpu运算引起错误导致
    • 软件中断是内中断

关系整理🎈

  • 内中断
    软件中断
    外中断
    硬件中断
  • 内中断

    • 软件中断
  • 外中断

    • 硬件中断
      • 非屏蔽中断
      • 可屏蔽中断

中断判优🎈中断优先级

  • 中断系统在任一瞬间只能响应一个中断源的请求。

  • 由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需通过中断判优逻辑确定响应哪个中断源的请求,

    • 例如故障中断的优先级别较高,然后是I/O中断。
    • 中断判优既可以用硬件实现,又可用软件实现。
    • 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,又可以分散在各个中断源中,
    • 软件实现是通过查询程序实现的
  • 中断响应优先级是指cpu响应中断请求的先后顺序

    • 细分:
      • 响应优先级
        • 在硬件上是固定的,不便改动
      • 处理优先级
        • 可以利用中断屏蔽技术动态调整,以实现多重中断
  • 经常会有多个中断信号源,每个中断源对服务要求的紧急程度并不相同

    • 例如,键盘终端的中断请求的紧急程度不如打印机,而打印机中断请求的紧急程度又不如磁盘等。
    • 为此,系统就需要为它们分别规定不同的优先级
  • 一般来说:

    • 不可屏蔽中断>内部异常>可屏蔽中断
      • 内部异常
        • 硬件中断>软件中断>
    • DMA中断请求优先于IO设备传送的中断请求
    • IO传送类中断
      • 高速设备>低速设备
      • 输入设备>输出设备
      • 实时设备>普通设备

CPU响应中断的条件

  • CPU在满足一定的条件下响应中断源发出的中断请求,并经过一些特定的操作,转去执行中断服务程序。
  • CPU响应中断必须满足以下3个条件:
    • ①中断源有中断请求
    • ②CPU允许中断开中断
    • 一条*指令执行完毕,且没有更紧迫的任务*。

外中断实现思路🎈

  • 注意:I/O设备的就绪时间是随机的,而CPU在统一的时刻每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求
  • 也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻
  • 这里说的中断仅指外中断内中断不属于此类情况。

中断隐指令 及其工作

  • CPU响应中断后,经过某些操作,转去执行中断服务程序。
  • 这些操作是由硬件直接实现的,我们将它称为中断隐指令
  • 中断隐指令并不是指令系统中的一条真正的指令,它没有操作码
    • 所以中断隐指令是一种不允许也不可能为用户使用的特殊指令。它所完成的操作如下:

①关中断

  • 在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行。

②保存断点

  • 为保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点[即程序计数器(PC)的内容]保存起来

③引出中断服务程序

  • 引出中断服务程序(中断服务程序寻址)的实质是,取出中断服务程序的入口地址并传送给程序计数器(PC)

中断向量(入口地址)

  • 不同的设备不同的中断服务程序
    • 每个中断服务程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量

中断向量表(入口地址表)

  • 把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表,即中断服务程序入口地址表

  • CPU响应中断后,中断硬件会自动中断向量地址传送到CPU,由CPU实现程序的切换,这种方法称为中断向量法

  • 采用中断向量法的中断称为向量中断

  • 注意:

    • 中断向量是中断服务程序的入口地址
    • 中断向量地址是指中断服务程序的入口地址的地址
  • 为了处理上的方便,通常是为每种设备配以相应的中断处理程序

  • 并把该程序的入口地址放在中断向量表的一个表项中,并为每一个设备的中断请求规定一个(标识:)中断号,它直接对应于中断向量表的一个表项

  • IO设备发来中断请求信号时,由中断控制器确定该请求的中断号

  • 根据该设备的中断号查找中断向量表,从中取得该设备中断处理程序的入口地址,这样便可以转入中断处理程序执行

中断处理过程

  • 不同计算机的中断处理过程各具特色,大致步骤

  • ①关中断。

    • 处理器响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU不应响应更高级中断源的中断请求。
    • 否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序。
  • 保存断点

    • 为保证中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来的程序的断点保存起来。
    • 断点可以压入堆栈,也可以存入主存的特定单元中。
  • ③中断服务寻址(引出中断服务程序)

    • 引出中断服务程序的实质是,取出中断服务程序的入口地址送入程序计数器(PC)。
    • 通常有两种方法寻址中断服务程序的入口地址:
      • 硬件向量法和软件查询法。
        • 硬件向量法通过硬件产生中断向量地址,再由中断向量地址找到中断服务程序的入口地址
        • 软件查询法用软件编程的办法寻找入口地址
    • 注意:硬件产生的实际上是中断类型号,而中断类型号指出了中断向量存放的地址,因此能产生中断向量地址。
  • ④保存现场和屏蔽字

    • 进入中断服务程序后首先要保存现场
    • 现场信息
      • 一般是指用户可见的工作寄存器的内容,
      • 包括
        • 程序状态字
        • 中断屏蔽寄存器和
        • CPU中某些寄存器的内容。
      • 存放着程序执行到断点处的现行值
      • 现场信息可以用指令直接访问,通常在中断服务程序中通过指令把他们保存到中,由**软件实现**
    • 断点信息
      • 由cpu在中断响应时自动保存到或者指定的寄存器中,由**硬件实现**
  • ⑤开中断。

    • 允许更高级中断请求得到响应,实现中断嵌套。
    • 注意这个阶段是在前一阶段:保存现场和屏蔽字之后开放
  • ⑥执行中断服务程序。

    • 这是中断请求的目的
  • ⑦关中断(保卫下一阶段工作)

    • 保证在恢复现场和屏蔽字时不被中断
  • ⑧恢复现场和屏蔽字。

    • 将现场和屏蔽字恢复到原来的状态。
  • ⑨开中断、中断返回。

    • 中断服务程序的最后一条指令通常是一条中断返回指令
    • 使其返回到原程序的断点处,以便继续执行原程序。
  • 其中,

    • ①〜③在CPU进入中断周期后,由中断隐指令(硬件自动)完成
    • ④〜⑨由中断服务程序完成(软件完成)。
    • 注意:
      • 恢复现场是指在中断返回前,必须将寄存器的内容恢到中断处理前的状态,这部分工作由中断服务程序完成
      • 中断返回中断服务程序的最后一条中断返回指令完成。

🎈对多中断源的处理方式

  • 对于多中断信号源的情况,当处理机正在处理一个中断时,又来了一个新的中断请求,这时应如何处理?
    • 例如,当系统正在处理打印机中断时,又收到了优先级更高的磁盘中断信号。
    • 对于这种情况,可有两种处理方式:
      • 屏蔽(禁止)中断
      • 嵌套中断

1)屏蔽(禁止)中断/单重中断

  • 当处理机正在处理一个中断时,将屏蔽掉所有的中断,即处理机对任何新到的中断请求,都暂时不予理睬,而让它们等待。

  • 直到处理机已完成本次中断的处理后,处理机再去检查是否有中断发生。

  • 若有,再去处理新到的中断,若无,则返回被中断的程序。

  • 在该方法中,所有中断都将按顺序依次处理

  • 其优点是简单,但不能用于对实时性要求较高的中断请求

2)嵌套中断/多重中断

屏蔽字

  • 现代计算机一般使用中断屏蔽技术
    • 每个中断源都有一个屏蔽触发器
      • 1表示屏蔽(该中断源的请求 1 → D e n y 1\to{Deny} 1Deny)
      • 0表示可以正常申请中断( 0 → O K 0\to{OK} 0OK)
    • 所有屏蔽触发器组合在一起,构成一个屏蔽字寄存器
    • 屏蔽字寄存器的内容称为屏蔽字

优先级控制

  • 在设置了中断优先级的系统中,通常按这样的规则来进行优先级控制;
    • (1)当同时有多个不同优先级的中断请求时,CPU优先响应最高优先级的中断请求;
    • (2)高优先级的中断请求可以抢占正在运行的低优先级中断的处理机
      • 该方式类似于基于优先级的抢占式进程调度
      • 例如,处理机正在处理打印机中断,当有磁盘中断到来时,可暂停对打印机中断的处理,转去处理磁盘中断。
      • 如果新到的是键盘中断,由于它的优先级低于打印机的优先级,故处理机继续处理打印机中断
    • 对于同级别的多个中断,它们将按照先来后到的顺序,即相互屏蔽
      • 这些中断分别标记位KaTeX parse error: Undefined control sequence: \set at position 17: …_i^{[k]};i,j\in\̲s̲e̲t̲{1,2,\cdots},k表示优先级同为k
        • 那么 X i 比 X i + j X_i比X_{i+j} XiXi+j先处理

🎈中断处理程序(操作系统部分)

  • 当一个进程A请求I/O操作时,该进程A将被挂起
  • 直到I/O设备完成I/O操作后,设备控制器便向CPU发送一个中断请求(表示资源可用了)
  • CPU响应后便转向中断处理程序,中断处理程序执行相应的处理,处理完后解除进程A的阻塞状态
  • 中断处理程序的处理过程可分成以下几个步骤:

(1)测定是否有未响应的中断信号

  • 每当设备完成一个字符(字或数据块)的读入(或输出),设备控制器便向处理机发送一个中断请求信号。
  • 请求处理机将设备已读入的数据传送到内存的缓冲区中(读入),或者请求处理机将要输出的数据(输出)传送给设备控制器。
  • 程序每当执行完当前指令后,处理机都要测试是否有未响应的中断信号
    • 若没有,继续执行下一条指令。
    • 若有,则停止原有进程的执行,准备转去执行中断处理程序,为把处理机的控制权转交给中断处理程序做准备。

(2)保护被中断进程的CPU环境

  • 在把控制权转交给中断处理程序之前,需要先保护被中断进程的CPU环境,以便以后能恢复运行。
  • 首先需要保存的是,从中断现场恢复到当前进程运行所需要的信息
  • 通常由硬件自动将以下内容保存在中断保留区(栈)中
    • 处理机状态字(PSW)
    • 保存在程序计数器(PC)中下一条指令的地址NextAddress,简记为N+1(这样方便从中断处理程序换源断点现场信息和断点信息,仿佛中断没有发生过一样回来继续执行的时候可以直接执行)
  • 然后,把被中断进程的CPU现场信息,即,将包括所有CPU寄存器的内容都压入中断栈中,比如
    • 通用寄存器
    • 段寄存器等
  • 在中断处理时可能会占用到这些寄存器,因此要先将原内容保存起来
  • 下图:该程序是指令在N位置时被中断的,程序计数器中的内容为N+1,所有寄存器的内容都被保留在中。
    • image-20220604094104129

(3)转入相应的设备处理程序。

  • 由处理机对各个中断源进行测试,以确定引起本次中断的I/O设备,并向提供中断信号的设备发送确认信号。
  • 在该设备收到确认信号后,就立即取消它所发出的中断请求信号
  • 然后,将相应的设备中断处理程序的入口地址装入到程序计数器中。
  • 这样,当处理机运行时,便可自动地转向中断处理程序。

(4)中断处理

  • 对不同的设备,有不同的中断处理程序。
  • 该程序首先从设备控制器中读出设备状态,以判别本次中断是正常完成中断还是异常结束中断
  • 若是正常完成,中断程序便做结束处理
    • 假如这次是字符设备的读操作,则来自输入设备的中断是表明该设备已经读入了一个字符(字)的数据,并已放入数据寄存器中。
    • 此时中断处理应将该数据传送给CPU,再将它存入缓冲区中,并修改相应的缓冲区指针,使其指向下一个内存单元。若还有命令,可再向控制器发送新的命令,进行新一轮的数据传送。
  • 若是异常结束中断,则根据发生异常的原因做相应的处理

(5)恢复CPU的现场并退出中断

  • 中断处理完成以后,需要恢复CPU的现场,退出中断。
  • 但是,此刻是否返会到被中断的进程X,取决于两个因素:
    • ①本中断是否采用了屏蔽(禁止)中断方式,若是,就会返回被中断的进程X
    • ②采用的是中断嵌套方式
      • 如果没有优先级更高的中断请求IO,在中断完成后,仍会返回被中断的进程X
      • 反之,系统将处理优先级更高的中断请求。
    • 如果是要返回到被中断的进程,可将保存在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中,其中包括该程序下一次要执行的指令的地址N+1处理机状态字PSW,以及各通用寄存器和段寄存器的内容
    • 这样,当处理机再执行本程序时,便从N+1处开始,最终返回到被中断的程序

小结:程序中断方式的思想

  • CPU在程序中安排好于某个时刻启动某台外设(外设启动就绪是需要一定的时间)

    • 然后CPU继续执行原来的程序
    • 不需要像程序查询方式那样一直等待外设准备就绪。
  • 一旦外设完成数据传送的准备工作,就主动向CPU发出中断请求,请求CPU为自己服务。

  • 在可以响应中断的条件下,CPU暂时中止正在执行的程序,转去执行中断服务程序为外设服务

    • 在中断服务程序中完成一次主机与外设之间的数据传送**,传送完成后,CPU返回原来的程序

🎈例:多重中断和中断屏蔽技术

  • 中断屏蔽技术主要用于多重中断。CPU 要具备多重中断的功能,必须满足下列条件:
    • 在中断服务程序中提前设置开中断指令。
    • 优先级别高的中断源有权中断优先级别低的中断源。

  • 设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求
    将中断处理次序改为D>A>C>B。
    1)写出每个中断源对应的屏蔽字
    2)根据时间轴给出的4个中断源的请求时刻,画出CPU执行程序的轨迹(**程序§-时间(t)**图像)(设每个中断源的中断服务程序时间长头20us)

    • 4个中断源对应的请求时刻:
      • B:5
      • D:10
      • A:35
      • C:60
    • 1)在中断处理次序改为D>A>C>B后,逐个分析屏蔽情况

      • D具有最高优先级

        • 可以屏蔽其他所有中断,且不能中断自身,(即屏蔽D,A,C,B全部)
        • 因此D对应的屏蔽字为1111;
      • A屏蔽A,C,B,

        • A对各个中断源的屏蔽二进制代码
          • A:1
          • B:1
          • C:1
          • D:0
        • 因此A对应的屏蔽字为1110,
      • C屏蔽C,B

        • C对各个中断源的屏蔽二进制代码:
          • A:0
          • B:1
          • C:1
          • D:0
        • C的屏蔽字为0110
      • B屏蔽自身(B)

        • B:1
        • 其余全为1
        • B的屏蔽字为0100
  • 2)根据中断源发出请求的时间顺序以及处理不同中断源的优先级进行多重中断分析

    • 在时刻5,B发中断请求,获得CPU;
    • 在时刻10,D发中断请求,
      • 5~10时间段内,cpu执行了5us的任务B
      • 此时B还未执行完毕(还需要15=20-5)us,
      • 根据处理优先级,D的优先级高于B,于是D中断B而获得CPU;
      • D占用20us(此时时间线到了10+20=30us)完成任务后范围到B的中断程序处继续执行
    • 在时刻30,D执行完毕,B继续获得CPU
    • 时刻35,A发出中断请求
      • 30~35时间段内,cpu执行了5us的任务B
      • 此时B还未执行完毕(还需要15-5=10us)
      • 根据处理优先级,A的优先级更高,
      • 于是A中断B而获得CPU;
      • 由于下一个中断信号是在时刻60到达,60-35=25>20
      • 即A的任务可以完成,而且还有盈余的时间回到被A中断的B串继续执行25-20=5us的时间
    • 时刻55(=35+20),A执行完毕
      • 回到B执行
    • 时刻60,C发出中断
      • 55~60时间段,cpu执行了5us的任务B
      • 此时B还未结束(还有10-5=5us)
      • 但是C优先级更高,C中断B(抢夺了B的cpu资源)
      • C发出的是最后一个中断信号
      • 知道执行完毕(耗时20us)
      • 回到被中断的B任务
    • 时刻80=(60+20),C任务结束
      • 回到被C中断的断点继续执行B
      • 此时B还需要5us,
      • 因此到了时刻85,结束全部任务
    • 在这里插入图片描述
      • 纵坐标就按照字母顺序从低到高升序排列即可
    • 在这里插入图片描述

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

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

相关文章

下一个倒下的是不是Genesis

今日,一个关于“Genesis今晚破产”的传言在各个社交平台传播,包括行业的KOL也在讨论这个事情,认为Genesis或存在偿付能力问题,该公司将于美国东部时间11月17日8:00am与债权人通话以解释情况。若消息属实,Ge…

【AGC】flutter之agconnect_crash在ios上崩溃

问题背景 flutter agconnect_crash-1.2.0300 运行在ios平台上,出现了如下这个崩溃 NSInvalidArgumentException: *** [NSJSONSerialization dataWithJSONObject:options:error:]: value parameter is nil 0 CoreFoundation 0x00000001830d005c 0x183037000 62678…

视频讲解vue2基础之渲染v-if/v-show/v-for/v-html

大家好,我是你们的老朋友lqj_本人,最近一周没有更新文章了,是因为最近学校有一些活动比赛,也有一部分原因就是我在录制一些关于前端方面的视频,涉及到的领域主要一前端,比如:H5开发,…

项目经理如何搞懂难缠的客户【静说】

作为乙方的项目经理,是否经常遇见难缠的客户,现环境下,大部分都是甲方强势,乙方弱势,双方处于一种不对等的基础上,项目经理如何生产,成功交付项目呢? 流程机制上如何应对&#xff1…

计算机毕业设计jsp教师课堂教学评价系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教师课堂教学评价系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql&#xff0c…

智慧公交解决方案-最新全套文件

智慧公交解决方案-最新全套文件一、建设背景二、思路架构三、建设方案3大能力:1、数据驱动的智慧公交全息感知能力2、精细化精准化的公交健康诊断能力3、高品质的公交运营组织能力6大系统:1、公交线网健康诊断系统2、职能部门指挥决策支持系统3、公共出行…

Spring读取.xml和通过Java类配置对比

Spring读取配置文件获取容器,通过容器获得javaBean演示 1.创建一个空项目 配置项目JDK 新建module 选择Maven项目 注意路径 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"…

C实现扫雷小游戏(简易版)

你知道&#xff0c;有些鸟儿是注定不会被关在牢笼里的&#xff0c;它们的每一片羽毛都闪耀着自由的光辉。——《肖申克的救赎》 目录 1、设计框架 2、设计流程 2.1菜单 2.2初始化雷阵 2.3生成雷 2.4玩家输入坐标 2.5显示有多少个雷 3、所有程序的源码 3.1game.h 3.2…

Slimming剪枝方法

本文参考&#xff1a;5-剪枝后模型参数赋值_哔哩哔哩_bilibiliz https://github.com/foolwood/pytorch-slimming 一、模型剪枝理论说明 论文&#xff1a;Learning Efficient Convolutional Networks through Network Slimming &#xff08;1&#xff09;卷积后得到多个特征图…

通过逻辑回归和感知器算法对乳腺癌数据集breastCancer和鸢尾花数据集iris进行线性分类

逻辑回归和感知器算法进行线性分类 代码使用了LogisticRegression和Perceptron两种分类方法 # 使用LogisticRegreeion分类器学习和测试 lr LogisticRegression() lr.fit(X_train_scaler, y_train) y_pred_lr lr.predict(X_test_scaler)#定义感知机 perceptron Perceptron(…

N3-PEG-ALD,Azide-PEG-Aldehyde,醛基-聚乙二醇-叠氮

1、名称 英文&#xff1a;N3-PEG-ALD&#xff0c;Azide-PEG-Aldehyde 中文&#xff1a;叠氮-聚乙二醇-醛基 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Aldehyde / Acetal PEG Azide PEG 4、分子量&#xff1a;可定制&#xff0c;5000 N3-PEG-ALD、10000 叠氮-PEG…

用html做一个漂亮的网站【茶文化12页】期末网页制作 HTML+CSS网页设计实例 企业文化网站制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【仿牛客网笔记】项目进阶,构建安全高效的企业服务——Spring Security

https://spring.io/projects/spring-security 认证判断用户有没有登录。 授权 是访问有没有访问的权限 Spring MVC 的核心组件是DispatcherServlet&#xff0c;所有的组件都是交给DispatcherServlet处理&#xff0c;然后将请求分发给控制器&#xff0c;具体由某个控制器控制请求…

如何在微信上制作小程序?【制作小程序的方式】

很多人想知道如何在微信上制作小程序&#xff0c;毕竟小程序现在已经成为了我们每天都会使用到的轻应用。在微信上制作小程序之前&#xff0c;要先了解自己想要做出什么的小程序&#xff0c;才能下手开展小程序制作。那么下面就介绍三种如何在微信上制作小程序的方式。 1、懂编…

彻底搞懂SwaggerKnife4j使用方法

&#xff08;一&#xff09;、准备 1、SpringBoot项目 说明&#xff1a;前后端分离前提下&#xff0c;前端是一个独立项目&#xff0c;因此该SpringBoot无需添加Thymeleaf依赖&#xff01; 2、vo类 Employee类&#xff1a; package com.soft.vo;import java.util.Date;publ…

Hadoop与Spark的使用,HBase分布式数据库安装及操作实验

docker pull harisekhon/hbase:1.3 docker run -d --name hbase001 -p 16010:16010 harisekhon/hbase:1.3 进入环境 docker exec -it hbase001 bash hbase shell 按照一个特定的值来查找 hbase(main):003:0> scan students,{FILTER>"ValueFilter(,binary:20202…

Matplotlib教程一

文章目录一.简介二.Mapltlib的简单使用2.1 Pylot的API2.2 Pylab模块2.3 matplotlib简单绘图三.Mapltlib进阶使用3.1 面向对象思想画图3.2 Figure类3.3 Axes类3.4 画布上创建多个子图3.5 图中添加网格3.6 设置图片轴线3.7 保存图片一.简介 matplotlib是最初由John D.Hunter于20…

Shell脚本编程(一) —— 变量定义(用户自定义变量、位置变量、预定义变量、环境变量)

目录 1、用户自定义变量 2、位置变量 3、预定义变量 4、环境变量&#xff08;一次性全局变量&#xff09; 5、永久全局变量&#xff08;重启以后依然存在的变量&#xff09; (1) 本地变量文件 (2) 全局变量文件 1、用户自定义变量 定义变量&#xff1a; 变量名value …

九、propTypes验证

目标 理解类型验证的必要性 灵活掌握类型验证的使用 知识点 在给react组件传属性的的时候&#xff0c;我们可以定义属性的类型&#xff0c;此时我们需要下载prop-types这个库。 安装prop-types npm install prop-types -S引入和使用 import PropTypes from prop-types;cla…

winform语言切换C#设计笔记(八)

一、修改当前区域性 string languageName“zh-CN”; Thread.CurrentThread.CurrentUICulture new CultureInfo(languageName); 二、定义语言切换类Mullanguage或方法如下&#xff1a; private static Dictionary<string, ResourceManager> ResManagerDic new Dictionar…