【问题标题】:In a linux kernel mode, how can I detect a process?在 linux 内核模式下,如何检测进程?
【发布时间】:2015-11-29 12:35:45
【问题描述】:

我需要创建一个用户模式进程。这个进程必须在内核模式下被检测到才能被发送到 Linux 内核中的 FIFO 队列(SCHED_FIFO)。

我一直在调查,如果您使用位于 core.c 中的函数void scheduler_tick(void)(我认为系统会在 cpu 时钟的每个滴答声中调用 scheduler_tick),我可以捕获该进程。

我的问题是这是否正确,或者是否有更好的方法。

Scheduler_tick 代码:http://lxr.free-electrons.com/ident?i=scheduler_tick

这项工作基于一个多级队列,其中将引入一系列不同的流程(我们有:支付流程、取消流程、预订流程和事件流程)。这些进程在系统中具有不同的优先级。

因此,当我创建流程时,例如支付流程,我需要检测流程,因为我需要知道您的优先级是什么类型。

因此评论一下使用函数void scheduler_tick来检测进程的想法。

不知道我解释的好不好……

非常感谢。

【问题讨论】:

  • 我不明白。这不是“正常”进程加载器所做的,或者可能是 fork()?
  • 当您通过syscalls(2) 对用户空间中的Advanced Linux Programming 不太了解非常了解 时,为什么要破解内核?这看起来像是一个巨大的错误。经验法则是尽可能避免内核修补

标签: c linux linux-kernel kernel


【解决方案1】:

创建用户进程不是内核问题。 创建的所有用户进程都是从 init 进程或其子进程派生的。

【讨论】:

    【解决方案2】:

    您不需要在内核中执行此操作。实际上,您必须将其保留在内核之外。

    您需要做的是在初始化脚本中使用chrt,或者在初始化程序或守护程序监视器中使用sched_setscheduler

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-22
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 2015-06-26
      • 2020-10-15
      • 2011-12-05
      相关资源
      最近更新 更多