山东大学操作系统实验报告3进程调度算法实验_第1页
山东大学操作系统实验报告3进程调度算法实验_第2页
山东大学操作系统实验报告3进程调度算法实验_第3页
山东大学操作系统实验报告3进程调度算法实验_第4页
山东大学操作系统实验报告3进程调度算法实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机科学与技术学院实验报告实验三、进程调度算法实验学号:日期:20140409班级:计基地12姓名:实验目的:加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。练习进程调度算法的编程和调试技术。实验内容:设有两个并发执行的父子进程,不断循环输出各自进程号、优先数和调度策略。进程初始调度策略均为系统默认策略和默认优先级。当某个进程收到SIGINT信号时会自动将其优先数加1,收到SIGTSTP信号时会自动将其优先数减1。请编程实现以上功能。实验要求:根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。你对于进程调度的概念哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告。硬件环境:

处理器:Intel®Core™i3-2350MCPU@2.30GHz×4图形:Intel®SandybridgeMobilex86/MMX/SSE2内存:4G操作系统:32位磁盘:20.1GB软件环境:ubuntu13.04实验步骤:一个父进程创建一个子进程,这两个进程并发执行,其中定义父进程响应CTRL+C信号,子进程响应CTRL+Z信号,同时实现父进程响应后优先数加1,子进程响应后减1,打印出这两个进程的id号和优先数和调度策略。1)建立psched.c程序,将代码写到程序中;

2)建立以下项目管理文件Makefile3)输入make命令编译连接生成可执行的psched程序

$gmake

gcc

-g

-c

experiment3.c

gcc

psched.o

-o

psched4)

执行psched程序结论分析与体会:实现方式:head=psched.hsrcs=psched.cobjs=psched.oopts=-g-call:pschedpctl: $(objs) gcc$(objs)-opctlpctl.o:$(srcs)$(head) gcc$(opts)$(srcs)clean: rmpsched*.o#include<stdio.h>#include<stdlib.h>#include<sched.h>#include<sys/time.h>#include<sys/resource.h>#include"psched.h"intmain(intargc,char*argv[]){ intstatus,i,j,pid; signal(SIGINT,(sighandler_t)sigint); signal(SIGTSTP,(sighandler_t)sigtstp); pid=fork(); if(pid==0){ for(i=0;i<5;i++){ printf("%dpolicyis%d,priorityis%d,\n",getpid(),sched_getscheduler(getpid()),getpriority(PRIO_PROCESS,0)); sleep(1); printf("%dpolicyis%d,priorityis%d,\n",getpid(),sched_getscheduler(getpid()),getpriority(PRIO_PROCESS,0)); sleep(1); } } else{ sleep(1); for(i=0;i<5;i++){ printf("%dpolicyis%d,priorityis%d,\n",getpid(),sched_getscheduler(getpid()),getpriority(PRIO_PROCESS,0)); sleep(1); printf("%dpolicyis%d,priorityis%d,\n",getpid(),sched_getscheduler(getpid()),getpriority(PRIO_PROCESS,0)); sleep(1); } } returnEXIT_SUCCESS;}#include<sys/types.h>#include<wait.h>#include<unistd.h>#include<signal.h>#include<stdio.h>#include<stdlib.h>typedefvoid(*sighandler_t)(int);voidsigint(){inta=0;a=getpriority(PRIO_PROCESS,0);a=a+1;setpriority(PRIO_PROCESS,getpid(),a);}voidsigtstp(){inta=0;a=getpriority(PRIO_PROCESS,0);a=a-1;setpriority(PRIO_PROCESS,getpid(),a);}分析:根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。先进先出算法

算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。

最高优先权(FPF)优先调度算法

该算法总是把处理机分配给就绪队列中具有最高优先权的进程。常用以下两种方法来确定进程的优先权:

轮转法

前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。

简单轮转法系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。

多级队列方法将系统中所有进程分成若干类,每类为一级。

多级反馈队列

多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。你对于进程调度的概念哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告。进程调度虽然是在系统内部的低级调度,但进程调度的优劣直接影响作业调度的性能。反映作业调度优劣的周转时间和平均周转时间只在某种程度上反映了进程调度的性能,例如,其执行时间部分中实际上包含有进程等待(包括就绪状态时的等待)时间,而进程等待时间的多少是要依靠进程调度策略和等待事件何时发生等来决定的。因此,进程调度性能的商量是操作系统设计的一个重要指标。我们说进程调度性能的衡量方法可分为定形和定量两种。在定形衡量方面,首先是调度的可靠性。包括一次进程调度是否可能引起数据结构的破坏等。这要求我们对调度时机的选择和保存CPU现场十分谨慎。另外,简洁性也是衡量进程调度的一个重要指标,由于调度程序的执行涉及到多个进程和必须进行上下文切换,如果调度程序过于繁琐和复杂,将会耗去较大的系统开销。这在用户进程调用系统调用较多的情况下,将会造成响应时间大幅度增加。进程调度的定量评价包括CPU的利用率评价、进程在就绪队列中的等待时间与执行时间之比等。实际上由于进程进入就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论