zoukankan      html  css  js  c++  java
  • 进程优先级和调度

    nice的值范围-20~19(数字越小,优先级越高)

    //获取和修改优先级
    #include<sys/resource.h>
    //which参数确定who参数如何被解释,该值取值如下
    PRIO_PROCESS    操作进程id为who的进程,如果who为0,使用调用者的进程id
    PRIO_PGRP   操作进程组id为who的进程组的所有成员,如果who为0,那么使用调用者的进程组
    PRIO_USER   操作所有真实有胡id为who的进程,如果who为0,使用调用者的真实用户id
    int getpriority(int which,id_t who);    //可能在成功返回时返回-1,所以调用之前将errno设置为0,接着检查调用后返回值为-1并且errno不为0才能确认调用成功
    int setpriority(int which,id_t who ,int pro);   //pro如果超出nice返回,直接设置nice为边界值
    
    //SCHED_RR策略
    //优先级相同的进程以循环时间分享的方式执行,进程每次使用cpu的时间是一个固定长度的时间片
    //高优先级进程总是优先于低优先级进程
    
    //SCHED_FIFO策略
    //先进先出,不存在时间片,一旦一个SCHED_FIFO进程获取cpu控制权之后,她就会一直执行,直到自动放弃cpu或者终止或者被一个优先级更高的进程抢占了
    
    //实现优先级范围,返回一个调度策略的优先级取值范围
    #include<sched.h>
    int sched_get_priority_min(int policy);
    int sched_get_priority_max(int policy);
    //policy指定需获取哪种调度策略的信息,这个参数一般是SCHED_RR或者SCHED_FIFO
    
    //修改调度策略和优先级
    int sched_setscheduler(pid_t pid,int policy,const struct sched_param *param);//如果pid为0,那么将修改调用进程的特性
    struct sched_param{
    //指定调度策略,对于SCHED_RR和SCHED_FIFO来说,这两个字段取值必须位于sched_get_priority_min()和sched_get_priority_max()规定的范围内
    //对于其它策略来讲,优先级必须为0
    int sched_priority; 
    };
    
    //修改一个进程的调度策略优先级
    int sched_setparam(pid_t pid,const struct sched_param *param);
    
    //获取进程的调度策略和优先级
    int sched_getscheduler(pid_t pid);
    int sched_getparam(pid_t pid,struct sched_param *param);
    
    //释放cpu
    //如果存在与调用进程的优先级相同的其他排队的可运行进程,那么调用进程会被放在队列的队尾,队列中队头的进程将会被调度使用cpu
    int sched_yield(void);
    
    //找出SCHED_RR进程在每次被授权使用cpu时分配到的时间片的长度
    int sched_rr_get_interval(pid_t pid,struct timespec *tp);
    
    //设置pid制定的进程的cpu亲和力,如果pid为0,那么调用进程的cpu亲和力就会被改变
    int sched_setaffinity(pid_t pid,size_t len,cpu_set_t *set);
    

    这里写图片描述

    cpu_set_t set;
    CPU_ZERO(&set);
    CPU_SET(1,&set);
    CPU_SET(2,&set);
    CPU_SET(3,&set);
    sched_setaffinity(pid,CPU_SETSIZE,&set);
    
    //获取pid指定的进程的cpu亲和力掩码,如果pid为0,那么就返回调用进程的cpu亲和力掩码
    int sched_getaffinity(pid_t pid,size_t len,cpu_set_t *set);
  • 相关阅读:
    [CF724G]Xor-matic Number of the Graph
    [SOJ #537]不包含 [CF102129I]Incomparable Pairs(2019-8-6考试)
    [SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)
    [洛谷P4052][JSOI2007]文本生成器
    [洛谷P3966][TJOI2013]单词
    [洛谷P5158]【模板】多项式快速插值
    [洛谷P3227][HNOI2013]切糕
    【bzoj】3477: [Usaco2014 Mar]Sabotage 01分数规划
    【SPOJ
    【以前的空间】系列
  • 原文地址:https://www.cnblogs.com/biaopei/p/7730605.html
Copyright © 2011-2022 走看看