【操作系统】———处理器调度算法习题研究

简介: 本文为个人完成操作系统课程相关习题时的总结和思考,大部分并未给出答案的精确数值;即使有,也仅为个人认为的结果,并不保证其正确性。后续我也将跟进这篇文章,并及时勘误。(所以这篇文章是交流思路而不是分享答案)
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

写在最前面

本文为个人完成操作系统课程相关习题时的总结和思考,大部分并未给出答案的精确数值;即使有,也仅为个人认为的结果,并不保证其正确性。后续我也将跟进这篇文章,并及时勘误。(所以这篇文章是交流思路而不是分享答案)

人对事物的认知过程是一个循序渐进、不断纠正已有错误认知的过程,也希望能有更多小伙伴能加入共同讨论,对其中的一些问题提出你的见解。

处理器调度类型及主要任务

image.png

多线程概念相关

  • 题目:某操作系统不支持多线程机制,高级程序设计语言提供了用户级多线程库,请画出用户级线程与操作系统进程之间的状态转换图
  • 思路:操作系统不支持多线程机制,说明在内核态没有多线程;但是高级程序设计语言可以通过在用户态模拟多线程。

如下图所示:

image.png

处理器调度算法相关

周转时间相关及其计算公式

在批处理系统中,周转时间(ti)是指:作业从提交到完成(得到最终结果)所需要的时间。

$$ ti=完成时间-进入队列时间\\ 平均周转时间=Σti/n \\ 带权周转时间Wi=ti/cpu执行时间(单个进程的完成时间-开始时间)\\ 平均带权周转时间=ΣWi/n $$

题目1:

  • 题目描述:

某系统就绪队列中有10个进程,已知该系统处理间隔时钟中断需1ms,完成一次进程切换需9ms。若采用时间片轮转算法调度进程,时间片长度设为200ms,试计算系统在进程调度的过程中,轮转一次所花费的调度开销占该次进程调度总时间的多少?

  • 思路:完成一次进程切换的总时间=间隔时间中断+一次进程切换=10ms

n:进程数 ;t:一次切换总时间;T:时间片长度 ;

$$ 占比=nt/n(t+T)=t/(t+T) $$

该值与具体的进程数无关。

题目2:

  • 题目描述:

现有5个批处理作业A~E均已到达一台按单道方式执行的处理器,其运行时间分别为2 min、4 min、6 min、8 min和10min,各自的优先级分别规定为1、2、3、4和5,其中5是最高级。对于时间片轮转调度算法(时间片长度为2min)、优先数调度算法、最短作业优先调度算法、先来先服务调度算法(按作业到达次序C、D、B、E、A),在忽略进程切换时间的前提下,计算出平均作业周转时间。

时间片轮转调度算法(RR)

调度程序维护一张可运行进程列表,当一个进程用完它的时间片后,就被移到队列末尾。

该算法在交互式系统中尤为常见。

思路

  • 这里的作业是同时到达的,那么第一轮获得时间片的先后顺序应该还是看优先级。第一轮的轮转顺序是:EDCBA,该轮结束后A完成;之后每轮结束后都有一个作业完成。

image.png

优先数调度算法

(本题中优先级5为最高级)
image.png

最短作业优先

刚好是上图的镜像对称

先来先服务

队列:

image.png

依次从队头轮到队尾

题目3:

  • 题目描述:

在一个只支持三道程序同时运行的多道程序系统中,作业调度采用最短作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法。在下表所示的作业序列中,优先数即为进程优先数,优先数越小则优先级越高。

作业名 到达时刻 估计运行时间/min 优先数
A 10:00 40 5
B 10:20 30 3
C 10:30 60 4
D 10:50 20 6
E 11:00 20 4
F 11:10 10 4

试给出每个作业进入内存、运行结束的时刻,计算周转时间。

作业(job)和进程(process)的关系

作业相当于任务(task),进程类似于正在完成一个任务;作业是进程的载体,进程是作业的执行体。

image.png
从这个图来看,作业调度的时间范围比进程调度的大

(注:红线为作业调度,蓝线为进程调度)

思路

我的理解是:

  • “只支持三道程序”:存储器队列最多只能有三个空位,其他暂时不能轮到被调度

(因为并行的本质也是cpu高速来回切换,并不是真的可以同时进行)

image.png

  • “进程调度采用以优先数为基础的抢占式调度算法”:如果当前正在执行a,b到达并且优先级更高,则b可以抢占。
  • “作业调度采用最短作业优先调度算法”:当一个进程结束,决定下一个时刻用哪个作业时,选择最短的那个。

基于此,我认为顺序是这样的:

image.png

题目4:

 在一个只支持4道程序同时运行的多道程序系统中,若在一段时间内先后到达6个作业,其提交时刻和估计运行时间由下表给出。

作业 提交时刻 估计运行时间/min
1 8:00 60
2 8:20 35
3 8:25 20
4 8:30 25
5 8:35 5
6 8:40 10

系统采用SRTF调度算法,作业被调度进入系统后中途不会退出,但作业运行时可被剩余时间更短的作业所抢占。

①分别给出6个作业的开始执行时间、作业完成时间、作业周转时间。

②计算平均作业周转时间。

注意:请画出处理器分配的具体情况。

和上题类似,我认为顺序应该是:

image.png

依次标出各个对应时间点即可。

相关文章
|
3月前
|
算法 调度 Python
深入理解操作系统中的进程调度算法
在操作系统中,进程调度是核心任务之一,它决定了哪个进程将获得CPU的使用权。本文通过浅显易懂的语言和生动的比喻,带领读者了解进程调度算法的重要性及其工作原理,同时提供代码示例帮助理解。
|
5天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
25天前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
65 16
|
25天前
|
机器学习/深度学习 人工智能 算法
Transformer打破三十年数学猜想!Meta研究者用AI给出反例,算法杀手攻克数学难题
《PatternBoost: Constructions in Mathematics with a Little Help from AI》提出了一种结合传统搜索算法和Transformer神经网络的PatternBoost算法,通过局部搜索和全局优化交替进行,成功应用于组合数学问题。该算法在图论中的Ramsey数研究中找到了更小的反例,推翻了一个30年的猜想,展示了AI在数学研究中的巨大潜力,但也面临可解释性和通用性的挑战。论文地址:https://arxiv.org/abs/2411.00566
69 13
|
1月前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
49 2
|
2月前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
3月前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度
操作系统是计算机系统的核心,负责管理和控制硬件资源、提供用户接口以及执行程序。其中,进程管理是操作系统的重要组成部分,它涉及到进程的创建、调度、同步和通信等方面。本文将深入探讨进程管理的基本概念、进程调度算法以及进程间的同步和通信机制。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程管理的基本技能。
70 11
|
3月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
3月前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
3月前
|
调度 开发者
深入理解操作系统之进程调度
在计算机科学领域,操作系统是核心的一环,它管理着计算机硬件资源,并提供接口供上层软件运行。本文将通过深入浅出的方式,探讨操作系统中至关重要的一个概念——进程调度。我们将从基础理论出发,逐步展开讲解进程调度的原理和实现,并配以实际代码示例,旨在帮助读者更好地理解和掌握这一主题。文章不仅适合初学者建立基础,也适合有一定基础的开发者深化理解。