改变linux中的进程优先级

时间:2016-11-18 19:25:38

标签: linux operating-system system-calls

我有一个C代码,它生成两个进程,但是我想在内核中更改它们的优先级,所以我写了一个syscall,其中,增加和减少两个进程的优先级(我试过这个所有类型的优先级,static_prionormal_priopriort_priority)但同时进程同时进行!

我无法在我的syscall代码中使用其他系统调用,操作系统是ubuntu 16.04,内核4.4。

1 个答案:

答案 0 :(得分:0)

  • 首先,关于并发:有了足够的资源,单个处理器可以同时“处理”多个程序。处理器不能同时执行来自多个程序的指令(它只能在任何时间执行一条指令),但它可能在一个程序启动另一个程序之后和完成其他程序之前执行指令。据说这些程序是“同时”执行的。通常,处理器将执行一个程序的指令,而另一个(或几个其他)程序正在等待来自外部设备或最终用户的I / O.

  • 其次,效率:调度程序应尽可能保持系统(或特别是CPU)100%的时间处于忙碌状态。如果CPU和所有输入/输出设备可以一直保持运行,则每秒执行的工作量比某些组件空闲时要多。如果我们假设你有一个双核处理器,那么,调度程序将把你的两个进程分别分配给双处理器的一个处理器(至少你需要的处理数量多于处理器数量)。

  • 第三,您必须对系统施加巨大负荷,以便在机器上的资源有限时使用优先级调度来开始查看代码结果,以防止发生死锁。因此,如果你有双核处理器,你需要大约三个或更多的进程才能开始看到结果等等(正如我们上面提到的关于效率的那样)。