文档库 最新最全的文档下载
当前位置:文档库 › 作业管理和进程调度(答案)

作业管理和进程调度(答案)

作业管理和进程调度(答案)
作业管理和进程调度(答案)

作业管理和进程调度

一.选择题

1.操作系统提供给程序员的接口是_______

A)进程B)系统调用C)库函数D)系统调用和库函数

2._______是作业存在的唯一标志

A)作业名B)进程控制块C)作业控制块D)程序名

3.设有四个作业同时到达,每个作业执行时间均为2小时,它们在台处理器上按单道方式运行,则平均周转时间为_______

A)1小时B)5小时C)25小时D)8小时

4.作业调度算法的选择常考虑因素之一是使系统有最高的吞吐量,为此应______

A)不让处理器空闲B)能够处理尽可能多的作业

C)使各类用户都满意D)不使系统过于复杂

5.在各种作业调度算法中,若所有作业同时到达,则平均等待时间最短的算法是_________

A)先来先服务B)优先数C)最高响应比优先D)短作业优先

6.在各种作业调度算法中,若所有作业同时到达,则平均等待时间最短的算法是________

A)先来先服务B)优先数C)最高响应比优先D)短作业优先

7.既考虑作业等待时间,又考虑作业执行时间的调度算法是_______

A)响应比高者优先B)短作业优先

C)优先级调度D)先来先服务

8.作业调度中的先来先服务算法是以_______为出发点考虑的。

A)作业执行时间B)作业周转时间

C)作业等待时间D)等待时间加运算时间

9.作业调度程序从处于_______状态的队列中选取适当的作业投入运行。

A)运行B)提交C)完成D)后备

10._________是指从作业提交给系统到作业完成的时间间隔。

A)周转时间B)响应时间C)等待时间D)运行时间

11.作业进入后备队列到被调度程序选中的时间间隔称为________

A)周转时间B)响应时间C)等待时间D)触发时间

12.下述作业调度算法中,________调度算法与作业的估计运行时间有关。

A)先来先服务B)短作业优先C)均衡D)时间片轮转

13.用户通过终端使用计算机系统控制作业执行的方式称为_______方式

A)自动B)联机C)脱机D)假脱机

14.作业生存周期共经历四个状态,它们是提交、后备、_______和完成

A)就绪B)执行C)等待D)开始

15.现有三个同时到代的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1

A)T1+T2+T3 B)(T1+T2+T3)/3

C)(3T1+2T2+T3)/3 D)(T1+2T2+3T3)/3

16.一作业8:00到达系统,估计运行时间为1小时。若10:00开始执行该作业,其响应比是_______

A)2 B)1 C)3 D)0.5

17.下列算法中,_____只能采用非抢占调度方式。

A)高优先权优先法B)时间片轮转法

C)FCFS调度算法D)短作业优先算法

18.下面关于优先权大小的论述中,正确的论述是_____。

A)计算形作业的优先权,应高于I/O型作业的优先权。

B)用户进程的优先权,应高于系统进程的优先权。

C)资源要求多的作业,其优先权应高于资源要求少的作业。

D)在动态优先权时,随着进程执行时间的增加,其优先权降低。

19.最适合分时系统的进程调度算法是_____。

A)F CFS B)SSJF C)优先数法D)轮转法20.下面对进程的描述中,错误的______。

A)进程是动态的概念B)进程执行需要处理器

C)进程是有生命周期的D)进程是指令的集合

21.进程的组成部分中______是进程存在的标志。

A)PCB B)数据集合C)共享程序D)非共享程序22.进程从运行态到阻塞态可能是由于_______。

A)现运行进程执行了P操作B)现运行进程时间片用完

C)现运行进程执行了V操作D)进程调度程序的调度

23.进程从运行态阻塞态不能是由于现运行进程_______。

A)出现缺页中断B)发生越界中断

C)申请磁带读/写D)执行了V操作

24.在进程管理中,当_____时,进程从阻塞态变为就绪态。

A)进程被进程调度程序选中B)等待某一事件

C)等待的事件发生D)时间片用完

25.引入多道程序设计技术的目的在于_______。

A)充分利用CPU,增加单位时间内的算题量。

B)充分利用存储器

C)有利于代码共享,减少主、辅存信息交换量

D)提高每一个算题的速度

26.分配给进程占用处理器的时间到强迫进程让出处理器,或有更高优先数的进程要运行,迫使正在运行的进程让出处理器,则进程状态变化的情况为_______。

A)运行态->就绪态B)运行态->阻塞态

C)就绪态->运行态D)阻塞态->就绪态

27.已获得了除______以外的所有运行所需资源的进程处于就绪态。

A)存储器B)打印机C)CPU D)磁盘空间

28.下列进程变化状态中,______变化是不可能发生的。

A)运行态->就绪态B)运行态->阻塞态

C)阻塞态->运行态D)阻塞态->就绪态

29.剥夺式的优先级调度算法在_____中很有用。

A)网络操作系统B)分布式操作系统C)批处理系统D)实时系

30.系统可把等待资源的进程组织成等待队列,这样的等待队列有________。

A)0个B)1个C)2个D)1个或多个

31.下述解决死锁的方法中,属于死锁预防策略的是_____。

A)银行家算法B)资源有序分配法

C)资源分配图化简法C)撤销进程法

32.在为多道程序锁提供的可共享的系统资源不足时,可能出现死锁。但是,

不适当的_____也可能产生死锁。

A)进程优先权B)资源的线性分配

C)进程推进顺序D)分配队列优先权

33.采用资源剥夺法可解除死锁,还可以采用_____方法解除死锁。

A)执行并行操作B)撤销进程

C)拒绝分配新资源D)修改信号量

34.发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要

条件,但破坏_____条件是不太实际的。

A)互斥B)不可抢占C)部分分配D)循环等待

35.在_____的情况下,系统出现死锁。

A)计算机系统发生了重大故障。

B)有多个封锁的进程同时存在。

C)若干个进程因竞争资源而无休止地互相等待他方释放已占有的资

源。

D)资源数大大小于进程数,或进程同时申请的资源数大大超过资源总

数。

36.银行家算法是一种_____算法。

A)死锁解除B)死锁避免C)死锁预防D)死锁检测

37._____优先权是在创建进程时确定的,确定之后在整个进程运行期间不再

改变。

A)先来先服务B)静态C)动态D)短作业

38..某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生

死锁的最少资源数是_____。

A)9 B)10 C)11 D)12

39.以下叙述中正确的是_____。

A)调度原语主要是按照一定的算法,从阻塞队列中选择一个进程,将处理

机分配给它。

B)预防死锁的发生,可以通过破坏产生死锁的四个必要条件之一来实现,

但破坏互斥条件的可能性不大。

C)进程进入临界区时要执行开锁原语。

D)既考虑作业等待时间,又考虑作业执行时间的调度算法是先来服务算法。

二.填空题

1.作业控制方式有___剥夺式_____和___非剥夺式______两种方式。

2.操作系统为程序员提供的接口是____系统调用_______,为一般用户提供的接

口是___命令接口________.

3.一个作业的运行时间假定为1个小时,它在系统中等待了3个小时,那么该

作业的周转时间___4______个小时,响应比是____4_____.

4.一个作业可以分成若干个顺序处理的加工步骤,每个加工步骤称为一个___

作业步______

5.进程调度负责___CPU_______的分配工作。

6.在__先进先出________调度算法中,按照进程进入就绪队列的先后次序来分配处理机。

7.处理死锁的方法通常有___预防_______、___避免_______和__检测和解除

________。

8.为破坏__请求和保持________条件,采用资源的静态预分策略,系统对进程申请的资源进行一次性的分配,然后才启动该进程运行。

9.死锁是指再系统中的多个__进程________,无限期地等待永远不会发生的条件。

11.10.进程调度负责___处理器_______的分配工作。

12.在___先进先出_______调度算法中,按照进程进入就绪队列的先后次序来分配处理机。

13.死锁产生的必要条件有四个:__互斥_____、___请求和保持____、__不剥夺_____和__环路等待_____。

14.解除死锁常用的方法有两种。__资源剥夺法________是从其他进程那里剥夺足够数量的资源给__死锁进程________以解除死锁状态。

15.银行家算法中,当一个进程提出的资源请求将导致从__安全状态______进入_不安全状态_________时,系统就拒绝它的资源请求。

16.如果要求所有进程一次性申请它所需要的全部资源。若系统有足够的资源分配给进程,使一次把所有的资源分配给该进程。但在分配时只要有一种资源要求不能满足,则资源全不分配,进程等待。这种死锁预防方法破坏了死锁产生必要条件中的____请求和保持______条件。

17.对待死锁,一般应考虑死锁的预防、避免、检测和解除四个问题。典型的银行家算法是属于____死锁避免______,破坏环路等待条件是属于_死锁预防

_______,而剥夺资源是____死锁解除______的基本方法。

三、计算

1、设有一组作业,它们的到达时间和所需CUP时间如下表所示,如果分别采

用先来先服务和和短作业优先调度算法,问它们的调度顺序、每个作业周转时间以及平均周转时间为多少?

2、设有以下三个作业,它们的到达时间和所需CUP时间如下表所示,若采作响应比高者优先调度算法,它们的调度顺序、每个作业周转时间以及平均周转时间

3.在某多道程序系统中,供用户使用的内存空间有100k,磁带机2台,打印机1台。系统采用可变分区分配方式管理内存,对磁带机和打印机采用静态分配方

假设作业调度采用先来先服务算法,优先分配内存的低地址区域且不准移动已在内存中的作业,在内存中的作业平分cpu 时间,试问:

1) 作业调度选中的次序是什么?

2) 如果把一个作业的周转时间定义为到达系统至计算完成的时间,则最大和最小的周转时间是多少?

3) 作业全部执行结束的时间是多少?

分析:

8:00,作业10 15k

8:20,作业23到达,系统能满足其需求,则作业3进入内存运行。此时,作业1已运行20分钟,还需要5分钟运行,但这时内存中已有两道作业,则它们要平分cup 时间,即作业1至少还要运行100 15k

75k

8:30作业1运行完毕,释放资源。此时,系统中有1台磁带机和1台打印机空闲,还有一个大小为15k 和大小为25k 的空闲分区。与此同时,作业4到达,与正在等待的作业2一起竞争内存和外设。因作业2所要求的内存空间无法满足,因此作业2继续等待。作业4只申请20k 内存并要1台磁带机,可被满足,所以作业4进入内存并运行。这时,作业3已经运行5分钟,它还需要运行15分钟,内存中有两道作业,则它们要平分cup 时间,即作业3至少还要运行30分钟才能运行完毕。

15k

75k

95k

8:35,作业5到达,这时已没有空闲磁带机,作业5等待。

9:00,作业3运行完毕,释放占用资源。此时,系统有有1台磁带机和1台打印机空闲,还有一个大小为75k和一个大小为5k的空闲区。因作业2比作业5先到,且作业2的资源申请能被满足,所以,作业2被调入内存,作业5等待。

30k

75k

95k

9:10,作业4运行完毕,释放资源。此时,系统有2台磁带机,还有一个70k 的空闲区,但作业5申请打印机不能满足,等待。

9:15,作业2运行完毕,释放打印机,和内存,此时,系统所有资源空闲。这时,作业5进入运行,独自使用cpu,15分钟后完成。

解:

1)调度执行次序:1-3-4-2-5

2)作业1:T=8:30-8:00=30

作业2:T=9:15-8:20=55

作业3:T=9:00-8:20=40

作业4:T=9:10-8:30=40

作业5:T=9:30-8:35=55

4)作业全部执行完的时间是9:30

4.已知某某系统中所有资源是相同的,系统中的进程严格按照一次一个的方式申请或释放资源。在此系统中,没有进程所需要的资源数量超过系统的总拥有数

答:

情况a:因系统中不仅存在1个进程,且系统中的资源总数为2,由题目所给条件可知,该进程的最大资源需求量不超2,显然情况a不会出现死锁。

情况b:因系统中存在2个进程,且系统中资源总数为1,由题目所给条件可知,每个进程的最大资源需求量不超1。不妨设两个进程的最大资源需求量为1。若系统将资源分配给其中一个进程,则此进程已获得它所需要的所有资源并运行完毕,从而可将分配给他的资源归还给系统,使另一个进程也能顺利执行完成,故不会发生死锁。

情况c:因系统中存在2个进程,且系统中资源总数为2,由题目所给条件可知,该进程的最大资源需求量不超2。假设两个进程的最大需求量为2,若系统将资源分配给其中的一个进程,则此进程已获得它所需要的所有资源并将运行完毕,从而可将分配给它的资源归还给系统,使另一个进程也能顺利执行完成,以这种方式分配资源不会发生死锁;若系统将资源分配给每个进程1个,在此情况下,每个进程均获得1个资源且系统中已没有空闲资源,当其中的一个进程再次申请1个资源时,因系统中无空闲资源而使其等待,另一个进程的情况也如此,因此这种方式分配资源会发生死锁。

情况d:因系统中存在2个进程,且系统中资源总数为3,由题目所给条件可知,该进程的最大资源需求量不超3,假设两个进程的最大资源需求量为3,若系统将资源分配给其中一个进程,则此进程已获得它所需要的所有资源并将运行完毕,从而可将分配给他的资源归还系统,使另一个进程也能顺利执行完成,以这种方式分配资源不会发生死锁;若系统将资源分配给其中一个进程1个,另一个进程2个,在此情况下,因系统中无空闲资源而使其等待,另一个进程的情况也是如此,因此这种方式分配资源会发生死锁。

计算机操作系统进程调度实验研究报告

计算机操作系统进程调度实验研究报告

————————————————————————————————作者:————————————————————————————————日期:

操作系统实验题:设计一若干并发进程的进程调度程序 一、实验目的 无论是批处理系统、分时系统还是实时系统,用户进程数一般都大于处理机数,这将导致用户进程互相争夺处理机。这就要求进程调度程序按一定的策略,动态地把处理及分配给处于就绪队列中的某一进程,以使之执行。进程调度是处理机管理的核心内容。本实验要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念。并体会了优先数和先来先服务调度算法的具体实施办法。 二、实验要求 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 三、实验内容 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法(将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理)。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。 四、实验算法流程

操作系统实验-进程控制

实验一、进程控制实验 1.1 实验目的 加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux 系统中进程创建与控制有关的系统调用的编程和调试技术。 1.2 实验说明 1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。 fork()系统调用语法: #include pid_t fork(void); fork 成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6 个函数,其中示例实验中引用了execve 系统调用语法: #include int execve(const char *path, const char *argv[], const char * envp[]); path 要装入 的新的执行文件的绝对路径名字符串. argv[] 要传递给新执行程序的完整的命令参数列表(可以为空). envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空).

Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。如果exec 调用失败,它会返回-1。 wait() 系统调用语法: #include #include pid_t wait(int *status); pid_t waitpid(pid_t pid,int *status,int option); status 用 于保留子进程的退出状态 pid 可以为以下可能值: -1 等待所有PGID 等于PID 的绝对值的子进程 1 等待所有子进程 0 等待所有PGID 等于调用进程的子进程 >0 等待PID 等于pid 的子进程option 规 定了调用waitpid 进程的行为: WNOHANG 没有子进程时立即返回 WUNTRACED 没有报告状态的进程时返回 wait 和waitpid 执行成功将返回终止的子进程的进程号,不成功返回-1。 getpid()系统调用语法: #include #include pid_t getpid(void); pid_t getppid(void); getpid 返回当前进程的进程号,getppid 返回当前进程父进程的进程号 2)与进程控制有关的系统调用说明可以通过信号向一个进程发送消息以控制进程的 行为。信号是由中断或异常事件引发的,如:键盘中断、定时器中断、非法内存引

实验21 进程调度

实验2、1 进程调度 一、 实验目的 多道程序设计中,经常就是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。 二、 实验要求 1. 设计进程调度算法,进程数不定 2. 包含几种调度算法,并加以实现 3. 输出进程的调度过程——进程的状态、链表等。 三、 参考例 1.题目——优先权法、轮转法 简化假设 1) 进程为计算型的(无I/O) 2) 进程状态:ready 、running 、finish 3) 进程需要的CPU 时间以时间片为单位确定 2.算法描述 1) 优先权法——动态优先权 当前运行进程用完时间片后,其优先权减去一个常数。 2) 轮转法 四、 实验流程图 开始 键盘输入进程数n,与调度方法的选择 优先权法? 轮转法 产生n 个进程,对每个进程产生一个PCB,并用随机数产生进程的优先权及进程所需的CPU 时间 按优先权大小,把n 个进程拉成一个就绪队列 撤销进程就绪队列为空? 结束 N Y Y

注意: 1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。 2.进程数n 不要太大通常取4~8个 3.使用动态数据结构 4.独立编程 5.至少三种调度算法 6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。 五.实验过程: (1)输入:进程流文件(1、txt),其中存储的就是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高) 进程0 1 50 2 进程1 2 10 4 进程2 1 15 0 进程3 3 28 5 进程4 2 19 1 进程5 3 8 7 输出: 进程执行流等待时间,平均等待时间 本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法 产生n 个进程, 的时间片数,已占用CPU 的时间片数置为0 按进程产生的先后次序拉成就绪队列链 =0? 撤销该进程 就绪队列为空不? =轮转时间片数? N Y Y Y 结束 N

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

时间片轮转进程调度模拟算法的实现

武汉理工大学华夏学院课程设计报告书 课程名称:操作系统原理 题目:时间片轮转进程调度模拟算法的实现系名:信息工程系 专业班级:计算机1132班 姓名:李杰 学号: 10210413209 指导教师: 司晓梅 2015年 6 月 26日

武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:操作系统原理课程设计指导教师:司晓梅 班级名称:计算机1131-2 开课系、教研室:自动化与计算机 一、课程设计目的与任务 操作系统课程设计是《操作系统原理》课程的后续实践课程,旨在通过一周的实践训练, 加深学生对理论课程中操作系统概念,原理和方法的理解,加强学生综合运用操作系统原理、 Linux系统、C语言程序设计技术进行实际问题处理的能力,进一步提高学生进行分析问题 和解决问题的能力,包含系统分析、系统设计、系统实现和系统测试的能力。 学生将在指导老师的指导下,完成从需求分析,系统设计,编码到测试的全过程。 二、课程设计的内容与基本要求 1、课程设计题目 时间片轮转进程调度模拟算法的实现 2、课程设计内容 用c/c++语言实现时间片轮转的进程调度模拟算法。要求: 1.至少要有5个以上进程 2.进程被调度占有CPU后,打印出该进程正在运行的相关信息 提示: 时间片轮转调度算法中,进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先来先服务原则调度,但一旦进程占用处理机则仅使用一个时间片。在使用完一个时间片后,进程还没有完成其运行,它必须释放出处理机给下一个就绪的进程,而被抢占的进程返回到就绪队列的末尾重新排队等待再次运行。 1)进程运行时,只打印出相关提示信息,同时将它已经运行的时间片加1就可以了。 2)为进程设计出PCB结构。PCB结构所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息等。 3、设计报告撰写格式要求: 1设计题目与要求 2 设计思想 3系统结构 4 数据结构的说明和模块的算法流程图 5 使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明 6 运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)

随机进程调度算法

《操作系统原理》实验报告 实验名称:Linux随机进程调度算法实现 班级: 学号: 姓名: 日期: 2012/12/31

一、实验名称 Linux随机进程调度算法实现 二、所属课程名称 《操作系统原理》 三、实验原理 linux 0.11内核目录linux/kernel中的sched.c函数是内核中进程调度管理的程序,其中schedule()函数负责选择系统中下一个要运行的进程。 schedule()函数首先对所有任务(进程)进行检测,唤醒任何一个已经得到信号的进程。具体方法是任务数组中的每个进程,检查其报警定时值alarm。如果进程的alarm时间已经过期(alarm

NR_TASKS:系统能容纳的最大进程数(64个); task[]:任务(进程)数组; 更改代码如下:(linux 0.11内核目录下linux/kernel/sched.c 源文件的scheduling()函数while(1)循环)while (1) { //定义c用来判断系统中是否可运行的任务(进程)存在; c=-1; //c初值设为-1,默认不存在可运行进程; next = 0;//next记录下一个即将运行的进程; i=jiffies % NR_TASKS+1; //i的值是随机产生的; p=&task[i];//p指向在task表中下标为i的进程; while (--i) { //遍历task[]; if(!*--p)continue; //如果task[i]不包含进程,跳过; //如果task[i]包含进程且该进程处于就绪状态,记录 //该任务(进程)序号,跳出无限循环while(1),转向 //switch_to()函数执行该任务(进程); if ((*p)->state == TASK_RUNNING) { next = i; c=i; break; } } if (c) break;//如果没有任何任务(进程)要执行,则跳出, //转向switch_to(),执行0号进程(idle)。 }

第二章 操作系统进程(练习题标准答案)

第二章操作系统进程(练习题答案)

————————————————————————————————作者:————————————————————————————————日期: 2

第二章进程管理 1.操作系统主要是对计算机系统全部 (1) 进行管理,以方便用户、提高计算机使 用效率的一种系统软件。它的主要功能有:处理机管理、存储管理、文件管理、 (2) 管 理和设备管理等。Windows和Unix是最常用的两类操作系统。前者是一个具有图形界面的 窗口式的 (3) 系统软件,后者是一个基本上采用 (4) 语言编制而成的 的系统软件。在 (5) 操作系统控制下,计算机能及时处理由过程控制反馈的信息 并作出响应。 供选答案: (1): A. 应用软件 B. 系统软硬件 C. 资源 D. 设备 (2): A. 数据 B. 作业 C. 中断 D. I/O (3): A. 分时 B. 多任务 C. 多用户 D. 实时 (4): A. PASCAL B. 宏 C. 汇编 D. C (5): A. 网络 B. 分时 C. 批处理 D. 实时 答案:CBBDD 2.操作系统是对计算机资源进行的 (1) 系统软件,是 (2) 的接口。 在处理机管理中,进程是一个重要的概念,它由程序块、 (3) 和数据块三部 分组成,它有3种基本状态,不可能发生的状态转换是 (4) 。 虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 (5) 作为它的一个主要组成部分。 供选答案: (1): A. 输入和输出 B. 键盘操作 C. 管理和控制 D. 汇编和执行 (2): A. 软件和硬件 B. 主机和外设 C. 高级语言和机器语言 D. 用户和计算机 (3): A. 进程控制块 B. 作业控制块 C. 文件控制块 D. 设备控制块 (4): A. 运行态转换为就绪态 B. 就绪态转换为运行态 C. 运行态转换为等待态 D. 等待态转换为运行态 (5): A. 软盘 B. 硬盘 C. CDROM D. 寄存器 答案:CDADB 3.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D。 A. Spodling技术 B. 虚拟存储技术 C. 缓冲技术 D. 多道程序设计技术 4.分时系统追求的目标是 C。 A. 高吞吐率 B. 充分利用内存 C. 快速响应 D. 减少系统开销 5.引入多道程序的目的是 D。

操作系统实验-进程调度程序设计

课程名称:实验项目:实验地点: 专业班级:学生姓名:指导教师: 本科实验报告 操作系统B 进程调度程序设计 学号:2011 年11 月

目录 进程调度程序设计 一、实验目的和要求 (1) 二、实验内容及原理 (1) 三、实验仪器设备 (3) 四、操作方法与实验步骤 (3) 五、实验数据记录和处理 (3) 六、实验结果与分析 (10) 七、实验感想 (11)

实验二 一、实验目的和要求 (一) 目的 进程调度程序设计 进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求 学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验 可使学生加深对进程调度和各种调度算法的理解。 (二) 要求 1. 设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB) 表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占 用 CPU 的时间以及进程的状态等,且可按照调度算法的不同而增删。 2. 调度程序应包含 2—3 种不同的调度算法,运行时可以任选一种,以利于各种方法 的分析和比较。 3. 系统应能显示或打印各进程状态和参数的变化情况,便于观察。 二、实验内容及原理 1. 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行 R(run)、就绪 W(wait)和完成 F(finish)三种状态之一,并假定起始状态都是就绪状态 W 。 为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮 转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。 进程控制块结构如表 2-1 所示: 表 2-1 PCB 进程控制块链结构如图 2-1 所示: 图 2-1 进程控制块链结构 其中:RUN —当前运行进程指针; 进程标识符 链指针 优先数/轮转时间片数 占用 CPU 时间片数 进程所需时间片数 进程状态

第二章-操作系统进程(练习题答案)

第二章进程管理 1.操作系统主要是对计算机系统全部 (1) 进行管理,以方便用户、提高计算机使 用效率的一种系统软件。它的主要功能有:处理机管理、存储管理、文件管理、 (2) 管 理和设备管理等。Windows和Unix是最常用的两类操作系统。前者是一个具有图形界面的 窗口式的 (3) 系统软件,后者是一个基本上采用 (4) 语言编制而成的 的系统软件。在 (5) 操作系统控制下,计算机能及时处理由过程控制反馈的信息 并作出响应。 供选答案: (1): A. 应用软件 B. 系统软硬件 C. 资源 D. 设备 (2): A. 数据 B. 作业 C. 中断 D. I/O (3): A. 分时 B. 多任务 C. 多用户 D. 实时 (4): A. PASCAL B. 宏 C. 汇编 D. C (5): A. 网络 B. 分时 C. 批处理 D. 实时 答案:CBBDD 2.操作系统是对计算机资源进行的 (1) 系统软件,是 (2) 的接口。 在处理机管理中,进程是一个重要的概念,它由程序块、 (3) 和数据块三部 分组成,它有3种基本状态,不可能发生的状态转换是 (4) 。 虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 (5) 作为它的一个主要组成部分。 供选答案: (1): A. 输入和输出 B. 键盘操作 C. 管理和控制 D. 汇编和执行 (2): A. 软件和硬件 B. 主机和外设 C. 高级语言和机器语言 D. 用户和计算机 (3): A. 进程控制块 B. 作业控制块 C. 文件控制块 D. 设备控制块 (4): A. 运行态转换为就绪态 B. 就绪态转换为运行态 C. 运行态转换为等待态 D. 等待态转换为运行态 (5): A. 软盘 B. 硬盘 C. CDROM D. 寄存器 答案:CDADB 3.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D。 A. Spodling技术 B. 虚拟存储技术 C. 缓冲技术 D. 多道程序设计技术 4.分时系统追求的目标是 C。 A. 高吞吐率 B. 充分利用内存 C. 快速响应 D. 减少系统开销 5.引入多道程序的目的是 D。

操作系统实验2进程调度源程序

#include #include #include #include #include #include #define P_NUM 5 #define P_TIME 50 enum state{ ready, execute, block, finish };//定义进程的状态 struct pcb{ char name[4];//进程名 int priority;//优先权 int cputime;//CPU运行时间 int needtime;//进程运行所需时间 int count;//进程执行次数 int round;//时间片轮转轮次 state process;//进程状态 pcb*next; };//定义进程pcb pcb*get_process(){ pcb*q; pcb*t; pcb*p; int i=0; cout<<"input name and time"<>q->name; cin>>q->needtime; q->cputime=0; q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if(i==0){ p=q; t=q; } else{

t->next=q;//创建就绪进程队列 t=q; } i++; }//while循环 return p; }//输入模拟测试的进程名和执行所需时间,初始设置可模拟5个进程的调度 void display(pcb*p){ cout<<"name"<<" "<<"cputime"<<" "<<"needtime"<<" "<<"priority"<<" "<<"shate"<name; cout<<" "; cout<cputime; cout<<" "; cout<needtime; cout<<" "; cout<priority; cout<<" "; switch(p->process){ case ready:cout<<"ready"<next; }//显示模拟结果,包含进程名、CPU时间、运行所需时间以及优先级 } int process_finish(pcb*q){ int bl=1; while(bl&&q){ bl=bl&&q->needtime==0; q=q->next; } return bl; }//结束进程,即将各队列中各进程的所需时间设置为0 void cpuexe(pcb*q){ pcb*t=q; int tp=0; while(q){ if(q->process!=finish){ q->process=ready; if(q->needtime==0){ q->process=finish;

linux系统进程调度

Linux系统进程调度 姓名: 班级: 学号: 摘要 Linux 自出现以来以惊人的速度在服务器和桌面系统中获得了成功。本文介绍了现代操作系统常见进程调度算法以及linux2.6.32中进程调度的策略并根据具体例子对Linux进程调度过程进行了具体分析。 一、最常用的操作系统调度算法有以下几种; 1.先来先服务调度算法 调度程序按照进程在就绪队列中的提交顺序或变为就绪状态的先后进行调度,是一种最普遍和最简单的方法,所需的系统开销最小。该算法对所有的进程一视同仁,不能反映对实时进程或特殊要求的进程的特殊处理,在实际操作系统中,很少单独使用该算法,而是和其它一些算法配合起来使用。 2.高优先权优先调度算法 1 优先权类型。 1)静态优先权,他是在创建进程时确定的,且在进程的整个运行期间保持不变。 2)动态优先权,他是在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。 2优先权调度算法的类型。 1)非抢占式优先权算法。在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。 2)抢占式优先权调度算法。这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。 3.时间片的轮转调度算法 时间片轮转法一般用于进程调度,每次调度,把CPU分配队首进程,并令其执行一

操作系统-进程管理实验报告

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include #include #include #include int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){ printf("b\n"); } 1/11

else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

进程调度研究现状分析

进程调度研究现状分析 (中南大学信息学院) 【摘要】:调度算法是指根据系统的资源分配策略所规定的资源分配算法.本文详细地讨论了先来先服务调度算法、短作业(进程)优先调度算法、时间片轮转调度算法、优先级调度算法、最短剩余时间优先、高响应比优先调度算法、多级反馈队列调度算法、最晚时间限调度等八种常用作业调度算法的基本思想,并就其性能的进行了比较分析。 【关键字】:调度策略;FCFS;SPJ;RR;优先级 【Abstract】:Scheduling algorithm is defined as the resource allocation strategy for the allocation of resources required by algorithm. This article discussed in detail first-come first-serve scheduling algorithm, the short operations (the process) priority scheduling algorithm, time scheduling algorithm rotary tablet, priority scheduling algorithm, the shortest time remaining priority, high priority response ratio scheduling algorithm, multi-level feedback queue scheduling algorithm the latest scheduling time limit of eight common operations, such as the basic idea of scheduling algorithm and its performance on a comparative analysis. 【Key Words】:Scheduling strategy; FCFS; SPJ; RR; Priority 【正文】: 1、引言 随着现代操作系统的日趋成熟,用户对计算机的需求越来越多,处理机在同一时刻能处理的资源是有限的,从而导致各种任务随时随地争夺使用处理机,因此对程序的并发能力提出了更高的要求。 引进并发技术后,为了更好地说明并发现象(尤其是动态过程),引入了进程的概念。进程是一个具有一定独立功能的可并发执行的程序关于某个数据集合的一次运行活动。一个程序的启动执行,便是一个进程的建立;一个程序执行结束(正常或非正常结束),便是一个进程的撤销。由于同时处于就绪态(争夺使用CPU资源)的进程经常比较多,因此需要CPU调度算法来决定由哪个进程获得CPU使用权进入运行态,即进程调度算法(策略)。

操作系统 进程调度实验代码

一、实验题目 进程调度 二、实验目的 加深对进程、处理机调度的概念及进程调度各种算法(先来先服务、短作业优先、高响 应比优先)的理解。 三、实验要求 要求用C语言设计一个模拟单处理机系统下各种调度算法的思想。要求各种算法均采 用非抢占式的调度方式。 四、实验内容 设计按先来先服务调度的算法、短作业优先调度的算法和高响应比优先调度算法 要求: 1、输出进程的执行顺序 2、输出算法的平均周转时间和平均带权周转时间 五、实验原理 先来先服务调度算法的基本思想是:每次调度是从就绪队列中,选择一个最先进入该队列的进程,把处理机分配给它,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,才放弃处理机。 短作业优先调度算法的基本思想是:每次调度是从就绪队列中,选择一个运行时间最短的作业,把处理机分配给它,使之投入运行。该作业程一直运行到完成或发生某事件而阻塞后,才放弃处理机。 高响应比优先调度算法的基本思想是:…………………………………………………… 六、实验步骤 程序设计: #include #include #include #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; float T1=0,T2=0; int times=0; struct jcb //作业控制块 { char name[10]; //作业名 int reachtime; //作业到达时间 int starttime; //作业开始时间 int needtime; //作业需要运行的时间

操作系统实验二

操作系统实验实验二进程管理 学号 1215108019 姓名克帆 学院信息学院 班级 12电子2

实验目的 1、理解进程的概念,明确进程和程序的区别。 2、理解并发执行的实质。 3、掌握进程的创建、睡眠、撤销等进程控制方法。 实验容与要求 基本要求:用C语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能。 实验报告容 1、进程、进程控制块等的基本原理。 进程是现代操作系统中的一个最基本也是最重要的概念,掌握这个概念对于理解操作系统实质,分析、设计操作系统都有其非常重要的意义。为了强调进程的并发性和动态性,可以给进程作如下定义:进程是可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。 进程又就绪、执行、阻塞三种基本状态,三者的变迁图如下: 由于多个程序并发执行,各程序需要轮流使用CPU,当某程序不在CPU上运行时,必须保留其被中断的程序的现场,包括:断点地址、程序状态字、通用寄存器的容、堆栈容、程序当前状态、程序的大小、运行时间等信息,以便程序再次获得CPU时,能够正确执行。为了保存这些容,需要建立—个专用数据结构,我们称这个数据结构为进程控制块PCB (Process Control Block)。 进程控制块是进程存在的惟一标志,它跟踪程序执行的情况,表明了进程在当前时刻的状态以及与其它进程和资源的关系。当创建一个进程时,实际上就是为其建立一个进程控制块。 在通常的操作系统中,PCB应包含如下一些信息: ①进程标识信息。为了标识系统中的各个进程,每个进程必须有惟一的标识名或标 识数。 ②位置信息。指出进程的程序和数据部分在存或外存中的物理位置。 ③状态信息。指出进程当前所处的状态,作为进程调度、分配CPU的依据。 ④进程的优先级。一般根据进程的轻重缓急其它信息。 这里给出的只是一般操作系统中PCB所应具有的容,不同操作系统的PCB结构是不同的,我们将在2.8节介绍Linux系统的PCB结构。

操作系统实验二(进程管理)

操作系统进程管理实验 实验题目: (1)进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 (3)编制一段程序,使其实现进程的软中断通信。要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止:Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 (4)进程的管道通信编制一段程序,实现进程的管道通信。使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话:Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 实验源程序及报告: (1)、进程的创建 #include int main(int argc, char *argv[]) { int pid1,pid2; /*fork first child process*/ if ( ( pid1=fork() ) < 0 ) { printf( "ProcessCreate Failed!"); exit(-1); }

进程调度程序的设计说明

长沙学院课程设计说明书 题目进程调度程序设计 系(部) 计算机科学与技术系 专业(班级) 2009级数据库二班 学号 指导教师黄彩霞 起止日期2012.6.4-2012.6.15

课程设计任务书 课程名称:操作系统课程设计 设计题目:进程调度程序设计 已知技术参数和设计要求: 1. 设计任务 设计一个虚拟核,该核能支持多任务管理。提供创建进程、终止进程、进程状态转换,进程调度,上下文切换等功能。 2. 问题描述 2.1 系统组成 系统由虚拟核(VKernel)、命令解释程序(Commander)、用户程序(Application)、编译器(Compiler)四部分组成。VKernel首先运行,并常驻存。Kernel启动后,创建Commander进程。根据用户请求创建多个Application进程。Kernel负责维护6个数据结构,包括时间 (Time), 处理器状态(CPUstate),进程表 (PCBTable), 就绪队列(ReadyState),等待队列(BlockedState),运行进程(RunningState)。Time是系统时间片。CPUstate应包括程序计数器PC,累加器A、B,状态寄存器F的值。PCBTable的每一项是一个进程的进程控制块(PCB)。Commander程序、Application程序是用下列CPU虚拟指令书写的程序: ①CPU虚拟指令(以下指令仅供参考, 设计者可以自行设计) MOV n //把整数n赋给累加器A SAV m //把累加器A的值存入地址M ADD n //从累加器A的值减去整数n,结果送到累加器A。 SUB n //从累加器A的值减去整数n,结果送到累加器A。 MUL n //从累加器A的值乘以整数n,结果送到累加器A。 DIV n //从累加器A的值除以整数n,结果送到累加器A。 JEQ m //F为0跳转到m JLG m //F大于0跳转到m JLE m //F大于等于0跳转到m JMP m //无条件跳转到m OUT port //累加器的容输出到端口port。port为0,指显示器;为1,指扬声器。 ②虚拟系统调用(以下系统调用仅供参考, 设计者可自行设计) exec() //执行程序并创建子进程 exit() //进程终止 block() //进程等待 printk() //在屏幕上打印系统信息

进程调度模拟实现

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 操作系统课程设计报告题目:进程调度算法的模拟实现 专业计算机科学与技术 学生姓名刘远强 班级计算机131 学号1310704109 指导教师韩立毛 完成日期2015.7.10 信息工程学院

目录 1 概述 (3) 1.1 设计目的 (3) 1.2 设计要求 (3) 2 设计原理 (3) 2.1 先来先服务算法 (3) 2.2 短进程优先算法 (3) 2.3高优先权优先算法 (3) 2.4高响应比优先算法 (3) 3 概要设计 (4) 3.1 功能结构 (4) 4 详细设计 (4) 4.1 用户界面模块设计 (4) 4.2 算法模块设计 (5) 5 测试与分析 (12) 5.1 测试方案 (12) 5.2 测试结果 (12) 5.3 结果分析 (14) 6 设计小结 (15) 7 参考文献 (15) 附录源程序代码 (15)

题目:进程调度算法的模拟实现 1 概述 1.1 设计目的 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 1.2设计要求 a)至少有四种作业调度算法; b)能根据不同的调度算法算出每个作业的周转时间和带权周转时间,并通过一组作业算出系统的平均周转时间和平均带权周转时间,比较各种算法的优缺点; c)设计一个实用的用户界面,以便选择不同的作业调度算法。 2 设计原理 2.1 先来先服务算法 每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源创建进程,然后放入就绪队列。 2.2 短进程优先算法 短进程优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。 2.3高优先权优先算法 a)当该算法用于作业调度时,系统从后备作业队列中选择若干个优先级最高的,且系统能满足资源要求的作业装入内存运行。 b)当该算法用于进程调度时,将把处理机分配给就绪进程队列中优先级最高的进程。 2.4高响应比优先算法 高响应比优先调度算法既考虑作业的执行时间也考虑作业的等待时间,综合了先来先服务和最短作业优先两种算法的特点。

相关文档
相关文档 最新文档