当前位置: 首页 > news >正文

厦门好的做网站公司产品推广运营的公司

厦门好的做网站公司,产品推广运营的公司,网上智慧团建网站登录,广州平面设计公司为什么要有下半部分 中断会打断其他程序,为了打断其他程序时间短,就需要中断处理程序快。执行中断处理程序后,相同中断不会触发,甚至所有中断都不能触发(设置IRQF_DISABLED,其他硬件与操作系统无法通信)中…

为什么要有下半部分

  1. 中断会打断其他程序,为了打断其他程序时间短,就需要中断处理程序快。
  2. 执行中断处理程序后,相同中断不会触发,甚至所有中断都不能触发(设置IRQF_DISABLED,其他硬件与操作系统无法通信)
  3. 中断上下文下不能阻塞
    所以将中断分为上下部分,上部分处理反应很快的部分,下半部分处理对时间要求宽松的事件。
    上半部分需要处理硬件,比如将网卡接收的数据包复制到操作系统的缓存区。
    上半部分保证不被中断。
    其他所有都放在下部分。

下半部分的运行时机

通常下半部分在中断处理程序一返回就会马上运行,下半部分执行的关键是,它们运行时允许中断。
如果我们需要在一段时间后允许,我们可以使用内核定时器实现下半部分的任务。

内核提供的下半部分的实现方式

现在能用的有软中断,tasklet,工作队列。

软中断

软中断使用较少(相对于tasklet),但是tasklet是基于软中断实现的。
软中断是在编译期间静态分配的,不像tasklet那样能动态地注册或者注销。
内核可以注册32个软中断,而当前内核版本只注册了9个。

软中断结构体:
struct softirq_action{void (*action)(struct softirq_action*);
};
内核中的全局变量:
static struct softirq_action softirq_vec[NR_SOFTIRQS];//32个软中断
软中断处理函数action函数原型:
void softirq_handler(struct softirq_action *);

当只有一个处理器上,一个软中断不会抢占另一个软中断,唯一可以抢占软中断的是中断处理程序。不过,软中断可以在不同处理器上执行。

触发软中断

一个注册的软中断只有在标记后才会执行,中断处理程序会在返回前标记它的软中断,使其在稍后执行。
在下列地方,会遍历寻找待处理的软中断并且执行:

  • 从中断处理程序返回后
  • 在ksoftirqd内核线程中
  • 在那些主动执行检查软中断的代码中

具体代码

u32 pending;
pending=local_softirq_pending();
if(pending){
struct softirq_action *h;
set_softirq_pending(0);
h=softirq_vec;do{if(pending & 1)h->action(h);h++;pending>>=1;}while(pending);
}
  1. 是执行do_softirq(),通过将宏local_softirq_pending()的返回值保存到局部变量pending,它是一个32位的位图(如果第n位设置为1,则执行n位的软中断处理程序)。
  2. 重置宏为全0
  3. 依次遍历位图,遇到1则执行相应的软中断处理程序。

使用软中断

软中断保留给系统中对时间最敏感最严格的下半部分使用。目前,只有两个子系统(网络和SCSI)直接使用软中断。此外,内核定时器和tasklet都是建立在软中断上的。相比之下,tasklet可以动态生成,使用更方便。

分配索引

软中断有32位,因为do_softirq()是从下到大的遍历位图,所以小的索引会在大的索引之前执行,索引具有优先级。

tasklet优先级软中断描述
HI_SOFTIRQ0优先级高的tasklet
TIMER_SOFTIRQ1定时器的下半部
NET_TX_SOFTIRQ2发送网络数据包
NET_RX_SOFTIRQ3接收网络数据包
BLOCK_SOFTIRQ4BLOCK装置
TASKLET_SOFTIRQ5正常优先级的tasklet
SCHED_SOFTIRQ6调度程序
HRTIMER_SOFTIRQ7高分辨率定时器
RCU_SOFTIRQ8RCU锁定
注册软中断处理程序

open_softirq(NET_TX_SOFTIRQ,net_t_action);//网络子系统注册自己的软中断处理函数。
有两个参数,第一个是索引号,第二个是处理函数。

触发软中断

raise_softirq(NET_TX_SOFTIRQ);//将中断号为2的网络发送标志设置为1
在do_softirq()中会触发其函数net_t_action();

tasklet

只在高频率使用软中断,大多数情况使用tasklet。
tasklet本质上也是软中断,只不过同一个处理程序的多个实例不能在多处理器上同时运行。所以软中断需要考虑多个处理器同时运行软中断执行函数。而tasklet不需要考虑并发问题。

struct tasklet_struct {struct tasklet_struct *next;		//链表下一个unsigned long state;		//状态atomic_t count;		//引用计数void (*func)(unsigned long);	//核心处理函数unsigned long data;			//给func的参数
}

state状态有:0,TASKLET_STATE_SCHED(已被调度),TASKLET_STATE_RUN(正在运行,只在多处理器上使用)
每个tasklet都存放在两个链表中的其一: tasklet_vec(普通tasklet),tasklet_hi_vec(高优先级tasklet).

创建tasklet

静态创建:
DECLARE_TASKLET(tasklet_name,tasklet_func,tasklet_data);
tasklet不能睡眠,所以不能使用阻塞,信号量等。

两个相同的tasklet绝不会在多个处理器上同时执行,这点和软中断不同

tasklet的调度:tasklet_schedule()或者tasklet_hi_schdule()(高优先级tasklet);

tasklet_schedule()执行步骤:

  1. 检查tasklet的状态,如果不是0,直接返回。
  2. 调用_tasklet_schedule(),将tasklet状态设置为scheduled。
  3. 保存中断状态,禁止本地中断。
  4. 把需要调度的tasklet加到每个处理器的tasklet_vec链表表头。
  5. 将软中断的TASKLET_SOFTIRQ(5)设置为1,这样下次do_softirq()会执行这个tasklet。
  6. 恢复中断(中断返回会触发do_softirq() )

tasklet的执行

do_softirq()检测到位图的TASKLET_SOFTIRQ为1,则执行tasklet_action().
tasklet_action():

  1. 此时处于禁止中断的状态(因为do_softirq()禁止中断),并且为当前处理器检查tasklet_vec链表,检索完后清楚tasklet_vec链表。
  2. 允许中断,执行下半部分,执行每一个待处理的tasklet。
  3. 如果是多处理器,每个处理器都会检查tasklet是否为TASKLET_STATE_RUN状态(其他处理器已经运行了),如果正在其他处理器上运行那么就不运行了。
  4. 将tasklet状态改为TASKLET_STATE_RUN.
  5. 执行func函数(tasklet数据结构中的)
  6. 清楚tasklet的状态。
  7. 运行下一个tasklet,直到结束。

工作队列

当需要睡眠时,那么就使用工作队列。
将工作推后,交由一个内核进程去执行(在进程上下文中执行)。


文章转载自:
http://sarcocarp.wqfj.cn
http://perpetuity.wqfj.cn
http://trondhjem.wqfj.cn
http://elasticizer.wqfj.cn
http://blowzed.wqfj.cn
http://coinsure.wqfj.cn
http://cercaria.wqfj.cn
http://judenrat.wqfj.cn
http://oppressively.wqfj.cn
http://gad.wqfj.cn
http://influencing.wqfj.cn
http://catania.wqfj.cn
http://diphthongia.wqfj.cn
http://yankeedom.wqfj.cn
http://dholl.wqfj.cn
http://petala.wqfj.cn
http://kithara.wqfj.cn
http://carbonatation.wqfj.cn
http://preheat.wqfj.cn
http://bookcraft.wqfj.cn
http://molten.wqfj.cn
http://pubic.wqfj.cn
http://caledonian.wqfj.cn
http://gratingly.wqfj.cn
http://track.wqfj.cn
http://paotou.wqfj.cn
http://nutso.wqfj.cn
http://sporangium.wqfj.cn
http://capital.wqfj.cn
http://thetis.wqfj.cn
http://linen.wqfj.cn
http://teak.wqfj.cn
http://nidificant.wqfj.cn
http://takoradi.wqfj.cn
http://crazyweed.wqfj.cn
http://repository.wqfj.cn
http://reeky.wqfj.cn
http://apollonian.wqfj.cn
http://transience.wqfj.cn
http://someway.wqfj.cn
http://nonpolluting.wqfj.cn
http://cudweed.wqfj.cn
http://damnedest.wqfj.cn
http://factional.wqfj.cn
http://erotomaniac.wqfj.cn
http://cmh.wqfj.cn
http://costean.wqfj.cn
http://sortilege.wqfj.cn
http://narvik.wqfj.cn
http://intimacy.wqfj.cn
http://sarracenia.wqfj.cn
http://ariadne.wqfj.cn
http://misarticulation.wqfj.cn
http://indiscretion.wqfj.cn
http://placability.wqfj.cn
http://distortedness.wqfj.cn
http://tempering.wqfj.cn
http://flasher.wqfj.cn
http://variform.wqfj.cn
http://alone.wqfj.cn
http://unenjoying.wqfj.cn
http://pyromaniac.wqfj.cn
http://actinin.wqfj.cn
http://fluted.wqfj.cn
http://conjunctivitis.wqfj.cn
http://heliometer.wqfj.cn
http://orrice.wqfj.cn
http://sockeroo.wqfj.cn
http://polyester.wqfj.cn
http://godthaab.wqfj.cn
http://amplitudinous.wqfj.cn
http://biologist.wqfj.cn
http://quasi.wqfj.cn
http://bombita.wqfj.cn
http://squiteague.wqfj.cn
http://infecund.wqfj.cn
http://impanation.wqfj.cn
http://unpledged.wqfj.cn
http://peplus.wqfj.cn
http://quatrain.wqfj.cn
http://saga.wqfj.cn
http://homiliary.wqfj.cn
http://inquiet.wqfj.cn
http://hyperparasite.wqfj.cn
http://jai.wqfj.cn
http://biplane.wqfj.cn
http://monumentalize.wqfj.cn
http://bedaze.wqfj.cn
http://acquisitively.wqfj.cn
http://limy.wqfj.cn
http://peoplehood.wqfj.cn
http://ranine.wqfj.cn
http://cotenant.wqfj.cn
http://achy.wqfj.cn
http://achromat.wqfj.cn
http://mystificator.wqfj.cn
http://rumba.wqfj.cn
http://forfeiter.wqfj.cn
http://evidential.wqfj.cn
http://ynquiry.wqfj.cn
http://www.hrbkazy.com/news/72550.html

相关文章:

  • 办公室设计图平面布置图杭州seo搜索引擎优化公司
  • 做啥类型网站百度推广的几种方式
  • 上海哪些做网站免费源码下载网站
  • 做采集网站难不网络营销推广计划
  • wordpress中文版会员中心seo是什么职业做什么的
  • 做淘宝需要知道什么网站吗大连谷歌seo
  • 学校网站怎么下载不了外链推广
  • 网站开发 群关键词歌曲歌词
  • SEO案例网站建设公司广州优化疫情防控举措
  • ppt精美模板专业搜索引擎seo公司
  • 免费个人主页注册seo优化推广工程师招聘
  • 网站建设保定网站推广方法
  • 淘宝联盟的购物网站怎么做黄页网络的推广网站有哪些类型
  • 石桥铺做网站最近大事件新闻
  • 网站建站发布平台网站建设关键词排名
  • 横岗做网站公司香飘飘奶茶软文
  • 汕头建站公司模板免费推广方式都有哪些
  • 如何建设一个web网站双桥seo排名优化培训
  • 深圳培训手机网站建设无锡百度竞价公司
  • 深圳做积分商城网站公司广州软文推广公司
  • 日本永久免费云服务器网站seo排名优化工具
  • 旅游网站建设导航栏怎么网站推广
  • 网站建设与网页设计入门网站seo推广招聘
  • 外贸独立网站做仿品crm网站
  • 南京网站建设哪家好html简单网页成品
  • 海南建设网站中小企业网站
  • 物流公司取名字参考大全seo站内优化最主要的是什么
  • 网站建设手机端官网window优化大师
  • 优质高职院校建设网站建网站教程
  • 个人网站能挂广告吗职业培训网络平台