【计算机系统】详解进程及进程调度算法(时间片管理、多级队列)

简介: 【计算机系统】详解进程及进程调度算法(时间片管理、多级队列)

详解进程及其调度算法

1 基本概念

进程与程序的关系是:程序是存储在文件中的、带有结构和顺序信息(用于控制指令执行次序)的指令列表,进程是程序的运行实例。通俗来讲,程序描述了如何处理一个事务,进程按程序的描述实际执行之。相同的程序可以多次执行,每次执行操作系统都将创建一个独立的进程,并开始读取指令列表。


image.png

进程更正式的定义是:计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的最小单位,是操作系统结构的基础。进程是线程的容器,同时包含了内存、句柄等计算机资源,如图1所示。


数据集合包括指令在内存中的版本、程序中使用的变量以及其他相关元数据。其中变量和元数据是可变的,称为进程状态。进程主要的五种状态如图2所示。


image.png

重点辨析就绪和阻塞状态。


就绪:进程分配的时间片已用完,或在中断机制下,有更高优先级的进程打入,此时进程进入就绪队列等待下一次被选中


阻塞:进程所需要的资源或某些事件不满足要求,如暂时不能访问某一资源、操作系统尚未完成服务、系统正在初始化I/O设备、等待用户的输入信息等,当这些系统资源被满足后,进程从阻塞队列出队而进入就绪队列等待CPU资源。


简言之,就绪状态等待CPU资源,而阻塞状态等待CPU以及所需的其他系统资源。


进程状态区分了同一程序的多道进程,操作系统级别用唯一进程标识符(Process IDentifier, PID)识别不同的进程。

2 进程调度

进程的运行,是其指令在CPU中执行的行为。CPU是系统最主要的资源,而操作系统最基本的作用是管理系统资源,因此操作系统负责管理系统进程,以及在任意给定的时间选择哪一个进程运行(仅考虑单核系统)。现代操作系统中,执行上述职能的部件是调度器。调度器选中某道进程后,由其子部件分派器将该进程由就绪状态引入到运行状态。因此调度是通过一定算法选择某道进程,并将其从就绪状态切换到运行状态的过程。


2.1 时间片管理

在抢占式调度器中,允许某个特定进程运行一段时间后,切换到就绪队列等待调度器下一次选中,而将另一个进程从就绪队列中引出,并设置为运行状态。这里的时间称为时间片。


image.png

由于调度器执行调度决策本身需要占用系统处理时间,这部分进程外的额外时间称为调度开销。调度开销中的最大成分是上下文切换,即CPU从执行一道进程或线程切换到执行另一道进程或线程的动作,如图3所示。上下文切换时要进行保护现场和恢复现场,即保存某道进程被抢占或阻塞前最后一次运行时的执行环境,和在下一次运行时复现,这里的执行环境包括堆栈、程序计数器以及其他操作系统结构等。


image.png

若时间片太短,由于调度开销的存在,操作系统将频繁执行调度活动,使系统处理资源被浪费;若时间片太长,则就绪队列的其他进程不得不在轮转期间等待更长的时间,表现出应用程序的未响应或缺乏响应状态。


时间片大小没有随看技术进步(主要指CPU处理速度)而大幅变化,原因在于:

(1) 人类对响应性的感知能力没有改变,没有必要为此缩短时间片;

(2) 系统的复杂性和在其上运行的应用程序的数量也在以高速率提升,以实现其丰富的功能,即相较原有系统多出的运算资源又被分配给了更多的进程,而非延长每一道进程的时间。


现代系统中时间片大小一般在大概10~200ms的范围内(Windows操作系统为10ms), 在非常快速的平台上时间片更小(低至约1ms)。


时间片大小的范围设定能够用作实现进程优先级的一种手段:高优先级的进程应该获得较大份额的可用处理资源。一种特例是,如果进程是IO密集型的,它们执行IO时会被堵塞而无视其优先级(分配的时间片再长也会进入阻塞队列)。

2.2 调度算法


image.png

image.png

在基础算法上,进行了调度算法的改进。


(1) 多级队列(MLQ, Multilevel Queue):按进程性质设置若干就绪队列,每个队列可执行不同调度算法。例如计算密集型进程队列中执行FCFS调度;系统进程队列执行RR调度等。根据系统的工作特点,为不同的进程队列分配不同的CPU处理时间。值得注意的是,每级队列执行的调度算法,不会影响到其他进程队列。


(2) 多级反馈队列(MLFQ, Multilevel Feed-back Queue):以MLQ为基础,但与之不同在于:进程能够在不同队列中移动以允许调度过程达到一种平衡——短期调度获得任务响应性,长期调度确保公平性和系统效率;队列按优先级组织。


进程移动的基本规则是:


①若进程用尽时间片仍未完成任务,则降到下一级进程队列;

②若进程在时间片内让出控制(如发生阻塞),则保留在该级队列;

③若进程因为执行IO而发生阻塞,则会提升到上一级进程队列。


image.png

以科学计算模拟为例,由于其计算时间较长以至于在若干个时间片内无法处理完毕,进程将逐次被降级,并留在较低级的进程队列中接受RR调度。当科学计算结束后,需要通过IO将结果反馈给用户,则该进程开始逐步回升到高优先级队列中。只有当最高优先级队列中进程临时用尽时,才有机会执行低级队列中的进程。由于进程的优先级根据其行为动态变化,因此该算法灵活性得到保证。


image.png

目录
相关文章
|
2月前
|
算法 调度 Python
深入理解操作系统中的进程调度算法
在操作系统中,进程调度是核心任务之一,它决定了哪个进程将获得CPU的使用权。本文通过浅显易懂的语言和生动的比喻,带领读者了解进程调度算法的重要性及其工作原理,同时提供代码示例帮助理解。
|
1月前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
19天前
|
Java Linux API
[JavaEE]———进程、进程的数据结构、进程的调度
操作系统,进程任务,PCB,PID,内存指针,文件描述符表,进程的调度,并发编程,状态,优先级,记账信息,上下文
|
2月前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度
操作系统是计算机系统的核心,负责管理和控制硬件资源、提供用户接口以及执行程序。其中,进程管理是操作系统的重要组成部分,它涉及到进程的创建、调度、同步和通信等方面。本文将深入探讨进程管理的基本概念、进程调度算法以及进程间的同步和通信机制。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程管理的基本技能。
61 11
|
2月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
2月前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
2月前
|
调度 开发者
深入理解操作系统之进程调度
在计算机科学领域,操作系统是核心的一环,它管理着计算机硬件资源,并提供接口供上层软件运行。本文将通过深入浅出的方式,探讨操作系统中至关重要的一个概念——进程调度。我们将从基础理论出发,逐步展开讲解进程调度的原理和实现,并配以实际代码示例,旨在帮助读者更好地理解和掌握这一主题。文章不仅适合初学者建立基础,也适合有一定基础的开发者深化理解。
|
2月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第40天】在数字世界中,操作系统是连接硬件与软件的桥梁,它管理着计算机资源和提供用户服务。本文将深入探讨操作系统中的进程管理与调度策略,揭示它们如何协调多任务运行,保证系统高效稳定运作。通过代码示例,我们将展示进程创建、执行以及调度算法的实际应用,帮助读者构建对操作系统核心机制的清晰认识。
|
2月前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
2月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
47 3