资源简介

C语言实现调度算法实验-山东大学操作系统实验三。C语言实现调度算法实验-山东大学操作系统实验三。C语言实现调度算法实验-山东大学操作系统实验三。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

typedef void (*sighandler_t)(int);

void sigcat(){
//+1
  setpriority(PRIO_PROCESS getpid() getpriority(PRIO_PROCESS 0) + 1);
}

void sigzat(){
//-1
  setpriority(PRIO_PROCESS getpid() getpriority(PRIO_PROCESS 0) - 1);
}

void nothing() {}

int main(int argc char *argv[])
{
int pid; //存放进程号
struct sched_param p[2]; //设置调度策略时使用的数据结构
int i;
for( i=0; i<2;i++){
//取进程优先数放在调度策略数据结构中
p[i].sched_priority = 10;
}

pid = fork();
if(pid < 0){
    printf(“failed!“);
}
else if(pid > 0){
    signal(SIGINT (sighandler_t)sigcat);  //-1
    signal(SIGTSTP (sighandler_t)nothing);

    sched_setscheduler(getpid() SCHED_OTHER &p[0]);
    setpriority(PRIO_PROCESS getpid() 10);

    sleep(2);
    //循环报告其优先数和调度策略
    while(1){
       printf(“parent PID = %d priority = %d scheduler = %d\n“ getpid()getpriority(PRIO_PROCESS 0) sched_getscheduler(getpid()));

    sleep(4);
   }
}


else{
    signal(SIGTSTP (sighandler_t)sigzat);
    signal(SIGINT (sighandler_t)nothing);

    sched_setscheduler(getpid() SCHED_OTHER &p[1]);
    setpriority(PRIO_PROCESS getpid() 10);

    sleep(2);
    ///循环报告其优先数和调度策略
    while(1){
    printf(“Child PID = %d priority= %d scheduler = %d\n“getpid()getpriority(PRIO_PROCESS0) sched_getscheduler(getpid()));

    
    sleep(4);
}
exit( EXIT_SUCCESS);
}
return EXIT_SUCCESS;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-12-26 16:13  C语言实现调度算法实验-山东大学操作系统实验三\
     目录           0  2019-12-26 16:16  C语言实现调度算法实验-山东大学操作系统实验三\test3\
     文件        7586  2013-04-26 17:14  C语言实现调度算法实验-山东大学操作系统实验三\test3\.goutputstream-CBM1VW
     文件        7773  2013-05-03 19:42  C语言实现调度算法实验-山东大学操作系统实验三\test3\a.out
     文件         154  2013-04-26 15:08  C语言实现调度算法实验-山东大学操作系统实验三\test3\Makefile
     文件        1637  2013-05-03 19:43  C语言实现调度算法实验-山东大学操作系统实验三\test3\psched.c

评论

共有 条评论