视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
山东大学操作系统试验-3
2025-09-25 17:57:01 责编:小OO
文档
软件学院实验报告

实验题目:进程调度算法实验学号:20100030xxxx

日期:2012-5-2班级:五班姓名:

Email:

实验目的:加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux 系统中进程调度策略的使用方法。练习进程调度算法的编程和调试技术。

硬件环境:IBM实验室计算机

软件环境:eclipse gcc编译器

Ubuntu-Linux操作系统

Gnome桌面

实验步骤:

1.认真阅读试验指导书所给出的相关知识与示例程序,在此基础上分析试验要求,然后着手开始编写程序。

2.用eclipse新建一个c project。

3.新建source folder

4.新建名为psched.c的C语言程序

5.再建立以下名为psched.h的C语言头文件

6.build项目,产生可运行的二进制文件。

7.对程序进行调试,排除bug。

8.进入终端,运行程序,结果如下图所示:

源代码:

#include"psched.h"

int main(int argc,char*argv[]){

int pid;//存放⼦进程号

struct sched_param p1;//设置⼦进程调度策略时使⽤的数据结构struct sched_param p2;//设置⽗进程调度策略时使⽤的数据结构

if((pid=fork())<0){

perror("process not create");

exit(EXIT_FAILURE);}

else if(pid==0){

signal(SIGTSTP,handler1);//注册⼀个处理ctrl+z的信号量,将优先级减⼀

signal(SIGINT,handler3);//注册⼀个处理ctrl+c的信号量,什么也不做

sleep(1);

while(1){

printf("Child PID=%d priority=%d policy is

%d\\n

sleep(3);

}

}else{

signal(SIGINT,handler2);//注册⼀个处理ctrl+c的信号量,将优先级加⼀

signal(SIGTSTP,handler4);//注册⼀个处理ctrl+z的信号量,什么也不做

sched_setscheduler(pid,SCHED_OTHER,&p1);

sched_setscheduler(getpid(),SCHED_OTHER,&p2);

setpriority(PRIO_PROCESS,pid,10);

setpriority(PRIO_PROCESS,getpid(),10);

sleep(1);

while(1){

printf("Parent PID=%d priority=%d policy is%d\\n

sleep(3);

}

}

return EXIT_SUCCESS;

}

#include

#include

#include

#include

#include

#include

#include

//⼦进程处理信号SIGTSTP的⽅法,将优先级减⼀

void handler1(){

setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1); }

//⽗进程处理信号SIGINT的⽅法,将优先级加⼀

void handler2(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);

}

void handler3(){

}

void handler4(){

}

结论分析与体会:通过编写进程调度试验,首先,我更加熟练了如何编写多进程程序,更加了解了型号量的注册和使用方法。加深了对进程调度概念的理解,体验进程调度机制的功能,明白了如何控制进程的优先级和调度算法。下载本文

显示全文
专题