资源描述:
《操作系统实验三实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、操作系统实验三实验报告基本信息1.1实验题目进程调度算法实验1.2完成人王召德1.3报告日期2015-4-16实验内容简要描述2.1实验目标加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。练习进程调度算法的编程和调试技术。2.2实验要求没有两个并发执行的父子进程,不断循环输出各A进程号、优先数和调度策略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到SIGINT信号吋会B动将其优先数加1,收到SIGTSTP信号吋会动将其优先数减1。请编
2、程实现以上功能。2.3实验的软硬件环境Ubuntul4.04intelPC报告的主要内容3.1实验的思路父进程生成子进程分别都绑定SIGINT和SIGTSTP信号,井且在函数屮分別让优先级加一-和减一,然后分别打印二十次自己的PID,优先级,凋度策略。毎次按Ctrl-C优先级会加一,按Ctrl-Z优先级会减一。3.2实验模型的描述3.3主要数据结构的分析说明3.4主要算法代码的分析说明无3.5项目管理文件的说明无实验过程和结果4.1实验投入的实际学时1学时4.2调试排错过程的记录在调试过程屮,两
3、个进稈id搞错导致处理错误4.3多种方式测试结果的记录Irootgzhaode-Lenovo-IdeaPacbS^WT/none/znaode/MW/code#./test_3g进程PID=6059优先级=0,调度策略=0"=0子进程PID=6066优先级=^ZSIGTSTpi言号,优先度减一SIGTSTP信号,佚筅度减一父进程PID=6059快先级=子进程PID=6060況先级=々ZSIGTSTP信号,优先度减一SIGTSTP信号,伙先度减一父进程PID=6059优先级=子进程PID=6060
4、优先级=△CSIGINT信号,优先度口一SIGINT信号,伏先度加一父进程PID=6059後先级=子进程PID=6060优先级=△CSIGINT信号,优先度b口一SIGINT信号,伏筅度加一子进程PID=6060优先级=父进程PID=6059优先级=^CSIGINT信号,优先度加一SIGINT信号,说先度加一父进程PID=6059先级=子进程PID=6060饫先级=△CSIGINT信号,优先度加一子进程PID=6060优先级=卜IGINT信号,优先度如一P进程PID=6059优先级=进程PID=
5、6060优先级=调度策略=0调度策略调度策略黯騮调度策略调度策略调度策略调度策略4.4实验结果的分析综合无实验的总结系统可以奋多种不同的策略调度进程,其屮按照优先级调度,hj•以给某个进程没置优先级,这个优先级可正可负,可以根据优先级的大小进行调度,而.R.这个优先级吋以在进程执行中改变。附录程序源代码//includeinclude#include#includeinclude^in
6、clude//SIGINT程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。//SIGTSTP停止进稈的运行,但该信号可以被处理和忽略.川户键入SUSP字符时(通常足Ctrl-Z)发出这个信号typedefvoid(*sighandler_t)(int);voidsigcat一1(){phntfC.SIGINT信号,优先度加-An">;setpriority(PRIO_PROCESS,getpid(),getp
7、riority(PRIO_PROCESS,getpid())+l);}voidsigcat_2(){printffSIGTSTP信号,优先度减一">;setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())-l);}intmain(intargc,char*argv[]){inti,j,pid;//srand((unsigned)time(O));printfC'Ctrl-C让进程优先度加一,Ctrl-Z让进程优
8、先度减一");if((pid=fork())==0){signal(SIGINT,(sighandler_t)sigcat_l);signal(SIGTSTP,(sighandler_t)sigcat_2);for(i=0;i<20;i++){printf("子进程PID=%d优先级=%d,调度®略=%d",getpid()/getpriority(PRIO_PROCESS,0)zsched_getscheduler(getpid()));/*if(rand()%2){printf("子进程