操作系统--进程调度算法
2014-06-25 23:13
393 查看
psched.c文件
MakeFile文件:
srcs = psched.c
objs = psched.o
opts = -g -c
all: psched
psched: $(objs)
gcc $(objs) -o psched
psched.o: $(srcs)
gcc $(opts) $(srcs)
clean:
rm psched *.o
#include <stdio.h> #include <stdlib.h> #include <sched.h> #include <sys/time.h> #include <sys/resource.h> #include <signal.h> 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 i,j,status; int pid; //存放进程号 struct sched_param p[2]; //设置调度策略时使用的数据结构 //SIGINT对应sigcat,SIGTSTP对应sigzat if((pid=fork()) <0){ perror("process not create"); exit(EXIT_FAILURE); } else if(pid>0){ signal(SIGINT, (sighandler_t)sigcat); signal(SIGTSTP, (sighandler_t)nothing); sched_setscheduler(getpid(), SCHED_OTHER, &p[0]); setpriority(PRIO_PROCESS, getpid(), 0); sleep(1); //每隔1妙报告一次进程号和优先级 for(i=0; i<10; i++){ printf("Parent PID = %d priority = %d\n",getpid(),getpriority(PRIO_PROCESS,0)); printf("按Ctrl+c可为父进程的优先数加1\n"); pause(); sleep(1); } exit( EXIT_SUCCESS); } //各子进程循环报告其优先数和调度策略 else{ sleep(1); //每隔1妙报告一次进程号和优先级 signal(SIGTSTP, (sighandler_t)sigzat); signal(SIGINT, (sighandler_t)nothing); sched_setscheduler(getpid(), SCHED_OTHER, &p[1]); setpriority(PRIO_PROCESS, getpid(), 0); sleep(1); //每隔1妙报告一次进程号和优先级 for(i=0; i<10; i++){ printf("Child PID = %d priority = %d\n",getpid(),getpriority(PRIO_PROCESS,0)); printf("按Ctrl+z可为父进程的优先数加1\n"); pause(); sleep(1); } exit( EXIT_SUCCESS); } return EXIT_SUCCESS; }
MakeFile文件:
srcs = psched.c
objs = psched.o
opts = -g -c
all: psched
psched: $(objs)
gcc $(objs) -o psched
psched.o: $(srcs)
gcc $(opts) $(srcs)
clean:
rm psched *.o
相关文章推荐
- 操作系统——使用动态优先权的进程调度算法的模拟
- 操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)
- 用C++模拟操作系统进程调度的几种算法
- 操作系统进程调度算法 先到先服务 短作业 优先级 时间片轮转
- 操作系统中常见的进程调度算法
- 计算机操作系统的各种算法汇——作业、进程、页面置换、磁盘调度等。
- 操作系统 进程调度算法 浅析
- 操作系统进程调度算法
- 操作系统:进程调度算法详解之FCFS和SPF篇
- 【大三操作系统实验】 作业进程调度算法
- 操作系统内存,磁盘调度,进程调度算法
- 【操作系统】进程调度及其算法
- 操作系统---OS的进程调度算法
- 操作系统进程(作业)调度常见算法详解
- 操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)
- Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先
- 操作系统进程调度(FCFS)算法
- c++模拟操作系统进程调度算法(优先数,时间片轮转)
- 操作系统中常用的进程调度算法
- 操作系统中常见的进程调度算法