Linux之进程(二)

目录

一、进程优先级

1、基本概念

2、Linux中的优先级

1、PRI和NI

2、通过top命令更改进程NI值

3、四个特性

二、进程切换


一、进程优先级

1、基本概念

什么是优先级?优先级:进程获取cpu资源分配的先后顺序,就是指进程的优先权。优先权高的进程有优先执行权利。

为什么有优先级?优先级存在的主要原因就是CPU资源是有限的,一个CPU一次只能运行一个进程。如果进程太多,需要通过优先级来竞争资源。所以需要存在进程的优先级,来确定进程获取CPU资源的先后顺序。

2、Linux中的优先级

使用ps -l 命令可以看到下面的内容。其中 PID和PPID我们已经知道是什么了,下面我们来了解一下其它是什么。

UID : 代表执行者的身份。
PRI :代表这个进程可被执行的优先级,其值越小越早被执行。
NI :代表这个进程的nice值 。

1、PRI和NI

~ PRI即进程的优先级,通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高。
~ NI就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。
~ PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice,这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。
~ 调整进程优先级,在Linux下,就是调整进程nice值。
~ nice其取值范围是-20至19,一共40个级别。

从上面的图中我们可以知道:PRI默认是80,NI(nice值)默认是0。

2、通过top命令更改进程NI值

top命令就相当于Windows操作系统中的任务管理器,它能够动态实时的显示系统当中进程的资源占用情况。

然后,按 r 键,系统就会提示你输入需要修改NI值的进程的PID。

输入进程PID并回车后,系统会提示你输入调整后的nice值。 

修改完后,我们查看一下新的优先级:我们再用ps命令查看进程的优先级信息,即可发现进程的NI变成了14,PRI变成了94

若是想将NI值调为负值,也就是将进程的优先级调高,需要使用sudo命令提升权限。 

3、四个特性

~ 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
~ 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
~ 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
~ 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

二、进程切换

上面讲到并发:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

如何切换?

首先,先了解一下时间片:大部分电脑只有一个CPU,所以一次只能运行一个进程。进程在运行的时候占有CPU,但是却不是一直占有到进程结束,因为进程都有自己的时间片!有了时间片的存在,进程会出现没有被执行完就被停止执行的情况。

简单来说:时间片就是一个进程在一次占用CPU资源时所能占用的时间,时间一到,不管程序是否执行完,都将切换到下一个进程来使用CPU。如果没有执行完,只有等下次再使用了CPU资源了。

但是,等下一次再次使用CPU资源时,我们怎么才能继续从上次运行到的地方接着运行呢?

如果一个进程正在运行,CPU内的寄存器里面,保存的是该进程的临时数据(例如,运行完一个函数,该函数有一个返回值,而这个返回值就存储在寄存器中)。临时数据也叫做上下文数据。

当该进程因时间片到了,要被切换时,进程会带走自己的上下文数据(数据保存至PCB里)。下次回来的时候,能够恢复上去,能够按照之前的逻辑继续向后运行,就像没有中断过一样。

注:寄存器被所有进程共享,上下文有多个,分别对应不同的进程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM 虚拟机(一)导学与字节码文件组成

一、实战 JVM - 基础篇 初识 JVM 什么是 JVM? Java Virtual Machine(JVM),中文翻译为 Java 虚拟机 JVM 的功能 解释和运行:对字节码文件中的指令进行实施的解释成机器码,让计算机执行。自动为对象和方法…

Python版本与opencv版本的对应关系

python版本要和opencv版本相对应,否则安装的时候会报错。 可以到Links for opencv-python上面查看python版本和opencv版本的对应关系,如图,红框内是python版本,绿框内是opencv版本。 查看自己的python版本后,使用下面…

时序数据库TDengine安装及c#连接读写数据

物联网数据采集,需写入大量数据,这时就用到时序数据库来存储和快速读取 我个人使用感觉国产的开源项目TDengine,比InfluxDB操作方便很多,容易上手,支持使用SqlSugar进行数据操作,跟操作mysql数据库一样的体…

分部积分法

1.形式:u对v求积分uv-v对u求积分,一前一后,一般把三角函数,反三角函数,In,e的x次方提到d里面 2. 3. 4. 5. 6. 7. 当结果中出现要求的不要慌,不是1直接求,是1重新计算

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接 8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。聚好看在大会上首次发布基于eBPF观测数据库性能的产品DBdoctor,受到了业界广泛的关注。近期几位业内同仁过来要大会的PPT&#xff…

三维模型的顶层合并构建的优势方面浅析

三维模型的顶层合并构建的优势方面浅析 倾斜摄影超大场景的三维模型的顶层合并具有许多优势,本文将对其进行浅析。 一、全面的信息获取 倾斜摄影超大场景的三维模型的顶层合并能够从不同视角和角度获取全面的信息。通过倾斜摄影技术,可以在一个扫描过程…

shell脚本生成随机双色球号码

[rootcentos7 ~]#cat lottery.sh #!/bin/bash #定义零长度数组 arr() length${#arr[]} while [ "${length}" -lt 6 ]do#取1到33的随机数s$[$RANDOM%331]#判断随机数是否在数组中,不在就赋值给数组if [[ ! "${arr[]}" ~ "${s}" ]]then…

Ubuntu防止休眠和挂起(笔记)

目录 1 动机2 禁用休眠3 解除休眠 1 动机 我要将 饿啊人制作成 noah-mp 的区域运行强迫,但是跑的慢,一晚上两天。后来发现是因为电脑自动 supend 了。Ubuntu 在电源那里最多只能设置 2 小时的防止休眠,2小时候又自动休眠,严重影响…

数据资产入表在即,企业如何把握机遇,进行数据资产管理?

数据作为新时代重要的生产要素之一,数据资产化的相关工作正在提速。自今年10月1日起,中国资产评估协会制定的《数据资产评估指导意见》正式施行。同时,《企业数据资源相关会计处理暂行规定》近期转为正式稿,也将于明年1月1日起施行…

7 种查询策略教你用好 Graph RAG 探索知识图谱

近来 NebulaGraph 社区在 LLM Graph 和 Graph RAG 领域进行了深入的探索和分享。在 LlamaIndex 和 LangChain 中,NebulaGraph 引入了一系列知识图谱和图存储工具,支持编排、图谱与大模型间的交互。之前,NebulaGraph 布道师古思为作为这项工作…

阻碍“元宇宙”游戏行业发展的最大瓶颈是什么?

很显然,我们现在还没看到真正的“元宇宙”产品,在3-5年内也不太可能看到这样的产品。按照米哈游CEO蔡浩宇的说法,2030年希望建成一个“上亿人愿意生活在其中的虚拟世界”,那也是八年以后的事情了。 原因很简单:技术不成…

基于Echarts的大数据可视化模板:智慧交通管理

目录 引言智慧交通管理的重要性ECharts在智慧交通中的作用智慧交通管理系统架构系统总体架构数据收集与处理Echarts与大数据可视化Echarts库以及其在大数据可视化领域的应用优势开发过程和所选设计方案模板如何满足管理的特定需求模板功能与特性深入解析模板提供的各项功能模板…

NAS外网访问方案

基础流程 路由器开启端口映射(如果有猫则要配置猫为转发模式,由路由器直接拨号即可使用第三方程序让内网ip发布到公网上(如果有云服务器)需要开启防火墙端口 好用的第三方程序 FRP穿透 优点:开源免费,速…

华为OD机试 - 九宫格按键输入 - 逻辑分析(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

Windows(Microsoft)win电脑装Xcode方法

你想在你的Windows电脑上体验和使用苹果的Xcode进行应用打包。遗憾的是,Xcode官方只支持macOS操作系统,但别担心,我们有替代方案可以让你在Windows环境下进行iOS应用的开发和打包。接下来我将指导你如何实现这一目标。 图片来源:W…

Pyside2 (Qt For Python)进度条功能实现

Pyside2 (Qt For Python)进度条功能实现 进度条(QProgressBar) 今天来介绍PySide2进度条(QProgressBar)的使用,如下所示: 说明 进度条也是一个常用的控件,当程序需要做一件比较耗费时间的任…

【SpringCloud篇】Eureka服务的基本配置和操作

文章目录 🌹简述Eureka🛸搭建Eureka服务⭐操作步骤⭐服务注册⭐服务发现 🌹简述Eureka Eureka是Netflix开源的一个基于REST的服务治理框架,主要用于实现微服务架构中的服务注册与发现。它由Eureka服务器和Eureka客户端组成&#…

15+铁死亡超高分推荐,快来码思路

今天给同学们分享一篇生信文章“Polydopamine Nanoparticles Targeting Ferroptosis Mitigate Intervertebral Disc Degeneration Via Reactive Oxygen Species Depletion, Iron Ions Chelation, and GPX4 Ubiquitination Suppression”,这篇文章发表在Adv Sci (Wei…

laravel记录mysql日志最便捷的办法

因为页面执行的sql很多,因此决定记录一下执行的sql语句。最简便快速的方式就是使用下面的代码: app\Providers\AppServiceProvider.php 在boot方法里面加上下面的代码: \DB::listen(function ($query) {$tmp str_replace(?, ".%s.&quo…

老师如何管理学生?

老师可以通过以下几点来管理学生: 1. 建立积极的关系:老师应该与学生建立积极的关系,鼓励学生参与课堂和课外活动,热情地回应学生的问题和需求。 2. 设定明确的规则:老师应该制定明确的课堂和学校规则,并向…