linux异常处理 linux查看软件运行状态
各位老铁们好,相信很多人对linux异常处理都不是特别的了解,因此呢,今天就来为大家分享下关于linux异常处理以及linux查看软件运行状态的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
linux内存管理:页错误异常处理(page fault)的实现
在Linux内存管理中,页错误异常处理,即所谓的page fault,是处理器在取指令或数据时,内存管理单元需要将虚拟地址转换为物理地址。若虚拟页未映射至物理页或未获得访问权限,处理器将生成页错误异常。
当虚拟页没有映射到物理页,通常称为缺页异常。此情况包括:访问用户栈超出范围、进程首次访问未分配物理页的虚拟内存区域、内存不足时回收文件页、进程错误访问非分配虚拟内存区域。若页错误异常处理成功映射虚拟页至物理页,处理器将重新执行触发异常的指令。若为程序错误,异常处理程序将发送段违法信号,终止进程。
若访问权限缺失,异常情况有两种:有意软件导致的写时复制(Copy on Write)错误,如子进程以只读方式共享进程的匿名页和文件页时,触发异常;程序错误,如尝试写入只读物理页。处理方式类似,成功映射虚拟页至物理页后,处理器将重新执行异常指令;程序错误时,异常处理程序发送段违法信号,终止进程。
不同处理器架构的页错误异常处理有所不同。页错误异常处理程序的前部由各架构自定义,后续部分(如handle_mm_fault函数)则为所有架构通用。x86架构的特定异常处理流程包括:从cr2获取异常地址、检查地址处于内核态或用户态、处理异常地址在vmalloc区域或非vmalloc区域的情况等。
在用户空间中,页错误异常指进程访问用户虚拟地址时触发的异常。异常处理程序需确认数据读取至物理内存的适当方法,这委托给handle_mm_fault函数,该函数在内存管理框架下独立实现。若虚拟地址属于进程的虚拟内存区域且具有访问权限,程序将执行handle_mm_fault,处理流程涉及页目录项的确认和页表映射等。
匿名页的缺页异常通常与私有匿名页相关,do_anonymous_page函数处理此情况。文件页的缺页异常涉及共享匿名页和文件页的处理,__do_fault函数负责此过程,读文件页错误处理通过do_read_fault函数实现。写时复制(Copy on Write)机制允许子进程和父进程共享匿名页和文件页,当其中一个进程尝试写入只读页时,触发异常,异常处理程序将分配新物理页,复制旧页数据,然后重新映射虚拟页。文件页读取错误由函数do_read_fault处理,文件页写入错误则需执行写时复制,分别通过do_cow_fault和do_shared_fault函数处理。
内核访问内核虚拟地址时,通常不会出现虚拟页未映射到物理页的情况,因为内核使用线性映射区域的虚拟地址。但在访问用户虚拟地址时,若生成页错误异常,页错误异常处理程序需检查用户虚拟地址是否分配给进程,如未分配,将寻找指令地址对应的异常修正程序,以避免内核崩溃。
当处理器开始处理异常时,异常的挂起状态如何处理
热门频道
首页
博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright© 1999-2020, CSDN.NET, All Rights Reserved
arm
打开APP
ARM异常处理(2):中断的输入和挂起的6种情况分析原创
2022-12-05 14:14:43
tilblackout
码龄6年
关注
本节将描述中断输入和挂起的分析,这也同样适用于NMI输入,NMI在大多数情况下都将立即执行,除非:已经在执行NMI中断处理程序、由调试器暂停或由于一些严重的系统错误导致芯片锁定。
1、
当一个中断输入时,它将被挂起,然后被置于等待处理器处理请求的状态,此时即使失能该中断源,挂起的中断最后仍会触发其相应的中断处理程序,而一旦中断处理程序开始执行,该挂起状态将被自动清除。
在这里插入图片描述
2、
但是,如果挂起状态在处理器开始响应挂起中断之前被清除(例如,因为PRIMASK/FAULTMASK被设置为1,中断没有被立即执行,且挂起状态需要通过软件写NVIC中断控制寄存器来清除),此时中断是可以被取消的。
在这里插入图片描述
中断的挂起状态可以通过访问NVIC寄存器来读写,所以用户可以清除一个挂起的中断标志位或者用软件设置挂起寄存器以挂起一个新的中断。
3、
当处理器开始执行一个中断时,该中断的状态变为active,且挂起的位将被自动清除。同一个中断处理函数在处理的过程中不能嵌套,只有当异常退出(exception exit)将其active状态被清除后,才可以继续响应同一中断。
在这里插入图片描述
4、
如果中断源继续发送中断请求信号,中断将会在终端服务处理函数的最后被再次挂起。
在这里插入图片描述
5、
如果一个中断在被处理之前在中断请求线上产生了多个脉冲,它将被处理一次。
在这里插入图片描述
6、
如果一个中断的请求被取消,然后在中断服务程序中再次被触发,它将再次被挂起
在这里插入图片描述
总结:
即使中断被失能,挂起的中断仍然可能产生
被失能的挂起的中断在后面将其使能时仍然可以被触发
因此,在启用中断之前,检查是否设置了挂起寄存器是很有用的。中断源可能在你启用之前就已经被激活并设置了挂起状态。如果有必要,可以在启用中断之前清除挂起状态。
点击阅读全文
打开CSDN,阅读体验更佳
【RTOS】ARM Cortex-M异常处理过程
Cortex-M3与Cortex-M4 1.处理器输入、输出和外设访问一般来说,外设在使用前需要初始化,一般包括以下几步:如果需要,设置时钟控制回路使能连接到外设和对应引脚的时钟。许多现代微控制器允许对时钟信号分布的精细调节,如使能/禁止到每个外设的时钟连接以节省功耗。外设时钟一般是默认关闭的,需要在编程外设前使能时钟。有些情况下,可能还需要使能外设总线系统的时钟。有些情况下,可能还需要配置I/O引脚的操作模式。大多数微控制器都有复用的I/O引脚,可用于多种目的。为了使用外设,配置I/O引脚以匹配
继续访问
ARM:ARM中断异常的处理流程
裸板开发中,使用的就是现在的框架:……………………………………………………………… main(void){//一系列的初始化 while(1){//周期性的事物}}↓+↓异常处理(异步事件的处理)………………………
继续访问
ARM V8A体系结构-第十章 AArch64异常处理
概述严格地说,中断是指中断软件执行的流程。然而,在ARM术语中,这通常称为异常。异常是指需要特权级(异常处理程序)执行某些操作以确保系统顺利运行的条件或系统事件。每个异常都有一个相关的异常处理程序。一旦异常得到处理,特权级软件会将core恢复到处理异常前的位置,以继续处理它正在做的事情。存在的异常类型如下:中断:有两种类型的中断称为IRQ和FIQ。FIQ的优先级高于IRQ。...
继续访问
最新发布 ARM异常处理(1):异常类型、优先级分组和异常向量表
Cortex-M3提供了一个功能丰富的异常体系结构,它支持很多系统异常和外部中断。异常编号1-15表示系统异常,16及以上表示外部中断输入。大多数异常具有可编程优先级,少数具有固定优先级。当前正在运行的异常可以通过特殊寄存器或者中的字段来查看。当一个使能的异常产生但不能被立即执行的时候(比如有一个更高优先级的中断服务程序正在处理),它会被挂起。
继续访问
ARM中断和异常
中断的定义:在CPU在执行一个程序时,对系统发生的某个事情,作出一种反应:CPU暂停正在执行的程序,保护现场后自动转去处理相应的事件,处理完该事情,到会返回刚才的位置。例子:如读盘,盘有问题,无法读,产生中断,解决后,程序恢复,软件错误也会中断。特点: 1)中断随机的,提高实时性。 2)中断是可恢复的 3)中断是自动进行处理的中断源
继续访问
ARM之六 Cortex-M内核中断/异常系统、中断优先级/嵌套详解
问题最近在使用STM32F3芯片的时候,遇到这样一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断如何处理?在调试时,发现有中断有挂起、激活、失能等状态,考虑这些状态都是干啥用的呢!他们是Cortex-M核所共有的,因此这里不针对与具体用的STM32 MCU,直接上升到 Cortex-M内核来了解一下!简介 中断(也称为“异常”)是微控制器一个很常见的特性。中断一......
继续访问
Linux操作系统原理与应用05:中断和异常
目录 1.中断概述 1.1什么是中断 1.2为什么引入中断 1.3中断的分类 1.4 CPU什么时候响应中断 2.中断控制器简介 2.1中断的C/S模型结构 2.2作为中介的中断控制器 2.3高级可编程中断控制器(APIC) 2.4机制与策略分离的中断机制 3. Linux内核中断子系统框架 4.中断向量与中断描述符表 4.1中断向量 4.1.1中断向量的概念 4.1.2中断向量的分配 4.2中断描述符表(IDT) 4.2.1实模式中断向量表
继续访问
ARM处理器~中断与异常
教材:嵌入式系统及应用,罗蕾、李允、陈丽蓉等,电子工业出版社中断与异常定义ARM中的工作模式除 User和 System外,均为异常模式,这里的异常是广义的,包含以下三类情况外部中断(外部中断)由于 CPU外部的原因而改变程序执行流程,属于异步事件,可以屏蔽软件中断(自陷)通过处理器拥有的软件指令,可预期地使正在执行的程序改变执行流程,以执行特定的程序显式的事件,无条件执行属同步事
继续访问
嵌入式-ARM-学习总结(7):按键与中断
嵌入式-ARM-学习总结(7):按键与中断一、按键1.S5PV210的按键2.按键的2中相应方法:轮询方式和中断方式3.按键对应的GPIO模式设置4.轮询方式处理按键的程序流程5.代码编写6.按键消抖二、中断1.什么是中断2.为什么需要中断3.异常向量表4.异常和中断的区别和联系5.为什么中断处理要先在汇编中进行6.中断的基本过程7.S5PV210中断处理的主要寄存器三、中断代码(1)绑定中断异常向量表(2)初始化中断控制器的基本寄存器(3)绑定我们写的isr到VICnVECTADDR寄存器(4)使能中断(
继续访问
异常和中断
一、异常和中断简介中断一般由硬件(如外设和外部输入引脚)产生的事件,它会引起程序流偏离正常的流程(如给外设提供服务)。当外设或硬件需要处理器的服务时,一般会出现下面的流程:①外设确认到处理器的中断请求。②处理器暂停当前执行的任务③处理器执行外设的ISR,若有必要可以选择由软件清除中断请求。④处理器继续执行之前暂停的任务。所有的cortex-m处理器都会提供一个用于中断处理的嵌套向量中断控制器(NVIC)。除了中断请求,还有其他需要服务的事件,将其称为异常。按照ARM的说法,中断也是一种异常。co
继续访问
十.ARM裸机学习之中断系统2(S5PV210按键外部中断及中断处理)
一.轮询方式处理按键参考 E:\Linux\8.key_open二.中断方式处理按键 2017/11/21 23:30参考: 1.异常向量表分析:(1)、复位(
继续访问
ARM之按键K2触发中断,并在超级终端上打印‘S‘
ARM之按键K2触发中断,并在超级终端上打印'S'
继续访问
嵌入式RTOS---异常和中断处理流程
ARM中断体系以S3C2440讲解 1中断体系硬件原理中断处理分为统一的中断处理和独立的中断处理; 1.1统一的异常和中断处理 1.1.1 ARM的异常模式所谓异常,指的是中止了程序正常的执行过程而不得不完成一些特殊的工作(异常工作)。中断也是一种异常,中断包括由外部硬件产生的外部中断和内部硬件产生的内部中断。异常分为同步异常(SWI软件指令产生的异常)和异步异...
继续访问
ARM V8程序指南——第十章 AArch64异常处理(翻译)
第十章 AArch64异常处理严格来说,中断是说软件执行流程的东西,但是,在arm术语中,统称为异常。异常是需要特权软件(异常处理程序)执行某些操作以确保系统顺利运行的条件或系统事件。每种异常类型都有一个异常处理程序。一旦处理完异常,特权软件就会让内核准备好恢复它在处理异常之前所做的任何事情。下面介绍了几种异常: Interrupt:一般有两种,分为irq和 fiq。fiq的优先级高于IRQ,这两种异常通常都与内核上的输入引脚相关。假设中断未被禁用,外部硬件断言了一个中断请求并在当前指令完成执行时
继续访问
ARM之十二 Cortex-M内核异常处理、异常定位方法、在线调试、Keil MDK-ARM的使用
在 ARM平台上开发,开发工具的选择其实并不是很多,基本可以分为三大类:Keil MDK-ARM、IAR for ARM、GCC for ARM系,其中用的比较多的基本就是 Keil MDK-ARM、IAR for ARM这俩。而 GCC for ARM系的 IDE有很多,但是他们统一都是使用 GCC for ARM作为编译器构建套件,IDE都是各家自定义的。例如,ST有、SEGGER有 Embedded Studio。构建(Build) 从源文件到可执行文件,需要经过预处理、编
继续访问
【Linux】ARM篇八--中断实验
ARM篇8--中断实验一、前言二、准备工作三、CPU与硬件的交互方式四、轮询方式实现按键实验1、电路原图2、按键的实现五、RAM中断实现原理六、GPIO中断1、GPX1CON2、EXT_INT41CON寄存器3、EXT_INT41_MASK寄存器七、中断控制器1、ICDDCR寄存器2、ICDISER寄存器3、ICDIPTR寄存器八、中断的实现1、ICCIAR寄存器2、EXT_INT41_PEND寄存器3、ICCEOIR寄存器九、完整代码与烧入1、中断完整代码2、程序烧入步骤十、实验现象1、轮询按键实验现象.
继续访问
【ARM】arm异常中断处理知识点
ARM处理器7种类型异常按优先级从高到低的排列如下:复位异常(Reset)数据异常(Date Abort)快速中断异常(FIQ)外部中断异常(IRQ)预取异常(Prefetch Abort)软件中断异常(SWI)未定义指令异常(Underfined instruction)当异常发生时处理器会把...
继续访问
arm裸机的按键设置和中断
按键的物理特性**(1)、平时没人按的时候,弹簧把按键按钮弹开。此时内部断开的。(2)、有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开。(3)、一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的不按则断开,按下则闭合);一对是常闭触点(平时不按时是闭合的,按下后是断开的)**按键的电学原理(结合原理图分析)**(1)硬件接法: SW5:GPH0_2 SW6:GPH0_3 SW78
继续访问
ARM接口实验—中断实验
ARM—中断实验
继续访问
【ARM】中断控制——第六篇
中断可以理解为当系统出现了意外情况,可以自动停止当前正在执行的程序,并转入执行新情况的程序中进行执行,处理完后会回到原被暂停的程序继续执行。
继续访问
arm
写评论
评论
收藏
点赞
踩
分享
打开CSDN APP阅读体验更佳
Linux网络异常排查思路与方法
处理问题时必定不能盲狙,将所有解决办法都试上一遍。这生产环境中,解决出现的问题是最优先的事情,当然前提是这问题会影响用户的使用或即将影响到的。
处理每个问题必然可按具体问题进行分类,根据每一类按对应的解决思路来执行。
但像处理一个网络问题的时候,上至系统防火墙的配置、下至硬件故障。如果处理一个问题都按固定流程来进行的话,那必然效率将非常低下。下为处理网络故障的一般流程。
1、网络硬件问题检查。 (机率较低)
2、检查网卡能否正常工作。 (较高、主要表现为人为配置错误)
3、检查局域网之间联机是否正常。(非常高)
4、检查DNS是否设定正确。 (较低)
5、服务是否正常打开。 (低)
6、检查访问权限是否打开。 (较高)
假如从1至6是标准的处理网络问题的流程,这样的处理方式效率低下。处理问题可以有整体的流程,但是实际操作中可先对出现机率更高的步骤进行检查、或采取2分法缩小产生问题的范围,虽然上述较的两个方法不一定对所有问题都试用,但对于大多数的网络问题来说处理效率有者显著的提升。
个人总结的情况如下。
1、lsmod| grep ip 查看相关的网卡模块是否已加载
2、ifconfig-a 能使用该命令查找到对应网卡配置信息,则说明网卡驱动程序正常
3、使用ping命令、依次ping自己、ping局域网主机、ping网关
ping自己异常,问题:服务异常、网卡配置未生效
ping局域网主机异常,问题:配置文件有误、网卡配置未生效、网线损坏
ping网关异常,问题:配置文件有误、网卡配置未生效
4、当前3步还不能正常上外网的话。所有route查看默认路由表。
处理方法:删除不必要的路由信息,并保证默认路由是从对应网关地址出去的。
5、临时停止iptables服务、SELinux服务、NetworkManager服务
6、如能上网但访问域名有异常时,那将需要检查/etc/hosts、/etc/resolv.conf两个配置
7、假如以上6步检查完毕之后,还发现不能上网。有如下可能。
7.1、主机MAC地址被路由器禁止上网
7.2、外网服务异常。如宽带账号欠费、光纤被挖断等物理攻击。