我使用的是Linux 4.19.2 https://elixir.bootlin.com/linux/v4.19.2/ident/
我弄清楚了称为的结构任务结构其中包含进程控制块中的所有信息。当我们创建一个新进程时,叉()函数被调用,而函数又调用类似的函数_do_fork()和复制进程()为其中的字段提供值任务结构。
但是,我找不到新进程的优先级在哪里。 task_struct结构中用于优先级的字段名称是普里奥。当一个进程启动时,它从哪里获得它的值?
答案1
我尝试从这个链接中找出答案https://elixir.bootlin.com/linux/v4.19.2/ident/
这提供了 Linux 内核交叉引用,我可以阅读。我发现要分叉一个新进程,该函数_do_fork()来电复制进程()它又调用一个名为的函数sched_fork()。
这是使用函数初始化进程优先级的地方正常优先级()。