进程调度的基本过程

简介: 进程调度的基本过程

🔎 进程是什么

通过任务管理器

我们看到运行着的程序就是进程

在操作系统内部, 进程是操作系统进行资源分配的基本单位

🔎 进程管理

当进程过多时,需要对进程进行管理

进程管理包括两部分

(1)描述一个进程: 使用结构体, 把一个进程有哪些信息表示出来

(2)组织这些进程: 使用一定的数据结构, 把这些结构体组织起来

举个栗子🥝

一个学校, 有很多的学生

学生太多了如果不进行管理, 就容易产生一定的问题(打架, 逃课…)

于是就有了学生管理系统(进程管理)

学生管理系统包括两部分

(1)明确每个学生的相关信息(学号, 年龄, 性别…)

使用结构体, 把一个进程有哪些信息表示出来

(2)通过一定的数据结构, 将学生的信息组织起来(便于管理)

使用一定的数据结构, 把这些结构体组织起来

🔎 进程中结构体的属性

进程中的结构体, 简称PCB (process control block)

PCB 包括的属性较多, 以下列举几个较为重要的属性


进程标识符(PID)

进程标识符(PID)是每个进程的一个唯一的身份标识

操作系统里每打开一个程序都会创建一个进程ID,即PID

类似于每个人的身份证

内存指针

当前进程使用的内存是哪一部分

进程要运行, 就需要消耗一定的硬件资源, 比如内存

内存指针就是标识当前进程使用了哪一部分的内存

文件描述符表

文件: 硬盘上存储的数据, 通常是以文件为单位进行组织的

进程每打开一个文件, 就会产生一个文件描述符, 标识了这个被打开的文件

一个进程可能会打开多个文件, 就会产生多个文件描述符

把这些文件描述符整合到一定的数据结构里, 就构成了文件描述符表


结构体中与进程调度相关的属性

我们先来看一个栗子为下面的描述做铺垫

举个栗子🥝

滑稽老哥是个很有魅力的男人

他交往了三个女朋友

A: 有钱的

B: 漂亮的

C: 舔狗

每周一, 三, 五去和女朋友A约会

每周二, 四去和女朋友B约会

每周六去和女朋友C约会

每周日自己休息一天

进程的状态

就绪态

该进程随时可以上 cpu 执行

阻塞态

该进程暂时无法上 cpu 执行

解释

有一天女朋友A跟滑稽说她要出国一个月去处理公司上的业务

那么在这一个月内, 滑稽老哥就不能与A约会

此时的A就是阻塞态

虽然不能和A进行约会, 但是仍然能和女朋友B, C约会

此时的B, C就是就绪态

进程的优先级

进程之间的调度不一定是公平的, 有的进程需要优先调度

解释

滑稽老哥虽然是个有魅力的男人

但是他没有太多钱

所以他需要把一周的周一, 三, 五去和女朋友A(有钱的)约会, 这样他就不用花自己的钱

而一周的周二, 四去和女朋友B(漂亮的)约会,因为滑稽老哥喜欢漂亮的女生

最后把一周的周六拿来和女朋友C(舔狗)约会, 滑稽老哥也需要有人来关心, 照顾

针对上述描述

进程的调度不一定是公平的(A > B > C)

进程的上下文

上下文, 就是描述当前进程执行到哪里的"存档"

进程离开 CPU 时, 需要把当前运行的结果记录下来

等到下次该进程重新回到 CPU 上, 再根据之前的"存档", 继续向下执行

注意
当进程结束运行时, 就不再需要存档

解释

滑稽老哥由于同时交往了三个女朋友

每天都需要消耗大量的精力来面对

有时候在和女朋友A聊天时, 无意间说成了与女朋友B或C在一起发生的事情

这样就会露馅了

于是聪明的滑稽老哥每天都会将自己当天所发生的事情做一个简单的记录

这样当他面对不同的女朋友时, 便会很快的回忆起之前经历的事情

进程的记账信息

统计每个进程在 CPU 上执行的的时间

以此作为调度的参考依据

解释

由于滑稽老哥每次都只留一天给女朋友C

时间久了之后, C难免会有些生气

这时候滑稽老哥发现C很久不联系他了, 就会查找原因(看之前记录的约会信息)

发现是自己每周陪伴C的时间太短了

于是滑稽老哥最近就会多陪伴C

🔎 总结

🔎 结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
3月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
102 0
|
10月前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
9月前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
10月前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度
操作系统是计算机系统的核心,负责管理和控制硬件资源、提供用户接口以及执行程序。其中,进程管理是操作系统的重要组成部分,它涉及到进程的创建、调度、同步和通信等方面。本文将深入探讨进程管理的基本概念、进程调度算法以及进程间的同步和通信机制。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程管理的基本技能。
139 11
|
10月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
10月前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
10月前
|
调度 开发者
深入理解操作系统之进程调度
在计算机科学领域,操作系统是核心的一环,它管理着计算机硬件资源,并提供接口供上层软件运行。本文将通过深入浅出的方式,探讨操作系统中至关重要的一个概念——进程调度。我们将从基础理论出发,逐步展开讲解进程调度的原理和实现,并配以实际代码示例,旨在帮助读者更好地理解和掌握这一主题。文章不仅适合初学者建立基础,也适合有一定基础的开发者深化理解。
|
10月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第40天】在数字世界中,操作系统是连接硬件与软件的桥梁,它管理着计算机资源和提供用户服务。本文将深入探讨操作系统中的进程管理与调度策略,揭示它们如何协调多任务运行,保证系统高效稳定运作。通过代码示例,我们将展示进程创建、执行以及调度算法的实际应用,帮助读者构建对操作系统核心机制的清晰认识。
|
9月前
|
Java Linux API
[JavaEE]———进程、进程的数据结构、进程的调度
操作系统,进程任务,PCB,PID,内存指针,文件描述符表,进程的调度,并发编程,状态,优先级,记账信息,上下文
|
10月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
103 3