免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 印随
打印 上一主题 下一主题

执行tasklet任务的进程ID是多少? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-10-22 14:48 |只看该作者
又看了下原帖,才发现你这个明显就是ksoftirqd的pid嘛
tasklet是在软中断基础上实现的,软中断默认是在中断上下文运行,
但是有时候(比如软中断太多,一次处理不完)会借用内核线程ksoftirqd来完成,
你这个结果没问题。
tasklet没有自己的pid的

论坛徽章:
0
12 [报告]
发表于 2009-10-22 21:18 |只看该作者
但是如果我是直接在内核模块中调度tasklet任务的时候
打印出上下文的PID是0

0有意义吗?

[ 本帖最后由 印随 于 2009-10-22 21:20 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-10-22 22:50 |只看该作者
打印出0估计是因为正在cpu空闲的时候,idle进程被中断打断,然后就打印出idle的pid,
tasklet有一部分是在中断上下文进行的,如果没有使用独立中断堆栈的话,打印出谁的pid都有可能
还是猜测,不保证正确

论坛徽章:
0
14 [报告]
发表于 2009-10-23 08:44 |只看该作者
软中断的一个调度点是在do_IRQ退出的时候,因此tasklet可能运行在任何进程的内核栈上,current就是通过内核栈来取得的

论坛徽章:
0
15 [报告]
发表于 2009-11-21 12:11 |只看该作者
tasklet是运行在软中断之上的。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
16 [报告]
发表于 2009-11-21 14:06 |只看该作者
原帖由 xiaozhe2000 于 2009-10-22 14:23 发表
tasklet应该有专门的kernel thread来运行,pid=3应该是合理的的



ULK3
Checks for active (pending) softirqs should be perfomed periodically, but without inducing too much overhead. They are performed in a few points of the kernel code. Here is a list of the most significant points (be warned that number and position of the softirq checkpoints change both with the kernel version and with the supported hardware architecture):

When the kernel invokes the local_bh_enable( ) function
  • to enable softirqs on the local CPU
  • The name local_bh_enable( ) refers to a special type of deferrable function called "bottom half" that no longer exists in Linux 2.6.

    When the do_IRQ( ) function finishes handling an I/O interrupt and invokes the irq_exit( ) macro

    If the system uses an I/O APIC, when the smp_apic_timer_interrupt( ) function finishes handling a local timer interrupt (see the section "Timekeeping Architecture in Multiprocessor Systems" in Chapter 6)

    In multiprocessor systems, when a CPU finishes handling a function triggered by a CALL_FUNCTION_VECTOR interprocessor interrupt

    When one of the special ksoftirqd/n kernel threads is awakened (see later)


  • The ksoftirqd/n kernel threads represent a solution for a critical trade-off problem.
    ...

    The ksoftirqd/n kernel threads try to solve this difficult trade-off problem. The do_softirq( ) function determines what softirqs are pending and executes their functions. After a few iterations, if the flow of softirqs does not stop, the function wakes up the kernel thread and terminates (step 10 of _ _do_softirq( )). The kernel thread has low priority, so user programs have a chance to run; but if the machine is idle, the pending softirqs are executed quickly.

    这个不一定,应该也会在特定点上处理一些
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP