进程调度的基本过程

news2024/11/16 21:28:34

进程调度的基本过程

  • 🔎 进程是什么
  • 🔎 进程管理
  • 🔎 进程中结构体的属性
    • 进程标识符(PID)
    • 内存指针
    • 文件描述符表
    • 结构体中与进程调度相关的属性
      • 进程的状态
      • 进程的优先级
      • 进程的上下文
      • 进程的记账信息
  • 🔎 总结
  • 🔎 结尾

🔎 进程是什么

在这里插入图片描述

通过任务管理器
我们看到运行着的程序就是进程

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

🔎 进程管理

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

进程管理包括两部分
(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

🔎 总结

在这里插入图片描述

🔎 结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(第十四届蓝桥真题) 整数删除(线段树+二分)

样例输入: 5 3 1 4 2 8 7 样例输出: 17 分析:这道题我想的比较复杂,不过复杂度还是够用的,我是用线段树二分来做的。 我们用线段树维护所有位置的最小值,那么我们每次删除一个数之前先求一遍最小值&a…

停车场管理系统文件录入(C++版)

❤️作者主页:微凉秋意 ✅作者简介:后端领域优质创作者🏆,CSDN内容合伙人🏆,阿里云专家博主🏆 文章目录一、案例需求描述1.1、汽车信息模块1.2、普通用户模块1.3、管理员用户模块二、案例分析三…

mysql:使用终端操作数据库

登录进入终端: mysql -u root -p 展示数据库 SHOW DATABASES; 创建数据库: CREATE DATABASE IF NOT EXISTS RUNOOB_TEST DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 1. 如果数据库不存在则创建,存在则不创建。 2. 创建RUNOOB_TEST数据库…

ElasticSearch安装、启动、操作及概念简介

ElasticSearch快速入门 文件链接:https://pan.baidu.com/s/15kJtcHY-RAY3wzpJZIn4-w?pwd0k5a 提取码:0k5a 有些软件对于安装路径有一定的要求,例如:路径中不能有空格,不能有中文,不能有特殊符号&#xf…

JUC并发编程之ReentrantLock

1. 非公平锁实现原理 加锁解锁流程 构造器默认实现的是非公平锁 public ReentrantLock() {sync new NonfairSync();}NonfairSync 继承 Sync, Sync 继承 AbstractQueuedSynchronizer 没有竞争时 第一个竞争出现时 Thread-1 执行了 CAS 尝试将state 由 0 改为 1&…

Stable Diffusion免费(三个月)通过阿里云轻松部署服务

温馨提示:划重点,活动入口在这里喔,不要迷路了。 其实我就在AIGC_有没有一种可能,其实你早就在AIGC了?阿里云邀请你,体验一把AIGC级的毕加索、达芬奇、梵高等大师作画的快感。阿里云将提供免费云产品资源&…

如何使用evosuite为指定被测方法生成测试用例

目录 省流版本 准备工作 环境 evosuite获取 检验环境 参数解释 怎样表示被测方法 怎样指向被测类 其他参数 参考 省流版本 java -jar .\target\depd\evosuite-1.1.0.jar -generateTests -Dtarget_method"isLenient()Z" -class com.google.gson.stream.…

Midjourney教程(二)——Prompt基本结构

Midjourney教程——Prompt基本结构 Basic Prompt 基础版本的prompt仅仅包含图片的描述,能够满足普通的需求,如下图所示 Advanced Prompt 高级版本的prompt主要包含三个部分,如下图所示 Image Prompts(可选) prompt第一部分是Image&#x…

TCP/IP协议详解

一.引言TCP/IP 是 TCP 和 IP 两种协议群的统称,具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议二.计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块…

【C语言】迷宫问题

【C语言】迷宫问题一. 题目描述二. 思想2.1 算法---回溯算法2.2 思路分析图解三. 代码实现3.1 二维数组的实现3.2 上下左右四个方向的判断3.4 用栈记录坐标的实现3.5 完整代码四. 总结一. 题目描述 牛客网链接:https://www.nowcoder.com/questionTerminal/cf2490605…

STM32看门狗

目录 独立看门狗 IWDG 什么是看门狗? 独立看门狗本质 独立看门狗框图 独立看门狗时钟 分频系数算法: ​编辑 重装载寄存器 键寄存器 溢出时间计算公式 独立看门狗实验 需求: 硬件接线: 溢出时间计算&#xff1…

macOS设置环境变量和别名

因为我的mac所用shell是bash,所以本文中涉及的环境变量和别名配置均在~/.zshrc文件中,且在每次配置完成后,需要执行source ~/.zshrc命令使配置文件生效 环境变量 通过配置环境变量,我们可以将某个路径暴露到全局,这样可以在全局…

周总结(第一周)

3月份3个星期 *** 三个星代表不会 ** 再做 * 加强 题目1-完全二叉树(记忆) 考察数据结构 完全二叉树的深度deplog2(N1)1 完全二叉树节点的深度depiceil(log2(i1))向上舍入 完全二叉树的层次遍历,遍历每层的二叉树计算基础每层的总和,然后找出最大的和…

Talk预告 | 新加坡国立大学郑奘巍 AAAI‘23 杰出论文:大批量学习算法加速推荐系统训练

本期为TechBeat人工智能社区第486期线上Talk! 北京时间3月30日(周四)20:00,新加坡国立大学二年级博士生——郑奘巍的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “大批量学习算法加速推荐系统训练”,届时将分…

Kubernetes 多集群网络方案系列 2 -- Submariner 监控

Submariner 是一个用于连接 Kubernetes 集群的跨集群网络解决方案,可以实现集群之间的服务发现、网络通信等功能。 Prometheus 是一个开源的监控和告警系统,专门用于收集、存储和查询各种应用、系统和基础设施的实时指标数据。Prometheus 具备多维数据模…

Java开发 - MySQL主从复制初体验

前言 前面已经学到了很多知识,大部分也都是偏向于应用方面,在应用实战这条路上,博主一直觉得只有实战才是学习中最快的方式。今天带来主从复制给大家,在刚刚开始动手写的时候,才想到似乎忽略了一些重要的东西&#xf…

面试篇-揭开Spring Bean加载的神秘面纱

SpringBean加载完整过程 启动spring容器(创建beanfactory)->加载配置(注解、xml)->实例化bean(执行构造方法)->注入依赖->初始化bean(设置属性值)->使用->销毁 解析和读取 XML 配置文件或注解配置类&#xff0…

Linux嵌入式学习之Ubuntu入门(五)汇编语法学习

系列文章目录 一、Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门(三)用户、用户组…

synchronized原理、偏向锁、轻量级锁、重量级锁、锁升级

文章目录Synchronized概念自增自减字节码指令临界区竞态条件基本使用原理查看synchronized的字节码指令序列Monitor对象的内存布局Mark Word是如何记录锁状态的偏向锁什么是偏向锁偏向锁延迟偏向偏向锁状态跟踪偏向锁撤销之调用对象HashCode偏向锁撤销之调用wait/notify轻量级锁…

Qt Quick - Drawer

Qt Quick - Drawer使用总结一、概述二、使用1、基础使用2、特点空间运行3、与内容转换相互挤占一、概述 Drawer提供了一个基于滑动的侧边面板,类似于经常在触控界面中使用的侧边面板,为导航提供了一个位置。 二、使用 1、基础使用 抽屉可以放置在内…