精华内容
下载资源
问答
  • 中断优先级和中断线程优先级

    万次阅读 2010-02-09 17:10:00
    中断是一种当今很重要的硬件与cpu通信的方式,主板上集成很多硬件,那么就可以认为会有很多中断,但是cpu的数目往往要少得多,那么肯定会有多个硬件中断竞争一个cpu的情况,任何系统(包括自然界)都不能乱套,肯定...

    中断是一种当今很重要的硬件与cpu通信的方式,主板上集成很多硬件,那么就可以认为会有很多中断,但是cpu的数目往往要少得多,那么肯定会有多个硬件中断竞争一个cpu的情况,任何系统(包括自然界)都不能乱套,肯定会有一定的机制防止事情变得不可控制,这种机制的结果就是使一切变得有序化,出现多竞争一的情况时,最常用的方法就是排队,而排队有很多策略,比如先来先服务,优先级队列,加权优先级队列,多级队列等等。这是硬件方面的情况,那么cpu方 面呢,cpu的中断引脚往往只有一个,这就是说,排队必须在中断到达cpu前进行,所以中断控制器的作用就体现出来了,有了中断控制器,我们就可以把控制 器后面的硬件当成黑盒子了,只要管控制器里面会接受很多中断并且仲裁它们就可以了。
    现在中断控制器和cpu都讨论了,那么终极控制者--操作系统还没有登场呢,最终需要os来控制着一切,就是说,控制器和cpu提供机制,而os提供策 略,中断优先级是中断控制器的机制,操作系统可以更改,而中断线程化是os为了更好的控制中断而实现的一种策略,不同os控制中断的方式不同,而中断线程 化只是其中的一种。
    像unix比如solaris都是中断线程化的,线程拥有自己的优先级,优先级高的中断线程当然可以抢占优先级低的中断线程(如果内核可抢占的话),但是由于中断是cpu外界的事件报告,所以它的到来不受cpu控制,那么中断发生的那一瞬间,中断并不是线程化的,而是也像linux那样进入中断处理,然后 将其对应的中断线程唤醒,此线程就开始参与调度参与抢占了。
    那么中断控制器处排队的中断优先级和中断线程的线程优先级有何关系呢?按照道理来说就是一个线性正比关系,事实上也是这样,每个中断控制器都实现了中断优先级管理,大部分是通过寄存器实现的,比如,x86芯片组的tpr寄存器,sun sparc也有类似的机制,比如通过pil。
    ia架构的tpr寄存器可以将所有低优先级的中断屏蔽掉,并且可以限制嵌套次数。但是在linux中并没有用到这里的tpr,它将中断一视同仁,不区分由 县级,用最短的时间处理上半部,然后在下半部处理耗时任务,这一方面是效率需要(该来的就让它来,阻止并不是好事!),二来是为了移植性,windows 只在x86,soaris只在sparc和x86,这些平台都实现了硬件的中断优先级概念,而linux基于多平台。引用 :
    在上半部没有实现中断优先级正是因为linux的中断处理是分上下部分的。如果把中断处理放在一起,恰恰需要实现中断优先级。
    试想一下,一个高优先级中断还没处理完,就被低优先级中断打断了,而低优先级中断频繁发生,会导致高优先级中断得不到处理,不正需要屏蔽低优先级中断吗?
    而linux中断分两部分,所以高优先级中断不怕被打断,因为低优先级中断的上半部处理会马上完成。注意,在中断嵌套的时候linux只处理中断的上半部哦,在进行下半部之前有个判断如下:

    QUOTE:

    if (!in_interrupt() && local_softirq_pending())
      invoke_softirq();
    //引用完了
    ipl是solaris里面的一个抽象概念,对应中断线程优先级,irql是windows里的一个同样意义的抽象概念,它们都实现了低优先中断屏蔽以的 作用,不同的是solaris中断是线程化的,而windows是在任意上下文的,后者可能在唤醒中断线程后马上就可以恢复ipl,而前者必须执行完上半部后才可;linux并没有用这些繁琐的东西,它直接允许中断嵌套,不屏蔽任何中断,可谓大气~~
    必须理解两个概念,中断响应和中断执行,前者影响到吞吐,后者受os机制(调度,softirq...)影响,中断只要被响应,至于怎么执行就看我的了,linux正是这么做的,它百分百响应任何中断,所以效率高。在中断线程实现中,有两种方法,一个是预先为每个中断设置线程,二是设置线程池。中断线程化有个很大的优势就是实时化,因为实时线程可以将优先级调到比中断线程还高(windows似乎做不到,因为比硬件中断还高的irql会受到很多限制, 比如,分页内存的访问,调度,睡眠等等)

    展开全文
  • Gic 中的中断优先级

    2020-11-12 15:21:24
    1、中断优先级寄存器每8bit一个中断,但是那些bit有效则是有硬件设计时决定,通过查询ICC_CTLR_EL1/3.PRIbits,具体描述查看4.8.2 priority grouping 2、GICD_IPRIORITYR<n> 中的寄存器存放的是spi寄存器,sgi...

    1、中断优先级寄存器每8bit一个中断,但是那些bit有效则是有硬件设计时决定,通过查询ICC_CTLR_EL1/3.PRIbits,具体描述查看4.8.2 priority grouping

    2、GICD_IPRIORITYR<n> 中的寄存器存放的是spi寄存器,sgi、ppi寄存器的优先级在gicr_ipriority<n>

    3、gicr_ipriority<n>每核都有可以独立配置

    4、gic提供了安全和非安全两种基址去访问优优先级设置寄存器。

    • 安全态访问任何中断的中断优先级寄存器,其值与真实寄存器中的值一致
    • 非安全态读Non-secure Group 1 interrupt的优先级的值,为真实8bit值左移一位地位补0;
    • 非安全态写Non-secure Group 1 interrupt的优先级的值,为写入的优先级值右移1位,高位补1;
    • 硬件这种做法的目的,我任务是为了保证group 0的中断优先级>安全group1>非安全group1;

    5、非安全态无法设置中断屏蔽寄存器ICC_PMR在0x00-0x7f之间,只能设置大于等于0x80

    6、中断抢占再gic模块中的条件是,将要抢占的中中断优先级高于当前正在运行的中断优先级(icc_rpr,runing

     priority register).通过软件和硬件中Process StatePSATEException级别的IF位的值和中断路由控制,PE是否通过中断来响应中断。

     

    问题:非安全态读取安全中断相关的寄存器是什么现象?

    展开全文
  • stm32中断优先级

    2016-02-26 16:27:00
    高先占优先级中断可以打断低先占优先级中断,即可中断嵌套。先占优先级号码越小优先级越高当先占优先级号码相同时,从优先级号码起作用。同先占优先级下的中断是不能进行嵌套的,只能根据从优先级的号码进行排队,...

     

    VIC_IRQChannelPreemptionPriority:先占优先级  NVIC_IRQChannelSubPriority:从优先级

    高先占优先级中断可以打断低先占优先级的中断,即可中断嵌套。先占优先级号码越小优先级越高
    当先占优先级号码相同时,从优先级号码起作用。同先占优先级下的中断是不能进行嵌套的,只能根据从优先级的号码进行排队,从优先级号码即为排队号码,号码越低越靠前。

     

    在一个程序中可以设定多个(最多16个)优先级,每个中断源只能设定一个。

    转载于:https://www.cnblogs.com/mylinux/p/5220851.html

    展开全文
  • 首先,Linux是一个时分操作系统...linux线程优先级的范围是 0 ~ 139,值越小,优先级越高。user space 线程优先级的范围是 100 ~ 139,默认创建的线程优先级是120,对应的nice值是0,nice值的范围是 -20 ~ 19,对应的优

    首先,Linux是一个时分操作系统,普通线程每次被调度获得运行的最长时间是确定的,即一个tick,通过内核 CONFIG_HZ可配置。在tick中断时会发生,内核会触发线程调度;同时,当前正在运行的线程主动让出CPU时,也会触发调度。除此之外,其它中断、系统调用等也能触发线程调度。

    linux线程优先级的范围是 0 ~ 139,值越小,优先级越高。user space 线程优先级的范围是 100 ~ 139,默认创建的线程优先级是120,对应的nice值是0,nice值的范围是 -20 ~ 19,对应的优先级是 100 ~ 139。只有内核线程才支持低于100的优先级,优先级低于100的线程称为RT级线程。

    在user space中,可以设置线程的nice值,nice值越小,该线程通过调度获得运行的机会越大。但不是说nice值小的线程占有CPU直到执行完毕,nice值大的线程才能获取CPU。比如:2个相同执行体,不同nice值的线程,每个线程运行时间为5个tick,两线程同时启动,在每次tick中断发生时,内核调度nice值小的线程的概率是3/4, nice值大的线程的概率是1/4,这样,nice值小的线程会早于nice值大的线程执行完毕,但在nice值小的线程执行完毕时,nice值大的线程也肯定获得过运行,比如1个tick。而不会像RTOS那样,高优先级的线程执行完毕前,低优先级的线程是得不到CPU运行的。

    在内核中,可以设置某个线程为RT级,即优先级值低于100,同时必须设置该线程相应的调度策略(SCHED_FIFO或SCHED_RR )。RT级线程能最大限度地优先获得CPU,并且优先级高的线程一定优先被调度。但是,对于整个系统,所有RT级线程对CPU占用有个限制,即不能在 sched_rt_period_us 时间内连续占用超过 sched_rt_runtime_us。(这两个值位于/proc/sys/kernel/sched_rt_period_us 和 /proc/sys/kernel/sched_rt_runtime_us),超过了,内核就是调度普通线程。

    展开全文
  • 最近研发的产品出了点小bug,最后查到根本原因是,其中一个进程A使用基于FIFO的实时进程优先级,而另一个进程B是使用普通调度的进程优先级,而A和B两个进程是互相通信的,进程B会被饿死,而进程A也不能正常工作。...
  • Linux进程优先级调整

    千次阅读 2014-12-15 15:59:50
    1. Linux top命令输出中PR值和NI值有什么不同 NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。 一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)...
  • 对于x86硬中断的概念,一直都落在理论的认识之上,...以前的认识:Linux对硬中断(本文如无特殊说明,都是指普通意义上的可屏蔽硬件中断)的处理有优先级概念,高优先级中断可以打断低优先级中断。重新认识:1,对...
  • Linux进程优先级和nice值

    千次阅读 2018-02-06 20:02:06
    在学习了linux的完全公平调度算法(CFS)后,记录下学习轨迹 这篇文章主要讲述,完全公平调度算法的工作方式,和一些调度知识 我们可以通过ps -l看到当前正在运行的进程的详细信息其中 F:表示进程旗标,标识...
  • linux优先级浅析

    千次阅读 2014-04-17 17:34:37
    最近在优化RTlinux的实时APP,在各种资料之间查找关于linux优先级的相关资料,终于对linux进程优先级有一些了解。 首先在linux优先级级别只有0-139这140个级别,这是固定的,数字越小优先级别越高,所以优先级为0...
  • linux设置程序优先级

    2021-06-07 13:56:43
    1.linux程序优先级说明 linux下进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认进程优先级是0。 2.查看 ...
  • 很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS中断优先级配置的内容。1写在前面写本文之前,先写点相关的扩展内容。...
  • 进程cpu资源分配就是指进程的优先权...配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。 一、先看
  • linux中断--LINUX中断机制与信号

    千次阅读 2013-09-22 21:49:13
    在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络...LINUX中断机制与信号 中断和异常   l 中 断(也称硬件中断) 定义:中断是由其他硬件设备依照CPU时钟周期信号随机产生的。 分类: 可屏蔽中断 非可
  • Linux进程的优先级

    千次阅读 2018-09-10 22:34:39
    为什么要有优先级:在多任务操作系统中,操作系统为了区分进程的重要程度,需要有一个衡量重要程度的指标,优先级便由此产生 一、nice值和Priority值 首先用top命令看一下当前进程的信息: top 得到: ...
  • 深入 Linux 的进程优先级

    千次阅读 2017-04-18 18:13:41
    转自: http://liwei.life/2016/04/07/linux%E7%9A%84%E8%BF%9B%E7%A8%8B%E4%BC%98%E5%85%88%E7%BA%A7/ 为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力...
  • Linux的进程优先级

    千次阅读 2016-07-22 10:20:43
    Linux的进程优先级为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。进程...
  • 关于linux的中断系统网上有好多文章,基本的原理流程都能查的...linux中断没有引入优先级的概念,并且现在linux内核会在执行中断处理函数时禁止cpu中断。 2,关于IRQF_DISABLED 这个flag已经在新版本内核中不再
  • linux的进程优先级

    千次阅读 2017-12-03 20:43:20
    为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。
  • Linux 进程的优先级nice

    2021-02-23 10:31:47
    调度程序在Linux中构建了多任务的核心,使用基于优先级的调度算法在系统中的可运行进程之间进行选择。它基于最值得的以及CPU时间的需要对进程进行排序。 了解流程优先级和良好价值 内核存储有关进程的大量信息,...
  • linux 中断线程化

    千次阅读 2017-05-27 12:24:01
    Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行正常的任务,因此有可能造成实时任务得不到及时的处理。...
  • Linux 中断中断处理浅析

    千次阅读 多人点赞 2019-01-17 14:15:09
    1. 中断的概念 ...Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。 软件对硬件进行配置后,软件期望等待硬件的某种状态(比如,收到了数据),这里有两种方式,一种是轮询(pol...
  • linux 中断

    2013-10-30 18:45:43
    话说曾几何时,在大学的课堂里,老师滔滔不绝的讲解中断,说中断可以嵌套,说中断优先级,那么linux操作系统是不是中断嵌套?是不是按优先级嵌套? 其实大家应该可以猜到了,并不完全是的。因为老师讲的是理论...
  • Linux中断一:初看Linux中断

    千次阅读 2012-03-13 20:33:23
    中断Linux内核中比较难而且比较重要的一部分,如果想掌握这些东西,理解是首当其冲的一个重要环节。所谓的难点,新知识,如果完全理解了原理,至少相当于掌握了80%,这对于任何知识都一样,所谓真正理解,就是要...
  • Linux中断完全分析

    千次阅读 2015-07-13 14:44:57
    学习本文可以对linux中断有全面而深刻的认识。本文对Linux中断所涉及的需求、管理机制、中断实现、中断接口(上半部和下半部)、驱动使用进行完全分析。
  • linux 中断中断处理

    千次阅读 2018-07-30 15:47:16
    从物理学角度看,中断是一种电信号,中断是硬件发出,送入中断控制器的输入引脚中,中断控制器是个简单的电子芯片,其作用是将多路中断管线,采用复用技术只通过一个和处理器连接的管线与处理器通信。当接受到一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,786
精华内容 21,914
关键字:

linux中断优先级

linux 订阅