Javaee 进程调度的基本过程

news2024/9/25 3:26:24

进程

一个程序,运行起来/跑起来,在操作系统中,就会出现一个对应的进程,
进程其实就是一个跑起来的应用程序 让程序跑起来就是可以双击快捷方式或者在开始菜单中 单击该选项 .
在我们的电脑上 可以打开任务管理器 可以看到很多进程:
在这里插入图片描述
我们可以把运行起来的可执行文件 称为进程 .
从上面的进程可以看出 有很多 除了自己点击运行的进程 外,还有很多系统自带的进程 这些进程对你的系统的稳定运行有着重要意义.

在我们的电脑中 有很多后缀为.exe可执行文件 ,如果 我们不去双击他 他就乖乖地躺在硬盘里 ,不会对我们的系统有任何影响.

在这里插入图片描述
根据上面的图片我们可以看出 ,要想让一个程序运行,就必须得给这个进程分配系统资源 包括 cpu,内存,硬盘,网络宽带,显卡等多个资源.
[重点] 进程是操作系统进行资源分配的基本单位

操作系统如何管理进程

在操作系统上,会包含有很多的进程,一旦 进程多了 ,就得考虑如何去管理?
就比如管钱 ,如果你现在没多少钱 ,也就不需要去管理 一旦钱多了 就得想一下 该如何去管理钱!

对于管理这个事情 ,操作系统一般是通过 先描述 ,再组织的方式进行管理. 先通过一些结构体 /类 把一个进程的核心信息 抽象提取出来并进行表示,再通过一定的数据结构,把多个这样的结构体/类的对象串起来,方便进行进一步的增删查改.

上面提的结构体主流的操作系统都是用C语言实现的,Windows也包含了一部分的C++,但是还是以C为主,Linux基本都是纯C实现 ,没有怎么涉及到C++ . windows和ios 都不是开源的 具体里面怎么实现我们也不太清楚 ,不像Linux那样是开源的. 在上面提到的数据结构一般都是用链表来连接多个结构体/类.

PCB

在操作系统中,通常会使用称为PCB这样的结构体来描述进程的.
PCB也就是进程控制块 但是在不同的操作系统上,不同的操作系统代码实际上写的名字是不一样的, 举个例子: 在Linux上的PCB 的实际名字叫
task_struct 操作系统 通常会使用链表这样的数据结构 把多个PCB串起来 .
`1. 比如我们在任务管理器中查看每个进程 其实就相当于在遍历链表中的每个结点 并且获取对应的信息.
2. 假如我们双击打开某个程序 就是创建一个新的进程 ,在底层就相当于 新的进程创建出一个对应的新的PCB,并且新增在链表中
3. 假如我们要退出一个应用程序 相当于销毁某个进程 ,这时底层就要把链表上对应的PCB那个结点删除掉.

PCB这个结构体包含了 很多信息 我们 来讲几个比较重要的!

pid(进程的id/标识符)

相当于进程的身份证号码 同一个机器 ,同一时刻,进程的id 一定是不同的.

内存指针

进程运行时,需要消耗一定的硬件资源 ,内存就是一个关键资源
一个程序在运行的时候,就会被操作系统从硬盘(***.exe)上加载到内存中,变成进程,内存指针就是会指明这个进程要执行的指令在内存的哪里

内存指针其实是一组指针 而不是一个 相当于指南 给进程提供要运行的指令在哪里 和进程依赖的数据在哪里.

文件描述符表

一个进程运行的时候,会操作一些文件比如说系统会自动打开标准输入 标准输出 标准错误这三个文件 会通过一个"顺序表"这样的数据结构,记录下当前这个进程,都打开了哪些文件.

进程调度是怎么进行的

这里是一个重点 所谓进程调度就是操作系统如何把CPU资源分配给各个进程.
在实际上,进程的数量是远远多于CPU数量的 现在该怎么解决这个问题呢? 这就需要进程调度来负责这个了.
分时复用
一个核心在同一时刻,只能运行一个进程 假如我们计算机有16个核心,同一时刻,则可以同时运行16个进程(完全是同时执行)
但是,一个核心在不同时刻不就可以执行不同的进程吗? 这一刻执行进程A,下一时刻,执行进程B 再下一刻 执行进程C 一次类推 .就像火车调度一样
同一个铁轨,同时也是只能跑一列火车 但同一个铁轨 这一时刻可以跑一个火车 下一会再跑另一个火车.
这就是所谓的并行执行.

下面还有一个并发执行 :
CPU会把总的执行时间 切换成若干个小的片段,每个片段执行一个进程,每个片段称为"时间片" 因为"时间片’比较短 CPU切换的速度极快 我们感知不到 站在人类的视角 就相当于若干个进程同时执行(在本质上不是同时执行).
在操作系统中 操作系统就会按照 并行 + 并发 互相搭配 运行所有的进程.

并行执行在微观上也是同时执行;
并发执行在宏观时间下是同时执行,微观时间上,是串行执行 只不过我们感知不到 .因此 我们往往会把并行和并发统称为"并发".

在实现进程的调度还有一些属性:

状态

这个状态就是为了描述当前该进程接下来应该怎么调度
如果是就绪状态: 随时可以去CPU上执行.
如果是阻塞状态:暂时不能去CPU上执行.

优先级

优先级说白了 就是先给谁分配时间 后给谁 分配时间 以及给谁分多分少的问题 .就比如你周末一天 你是先学习还是先打游戏 还有 给多少时间学习 多少时间打游戏 一个道理

记账信息

操作系统会统计每个进程都分别执行了多久,分别执行了 哪些指令
操作系统也会避免某一个进程一直吃不到CPU资源 就会进行类似的统计,给吃的少的进程,适当多分配一些资源

进程在调度出CPU的时候 会把CPU中所有的寄存器中的数据给保存到内存上 就是这次进程被调出CPU时 下次该进程进入CPU中运行的时候 就可以恢复到之前的状态,继续往下执行.

类似 我们玩游戏中的存档

进程的组成

进程实体一般由三部分组成: 程序段 数据段和进程控制块(PCB).其中,程序段包含了程序的代码,数据段包含了程序运行过程需要的数据,而进程控制块则是操作系统用来跟踪管理进程的信息结构.

进程的状态

进程的状态可以分为 三种状态: 运行状态、就绪状态和阻塞状态.
运行状态是指进程已经获取CPU并且正在执行;就绪状态是指进程已经准备好运行,但是还没获得CPU;阻塞状态是指进程正在等待某个事件的发生.

到这里 本篇文章的所有内容就结束了 谢谢大家的浏览 !!!

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

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

相关文章

[C语言]——操作符详解

目录 一.操作符的分类 二.二进制和进制转换 1.二进制转十进制 2.二进制转八进制和十六进制 2.1二进制转八进制 2.2二进制转十六进制 三.原码、反码、补码 四.移位操作符 1.左移操作符 2.右移操作符 五.位操作符:&、|、^、~ 练习1:编写代码实…

两个现货白银理财产品投资技术分析方法

现货白银是投资市场中比较受欢迎的理财产品。要投资现货白银,我们需要具备一定的金融投资经验。下面我们就来讨论一下,在现货白银这个理财产品的投资过程中,常常用到的一些技术分析方法。 宏观的趋势分析法。在现货白银理财产品投资中&#x…

nodejs pkg打包跨平台执行文件,带.node插件(sharp、sqlite3)

在nodejs引入的第三方库中,大部分插件都是nodejs原生开发,使用pkg可以快速打包,生成windows、linux(ubuntu、centOS等)、麒麟系统下面执行文件。遇到了第三方插件gdal、sharp、sqlite3,在webstorm中打包生成执行文件,跨平台部署的时候会出现找不到###.node文件,需要获取部…

Harbor介绍

1.什么是Harbor Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开源。 Harbor提供了比Docker官方公共镜像仓库更为丰富和安全的功能,尤其适合企业环境使用。以下是Harbor的一些关键特性: 权限管理(RBAC&#x…

什么是内网穿透?如何实现内网穿透?

关注微信公众号:怒码少年,回复关键词【电子书】可以免费获取计算机相关电子书 大家好,我是小码。 如果你能上线或者部署你的项目以便于面试官查看,无疑是大大增加了真实性。使用上一篇讲到的如何使用腾讯云宝塔Linux面板部署项目…

QT QGraphicsView 在鼠标点击处进行放大缩小

一、前段时间在用QGraphicsView对图元进行放大缩小时,发现图形总是越来越跑偏,无法像地图中那样,点击哪里就能放大哪个地方。 如下所示:此时放大缩小的焦点并不在鼠标位置 方法,使用QGraphicsView类的设置属性函数.在构…

蜂窝物联智慧果园案例:福建万春寨农业科技有限公司醒狮智慧芦柑园

项目背景 永春醒狮农场前身永春醒狮场是永春最早种植芦柑基地之一,十年前因为黄龙病全部死亡。今年由万春寨农业牵头,重新开荒种植芦柑。此地,虽然海拔高、树木葱郁,然后可用灌溉水源却非常缺乏,如何实现节水灌溉问题成…

GRE简介

定义 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输…

vm-workstation win10 网络的设置

设置宿主机网络(win10) 1,在 win10宿主机上为虚拟机设置192.168.6.0/24 的网段 VM-workstation 网络设置 2,vm-workstation 软件设置

工控机丨丨工业电脑丨工控计算机丨工业一体机丨什么是工业一体机

工业一体机俗称工控机,是一种专门为工业应用而设计的计算机设备,主要应用于工厂、车间、仓库等工业场所。此外工控机还叫做工控计算机,通常采用工业级主板、工业级CPU、工业级硬盘、工业级内存和工业级电源等硬件组件,以确保其在高…

NetSuite 固定资产Write-Off的撤回操作

之前我们有说到如果是Sale了固定资产后发现有误,需要撤回操作该如何处理。这篇文章来补充一下,如果是误Write-Off了一个固资该如何处理,其逻辑与Sale的撤回基本一致,但是少了删除Sale Invoice的步骤。 我们用一个实际的例子来进行…

ISIS默认层级实验简述

ISIS被划分为三个层级:Level 1、Level 2和Level 1-2。 默认情况下,ISIS路由器属于level 1-2,是指同时支持Level 1和Level 2的路由器。路由器既可以在同一个自治系统内部进行路由选择,也可以将路由信息传递到其他自治系统。 实验拓扑图&#…

鸿蒙一次开发,多端部署(一)简介

背景 随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间随意调用、互助共享,让用户享受无缝的全场景体验。而作为应用开发者,广泛的设备类型也能为应用带来广大的…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说,当然这块内容也比较简单,就是当我们有一段完整素材时,如下: 我在网上随便找的素材,当然我们平时在使用素材时要注意尊重他人的著作权,不管是字体图片还是别的,不然后面不小心侵…

20岁小姑娘 半年用消费返现模式 做了2000多万销售额!!

一个年仅十几岁的小姑娘,仅凭一套价值1900元的化妆品,在短短27天内便创下了高达2000多万元的销售额,这听起来似乎有些不可思议。然而,她确实做到了,那么,她究竟是如何做到的呢? 答案其实并不复杂…

使用aop做权限控制

1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:/…

快速画流程图

使用在线工具&#xff1a;PlantUML PlantUML 官网:https://plantuml.com/ 中文官网:https://plantuml.com/zh/ 使用步骤如下&#xff1a; 1、拷贝一个完成函数&#xff1a; int func_init(const char *tag) {if (tag ! NULL) {printf("set TAG :%s", tag);}print…

固定资产管理系统有哪些应用价值

固定资产管理已成为当今企业经营中不可忽视的重要环节。伴随着时代的发展&#xff0c;固定资产管理系统的出现&#xff0c;为企业提供了一种高效、精确的管理方式。那固定资产管理系统实际有什么实际意义呢&#xff1f;本文将从以下几个方面进行讨论。  固定资产管理系统可以…

Python入门操作学习记录

图行画程序设计--海龟绘图 1、爱心 import turtle turtle.showturtle() turtle.width(20) turtle.write("c的弃子") turtle.color("red") turtle.left(50) turtle.forward(250) turtle.goto(60,300) turtle.goto(0,225) turtle.left(83) turtle.forward(…

户外LED显示屏的10大技术参数详解

随着户外广告市场需求的不断提升&#xff0c;LED显示屏作为一种重要的广告传播媒介&#xff0c;其应用范围和技术水平也在不断提高。然而&#xff0c;在众多LED显示屏品牌中如何选购到满意的产品成为行业用户关注的焦点。了解LED显示屏的各项技术参数是选择合适产品的首要步骤。…