改变linux中的进程优先级

问题描述 投票:0回答:1

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

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

linux operating-system system-calls
1个回答
0
投票
  • 首先,关于并发性:有了足够的资源,单个处理器可以同时“处理”多个程序。处理器不能同时执行来自多个程序的指令(它只能在任何时间执行一条指令),但它可能在一个程序启动另一个程序之后和完成其他程序之前执行指令。据说这些程序是“同时”执行的。通常,处理器将执行一个程序的指令,而另一个(或几个其他)程序正在等待来自外部设备或来自最终用户的I / O.
  • 第二,效率:调度程序应尽可能保持系统(或特别是CPU)100%的时间处于忙碌状态。如果CPU和所有输入/输出设备可以一直保持运行,则每秒执行的工作量比某些组件空闲时要多。如果我们假设你有一个双核处理器,那么,调度程序将把你的两个进程分别分配给双处理器的一个处理器(至少你需要比处理器数量更多的进程)。
  • 第三,您必须对系统施加巨大负载,以便在计算机上的资源有限时使用优先级调度来开始查看代码结果,以防止发生死锁。因此,如果你有双核处理器,你需要大约三个或更多的进程才能开始看到结果等等(正如我们上面提到的效率)。
© www.soinside.com 2019 - 2024. All rights reserved.