系统调用会被软中断抢占吗?

319 views
Skip to first unread message

Jon Zhou

unread,
May 24, 2011, 12:29:04 AM5/24/11
to linux-...@zh-kernel.org
例如userspace application 执行系统调用,还没处理完毕
这个时候处理网络数据报接收的软中断部分(例如netif_receive_skb部分)能被激活之行吗?


_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org

Yang Xu

unread,
May 24, 2011, 12:52:29 AM5/24/11
to Jon Zhou, linux-...@zh-kernel.org
凭借依稀记得的一点lkd2的知识,这是允许的,如果是可抢占内核的话
理论上也说得通,进入系统调用,也仍然属于进程上下文,有task_stuct,被调度出去也能恢复回来。
软中断是由硬件中断(如时钟中断,jiffes)激活的

在 11-5-24,Jon Zhou<Jon....@jdsu.com> 写道:

E=MaC^2s

unread,
May 26, 2011, 1:11:46 AM5/26/11
to Jon Zhou, linux-...@zh-kernel.org
我以前写的一个驱动
表现是系统调用会抢占tasklet,softirq软中断如果不是频繁发生的话会直接在硬件中断处理函数中直接处理,而不会交给softirqd线程,
能不能抢占softirq我没写程序具体测过。
x86系统调用是同步异常触发的,同步异常和异步中断是都是异常的一种,都会通过查中断向量表来查找处理函数,使用的栈是进程所对应的内核栈。

如果有竞争出现我的习惯还是在系统调用里关闭软中断。

Jon Zhou

unread,
Jul 11, 2011, 9:38:28 PM7/11/11
to E=MaC^2s, linux-...@zh-kernel.org


From: E=MaC^2s [mailto:cell...@gmail.com]
Sent: Thursday, May 26, 2011 1:12 PM
To: Jon Zhou
Cc: linux-...@zh-kernel.org
Subject: Re: 系统调用会被软中断抢占吗?

我以前写的一个驱动 表现是系统调用会抢占tasklet,softirq软中断如果不是频繁发生的话会直接在硬件中断处理函数中直接处理,而不会交给softirqd线程,
能不能抢占softirq我没写程序具体测过。
x86系统调用是同步异常触发的,同步异常和异步中断是都是异常的一种,都会通过查中断向量表来查找处理函数,使用的栈是进程所对应的内核栈。

如果有竞争出现我的习惯还是在系统调用里关闭软中断。

在 2011年5月24日 下午12:29,Jon Zhou <Jon....@jdsu.com<mailto:Jon....@jdsu.com>>写道:
例如userspace application 执行系统调用,还没处理完毕
这个时候处理网络数据报接收的软中断部分(例如netif_receive_skb部分)能被激活之行吗?


_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org<mailto:Linux-...@zh-kernel.org>
如果系统调用也是软中断的一种
不是说软中断不能抢占软中断吗?

章巍巍

unread,
Jul 12, 2011, 7:33:44 AM7/12/11
to Jon Zhou, linux-...@zh-kernel.org
软中断应该是可以抢占系统调用的。所以在系统调用和软中断进行临界区的互斥访问时,系统调用代码里要加上关闭软中断的spin_lock_bh之类的锁来避免死锁的发生。


--
章巍巍

Jon Zhou

unread,
Jul 12, 2011, 10:55:51 PM7/12/11
to 章巍巍, linux-...@zh-kernel.org
那系统调用是不是软中断的一种?

From: 章巍巍 [mailto:zhangw...@gmail.com]
Sent: Tuesday, July 12, 2011 7:34 PM
To: Jon Zhou
Cc: E=MaC^2s; linux-...@zh-kernel.org
Subject: Re: 系统调用会被软中断抢占吗?

软中断应该是可以抢占系统调用的。所以在系统调用和软中断进行临界区的互斥访问时,系统调用代码里要加上关闭软中断的spin_lock_bh之类的锁来避免死锁的发生。
在 2011年7月12日 上午9:38,Jon Zhou <Jon....@jdsu.com<mailto:Jon....@jdsu.com>>写道:


From: E=MaC^2s [mailto:cell...@gmail.com<mailto:cell...@gmail.com>]
Sent: Thursday, May 26, 2011 1:12 PM
To: Jon Zhou
Cc: linux-...@zh-kernel.org<mailto:linux-...@zh-kernel.org>
Subject: Re: 系统调用会被软中断抢占吗?

我以前写的一个驱动 表现是系统调用会抢占tasklet,softirq软中断如果不是频繁发生的话会直接在硬件中断处理函数中直接处理,而不会交给softirqd线程,
能不能抢占softirq我没写程序具体测过。
x86系统调用是同步异常触发的,同步异常和异步中断是都是异常的一种,都会通过查中断向量表来查找处理函数,使用的栈是进程所对应的内核栈。

如果有竞争出现我的习惯还是在系统调用里关闭软中断。

在 2011年5月24日 下午12:29,Jon Zhou <Jon....@jdsu.com<mailto:Jon....@jdsu.com><mailto:Jon....@jdsu.com<mailto:Jon....@jdsu.com>>>写道:
例如userspace application 执行系统调用,还没处理完毕
这个时候处理网络数据报接收的软中断部分(例如netif_receive_skb部分)能被激活之行吗?


_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org<mailto:Linux-...@zh-kernel.org><mailto:Linux-...@zh-kernel.org<mailto:Linux-...@zh-kernel.org>>
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org



如果系统调用也是软中断的一种
不是说软中断不能抢占软中断吗?
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org<mailto:Linux-...@zh-kernel.org>
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org



章巍巍

unread,
Jul 13, 2011, 10:58:01 PM7/13/11
to Jon Zhou, linux-...@zh-kernel.org
软中断是推迟中断处理的一种机制,运行在中断上下文中,它和硬中断都应该属于异步中断的范畴。异步中断是由I/O设备通过CPU时钟定时器产生的。
而系统调用是一种同步中断,也称为“异常”。同步中断是由于程序的错误,或者内核必须处理的异常条件产生的。系统调用属于后者。
这是两个不同的概念吧。

在 2011年7月13日 上午10:55,Jon Zhou <Jon....@jdsu.com>写道:

> 那系统调用是不是软中断的一种?****
>
> ** **
>
> *From:* 章巍巍 [mailto:zhangw...@gmail.com]
> *Sent:* Tuesday, July 12, 2011 7:34 PM
> *To:* Jon Zhou
> *Cc:* E=MaC^2s; linux-...@zh-kernel.org
> *Subject:* Re: 系统调用会被软中断抢占吗?****
>
> ** **
>
> 软中断应该是可以抢占系统调用的。所以在系统调用和软中断进行临界区的互斥访问时,系统调用代码里要加上关闭软中断的spin_lock_bh
> 之类的锁来避免死锁的发生。****
>
> 在 2011年7月12日 上午9:38,Jon Zhou <Jon....@jdsu.com>写道:****


>
>
>
> From: E=MaC^2s [mailto:cell...@gmail.com]
> Sent: Thursday, May 26, 2011 1:12 PM
> To: Jon Zhou
> Cc: linux-...@zh-kernel.org
> Subject: Re: 系统调用会被软中断抢占吗?
>
> 我以前写的一个驱动 表现是系统调用会抢占tasklet,softirq软中断如果不是频繁发生的话会直接在硬件中断处理函数中直接处理,而不会交给
> softirqd线程,
> 能不能抢占softirq我没写程序具体测过。
> x86系统调用是同步异常触发的,同步异常和异步中断是都是异常的一种,都会通过查中断向量表来查找处理函数,使用的栈是进程所对应的内核栈。
>
> 如果有竞争出现我的习惯还是在系统调用里关闭软中断。
>
> 在 2011年5月24日 下午12:29,Jon Zhou <Jon....@jdsu.com<mailto:Jon....@jdsu.com

> >>写道:
> 例如userspace application 执行系统调用,还没处理完毕
> 这个时候处理网络数据报接收的软中断部分(例如netif_receive_skb部分)能被激活之行吗?
>
>
> _______________________________________________
> Linux 内核开发中文邮件列表
> Linux-...@zh-kernel.org<mailto:Linux-...@zh-kernel.org>

> http://zh-kernel.org/mailman/listinfo/linux-kernel
> Linux 内核开发中文社区: http://zh-kernel.org
>
>
>
> 如果系统调用也是软中断的一种
> 不是说软中断不能抢占软中断吗?
> _______________________________________________
> Linux 内核开发中文邮件列表
> Linux-...@zh-kernel.org
> http://zh-kernel.org/mailman/listinfo/linux-kernel

> Linux 内核开发中文社区: http://zh-kernel.org****
>
>
>
>
> --
> 章巍巍****

jiangtao.jit

unread,
Jul 14, 2011, 6:51:01 AM7/14/11
to 章巍巍, Jon Zhou, linux-...@zh-kernel.org

系统调用是软件中断(相对硬件中断而言),处于进程上下文
这样理解对吗?


2011-07-14



jiangtao.jit



发件人: 章巍巍
发送时间: 2011-07-14 11:00:16
收件人: Jon Zhou
抄送: linux-...@zh-kernel.org
主题: Re: 系统调用会被软中断抢占吗?

章巍巍

unread,
Jul 14, 2011, 7:23:53 AM7/14/11
to jiangtao.jit, linux-...@zh-kernel.org
我觉得是这样的。

在 2011年7月14日 下午6:51,jiangtao.jit <jiangt...@gmail.com>写道:

> **


>
> 系统调用是软件中断(相对硬件中断而言),处于进程上下文
> 这样理解对吗?
>
>
> 2011-07-14

> ------------------------------
> jiangtao.jit
> ------------------------------
> *发件人:* 章巍巍
> *发送时间:* 2011-07-14 11:00:16
> *收件人:* Jon Zhou
> *抄送:* linux-...@zh-kernel.org
> *主题:* Re: 系统调用会被软中断抢占吗?

Zhi-zhou Zhang

unread,
Jul 14, 2011, 8:33:26 PM7/14/11
to E=MaC^2s, linux-...@zh-kernel.org
系统调用会抢占tasklet
系统调用怎么能抢占软中断呢。软中断在进入后不是禁用了抢占吗?

2011/5/26 E=MaC^2s <cell...@gmail.com>

Reply all
Reply to author
Forward
0 new messages