操作系统实验:进程调度算法模拟

5星 · 超过95%的资源 需积分: 20 53 下载量 12 浏览量 更新于2024-07-19 2 收藏 311KB DOC 举报
"进程调度算法设计与实现" 操作系统实验报告主要关注进程管理,特别是进程调度这一核心功能。在多道程序设计的系统中,进程调度是决定处理器分配的关键,它根据不同的调度算法来选择优先执行的进程。实验的目的是通过模拟单处理器环境下的调度过程,帮助学生深入理解各种调度策略的运作机制及其优缺点。 实验要求实现四种常见的调度算法: 1. 先来先服务(First-Come, First-Served, FCFS):按照进程到达就绪队列的顺序分配处理器,最简单但可能导致短进程等待时间过长。 2. 时间片轮转(Round-Robin, RR):将处理器时间划分为固定的时间片,每个进程轮流获得一个时间片的执行机会,适用于交互式系统,可以保证响应时间。 3. 优先数调度(Priority Scheduling):根据进程的优先级进行调度,优先级高的进程优先执行。可能需要防止优先级反转问题,即低优先级进程持有高优先级进程需要的资源,导致高优先级进程无法执行。 4. 多级反馈队列(Multi-Level Feedback Queue, MLFQ):结合了FCFS和RR,设置多个优先级队列,新进程进入最高优先级队列,每次调度后如果未完成则降级到下一个队列,时间片通常会缩短,兼顾了周转时间和响应时间。 实验还要求实现基本的进程管理功能,如创建、阻塞、唤醒和删除进程,以及显示不同状态进程的队列。这些操作涉及进程的状态转换,如就绪、运行和阻塞状态之间的切换,通过进程控制块(PCB)进行管理。PCB包含进程的各种信息,如标识信息、状态、资源分配情况、程序计数器等,它是操作系统进行进程控制的基础。 通过这个实验,学生能够学习到操作系统如何管理进程,如何根据不同的调度算法进行决策,并实际操作这些算法,从而提高对操作系统内核工作原理的理解。这不仅有助于理论知识的巩固,也为将来进行系统编程和优化打下坚实基础。
2018-05-12 上传
【实验目的】 1. 理解进程的概念,熟悉进程的组成; 2. 用高级语言编写和调试一个进程调度程序,以加深对进程调度算法的理解。 【实验准备】 1. 几种进程调度算法  短进程优先调度算法  高优先权优先调度算法  先来先服务调度算法  基于时间片的轮转调度算法 2. 进程的组成  进程控制块(PCB)  程序段  数据段 3. 进程的基本状态  就绪W(Wait)  执行R(Run)  阻塞B(Block) 【实验内容】 1. 例题 设计一个有 N个进程共行的进程调度程序。 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。 4. 实验题目  编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。  编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。