《山东大学操作系统实验报告3进程调度算法实验(共7页).doc》由会员分享,可在线阅读,更多相关《山东大学操作系统实验报告3进程调度算法实验(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机科学与技术学院实验报告实验三、进程调度算法实验学号:日期:班级:计基地12姓名: 实验目的:加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程调度策略的使用方法。练习进程调度算法的编程和调试技术。实验内容:设有两个并发执行的父子进程,不断循环输出各自进程号、优先数和调度策略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到 SIGINT信号时会自动将其优先数加 1,收到 SIGTSTP 信号时会自动将其优先数减 1。请编程实现以上功能。实验要求:根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中
2、讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。你对于进程调度的概念哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告。硬件环境:处理器:Intel Core i3-2350M CPU 2.30GHz 4 图形:Intel Sandybridge Mobile x86/MMX/SSE2内存:4G操作系统:32位磁盘:20.1 GB软件环境:ubuntu13.04实验步骤: 一个父进程创建一个子进程,这两个进程并发执行,其中定义父进程响应CTRL+C信号,子进程响应CTRL+Z信号,同时实现父进程响应后优先数加1,子进程响应后减1,打印出
3、这两个进程的id号和优先数和调度策略。1)建立psched.c程序,将代码写到程序中;2)建立以下项目管理文件Makefile3)输入make命令编译连接生成可执行的psched程序$gmakegcc-g-cexperiment3.cgccpsched.o-opsched4)执行psched程序结论分析与体会: 实现方式:head = psched.hsrcs = psched.cobjs = psched.oopts = -g -call: pschedpctl:$(objs)gcc $(objs) -o pctlpctl.o: $(srcs) $(head)gcc $(opts) $(sr
4、cs)clean:rm psched *.o#include #include #include #include #include #include psched.hint main(int argc, char *argv)int status,i,j,pid;signal(SIGINT,(sighandler_t)sigint);signal(SIGTSTP,(sighandler_t)sigtstp);pid=fork();if(pid = 0)for(i = 0;i5;i+)printf(%d policy is %d, priority is %d,n,getpid(),sched
5、_getscheduler(getpid(),getpriority(PRIO_PROCESS,0);sleep(1);printf(%d policy is %d, priority is %d,n,getpid(),sched_getscheduler(getpid(),getpriority(PRIO_PROCESS,0);sleep(1);elsesleep(1);for(i = 0;i5;i+)printf(%d policy is %d, priority is %d,n,getpid(),sched_getscheduler(getpid(),getpriority(PRIO_P
6、ROCESS,0);sleep(1);printf(%d policy is %d, priority is %d,n,getpid(),sched_getscheduler(getpid(),getpriority(PRIO_PROCESS,0);sleep(1);return EXIT_SUCCESS;#include #include #include #include #include #include typedef void (*sighandler_t) (int);void sigint()int a = 0;a = getpriority(PRIO_PROCESS,0);a
7、= a+1;setpriority(PRIO_PROCESS,getpid(),a);void sigtstp()int a = 0;a = getpriority(PRIO_PROCESS,0);a = a-1;setpriority(PRIO_PROCESS,getpid(),a);分析: 根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。先进先出算法算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机
8、。最高优先权(FPF)优先调度算法该算法总是把处理机分配给就绪队列中具有最高优先权的进程。常用以下两种方法来确定进程的优先权:轮转法前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。简单轮转法系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。多级队列方法将系统中所有进程分成若干类,每类为一级。多级反馈队列多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。你对于进程调度的概念哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告
9、。进程调度虽然是在系统内部的低级调度,但进程调度的优劣直接影响作业调度的性能。反映作业调度优劣的周转时间和平均周转时间只在某种程度上反映了进程调度的性能,例如,其执行时间部分中实际上包含有进程等待(包括就绪状态时的等待)时间,而进程等待时间的多少是要依靠进程调度策略和等待事件何时发生等来决定的。因此,进程调度性能的商量是操作系统设计的一个重要指标。我们说进程调度性能的衡量方法可分为定形和定量两种。在定形衡量方面,首先是调度的可靠性。包括一次进程调度是否可能引起数据结构的破坏等。这要求我们对调度时机的选择和保存CPU现场十分谨慎。另外,简洁性也是衡量进程调度的一个重要指标,由于调度程序的执行涉及到多个进程和必须进行上下文切换,如果调度程序过于繁琐和复杂,将会耗去较大的系统开销。这在用户进程调用系统调用较多的情况下,将会造成响应时间大幅度增加。进程调度的定量评价包括CPU的利用率评价、进程在就绪队列中的等待时间与执行时间之比等。实际上由于进程进入就绪队列的随机模型很难确定,而且进程上下文切换等也将影响进程的执行效率,LL而对进程调度进行解析是很困难的。一般情况下,大多利用模拟或测试系统响应时间的方法来评价进程调度的性能。体会:1.实验中定义的函数一定要考虑好函数的参数问题,这样才不会出现一些不必要的错误;2.对于一些要忽略的信号要忽略掉,免得影响后面的响应过程专心-专注-专业
限制150内