非抢占式高优先级调度算法:按到达时间和优先数计算执行序列

需积分: 50 20 下载量 201 浏览量 更新于2024-09-10 1 收藏 69KB DOC 举报
非抢占式高优先级调度算法是一种在多道程序环境下用于进程管理的策略,其中优先数被赋予了决定进程执行顺序的重要角色。该算法的基本思想是按照进程到达时间的递增顺序处理,首先对所有进程的优先级进行排序,选择优先级最高的进程作为执行的起点。 1. **算法流程**: - 输入进程信息,根据到达时间从小到大进行排序。 - 计算每个进程的开始时间,即其到达时间。 - 接下来,对于后续到达的进程,与当前正在运行或已经结束的进程的结束时间进行比较。 - 如果新进程的到达时间早于当前进程的结束时间,说明可以立即执行,计数器增加,同时更新优先级最大的进程到执行序列的前面。 - 每当有进程结束,检查剩余进程中的优先级,将其与结束进程进行比较,如有更高的优先级,则调整顺序。 - 这个过程持续进行,直到所有进程都被处理完毕。 2. **核心数据结构**: - 使用`hrfs`结构体存储进程信息,包括进程名、到达时间、开始时间、服务时间和结束时间,以及优先级和执行顺序标记。 3. **关键代码段**: - 在`HRfs()`函数中,使用变量`temp_time`和`temp_count`来跟踪当前处理的状态,`max_priority`用于记录当前找到的最高优先级。通过`for`循环遍历进程列表,判断每个进程是否满足开始执行的条件,即到达时间小于等于`temp_time`且进程未运行。 4. **特性与优势**: - 非抢占式意味着一旦某个进程获得处理器资源,除非它完成,否则不会被其他具有更高优先级的进程中断。这有利于那些需要长时间连续处理的任务。 - 通过优先级排序,提高了响应时间和系统效率,确保了高优先级任务能够较快得到执行。 5. **应用场景**: - 适用于实时系统或对响应时间敏感的应用场景,如操作系统内核调度、网络通信等领域,需要保证优先级高的任务优先执行。 总结来说,非抢占式高优先级调度算法利用进程的优先级来决定执行顺序,确保了系统能快速响应高优先级任务。通过按到达时间和优先级进行迭代处理,该算法能够高效地组织和管理并发进程,提升整体性能。
2013-04-11 上传
1. 实验目的 调度的实质是操作系统按照某种预定的策略来分配资源。进程调度的目的是分配CPU资源。由于进程调度程序执行的频率很高,因此调度算法的好坏直接影响到操作系统的性能。本实验的目的是编程模拟实现几种常用的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。 2. 实验原理 [1]. 进程调度算法描述 进程调度算法包括先来先服务调度算法、最短作业时间优先(抢占式和非抢占式)、最高响应比调度算法4种。(每个人必须做FCFS,然后在后面的三种中任选一种,即每个人必须做2种调度算法的模拟。) [2]. 衡量算法性能的参数 计算进程的平均周转时间和平均带权周转时间。 3. 实验内容 (1)编程实现本实验的程序,要求: [1]. 建立进程的进程控制块,进程控制块至少包括: a) 进程名称; b) 进程需要执行时间; c) 进入就绪队列时间; d) 进程执行开始时间 e) 进程执行结束时间 [2]. 编程实现调度算法。 [3]. 进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。 [4]. 时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。 [5]. 一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格式显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。 [6]. 实现数据在磁盘文件上的存取功能。 (2)对下列就绪进程序列分别使用上面的几种算法进行调度,计算每种算法下的平均周转时间和平均带权周转时间。 进程号 到达时间 要求执行时间 0 0 1 1 1 35 2 2 10 3 3 5 4 6 9 5 7 21 6 9 35 7 11 23 8 12 42 9 13 1 10 14 7 11 20 5 12 23 3 13 24 22 14 25 31