Linux中进程的属性:进程优先级

一、优先级和进程优先级

1.1什么是优先级

优先级就是获取某种资源的先后顺序,比如打饭时排队:排队就是在确认优先级

1.2为什么要有优先级

本质上其实是目标资源相对于需求者来说比较少,如CPU,磁盘,显示器,键盘等相对于进程来说并不充足

1.3优先级与权限有类似的地方,他们的区别是什么

优先级:能使用资源,决定谁先谁后问题

权限:决定能不能使用资源的问题

1.4进程优先级与竞争性的体现

1.4.1进程优先级竞争的资源

优先级的存在是因为资源较少,需要排顺序来竞争资源分配,那么对于进程优先级来说竞争的资源是什么呢?

竞争的是CPU资源

1.4.2竞争性的体现

竞争性的原因:资源稀缺

系统中进程数目很多,但是CPU很少,进程之间就有了竞争属性

为了更高效地完成任务,更合理地竞争资源,便有了进程优先级

二、进程优先级是怎么实现的

2.1用户名和与之强相关的UID

2.1.1UID是什么

在Linux下,会为每个用户维护一个对应的UID整形值来代表用户名所对应地字符串

可以使用ls -n来查看

可以发现在-n选项下,用户名 my_normal对应的字符串被替换成了整数1000 

2.1.2为什么要有UID

UID标识了用户ID,代表进程是哪一个用户启动的

①Linux下一切皆文件,每个文件都会记录自己的拥有者,所属组以及对应的权限

②Linux下所有操作都是进程来完成,进程也属于文件,自然要记录“拥有者”,即:“谁(哪个用户)启动的我”

总而言之,进程通过记录“谁启动的我”来判断自身是否属于文件的拥有者/所属组,以此确定是否有权限进行一些操作,这就是权限控制实现的底层原理,也是UID的意义

2.2task_struct中优先级属性的实现原理

task_struct中的优先级属性是通过特定的几个int类型的变量来表示优先级的(优先级数字越小,代表优先级越高)

查看优先级:

可以通过ps -la指令查看所有自己创建的进程的详细信息,包括其优先级

其中:PRI和NI对应的就是优先级属性

PRI:最终优先级

NI:是nice(细微)的简写,代表优先级的修正数据

最终优先级=默认PRI(例子中为80)+NI

2.3如何修改进程优先级(注:此功能不是高频使用的,且不建议修改)

修改进程优先级使用的是top指令的一个功能:

进入top指令->输入r->输入PID->输入nice值

(注:OS禁止频繁修改优先级,同时UID对应用户没有权限的话也不允许修改)

原进程:

top的r功能:

 输入一个大于等于19的数,修改后:

再输入一个小于等于-20的数,触发OS保护机制,不允许连续修改进程优先级

 切换为root账户再修改:

综上,NI值有范围限制,在[-20,19]之间 ,共40个数字

2.3补:为什么要把nice值设置在一个可控范围内?为什么是[-20,19]?

分时OS的进程调度需要遵循尽量公平的原则,如果有一个进程优先级特别高,会破坏这一公平性

2.4进程切换

2.4.1时间片的概念与时间片对于进程有什么影响

①时间片

Linux基于时间片进行轮转调度,一个进程的时间到了它的时间片,进程切换

②时间片对于进程的影响

时间片到了,这一进程并不一定跑完,因此进程需要保存自己的运行状态,在任何地方都可以被重新调度

2.4.2结合实际生活中的例子理解轮转调度

就像在学校转而去当兵入伍,确定入伍名额需要向学校申请保留学籍

退伍后,需要向学校申请恢复学籍

其中保留学籍的目的是留存历史的学习痕迹,保留不是目的,而是手段,未来的恢复才是目的

类比起来

①学生就像进程,CPU就像学校,部队就像OS中,在学校学习的时间就是时间片

②保留学籍就像保存上下文数据

③恢复学籍就像回复上下文数据

2.4.3切换过程和理解

①进程在运行的过程中,会有许多临时数据在CPU的寄存器中保存,CPU内部有多个寄存器,我们称之为“一套寄存器”

CPU如何得知当前运行到代码中哪一行了呢?

是依靠pc指针与ir指针

磁盘中的代码和数据加载到内存中,在这段内存空间中,每一句代码都有自己的地址

此时的eip寄存器(又名pc指针,i是instruction的简写,意思为指令;p是point的简写,意思是指针)存储当前正在执行指令的下一条指令的地址

ir寄存器:指令寄存器,保存的是当前从内存加载到CPU中,正在执行的指令

②CPU内部寄存器中的一系列数据,是进程执行时的瞬时状态信息数据(又名上下文数据)

2.4.3补:寄存器!=寄存器里的上下文数据,还有其他内容

2.4.4进程切换的核心:上下文数据的保存和恢复

进程切换的核心就是进程上下文数据的保存和恢复,一个可执行程序开始运行的过程:

①pc中存main函数的地址,

②之后把执行加载到ir中,更新pc值

③ir将指令交给CPU中一个控制器来执行,执行结束进行下一行代码的读取

之后运行进程一的时间片,到时间后换到进程二,以此类推

假如这个过程不保护(不保存上下文数据):

进程一运行结束,回到调度队列,CPU中pc指针读取了进程二的首语句,会把原来进程一的痕迹覆盖;下一次轮到进程一执行,找不到上次的痕迹,无法继续运行

无法完成调度与切换

做保护:

会在CPU外的某个位置将进程一的上下文数据保存起来,再进行pc指针读取进程二首语句

进程切走:将相关寄存器数据保存起来

进程切回:将历史保存的寄存器数据恢复到寄存器中

2.4.5进程切换过程中,CPU寄存器被共享使用

每个进程都有自己的上下文数据,这些上下文数据需要加载到CPU寄存器内部来使用,而CPU寄存器只有一套,所以CPU被多个进程共享使用

2.4.6每个进程的上下文数据究竟存储在哪里

现在电脑对于进程上下文数据的保护体系已经十分完善了,涉及到多个位置

但我们可以理解为上下文数据保存在内存的PCB中

源码中可以看出端倪:

在task_struct中有一个tss的定义,而它是这个:

 所以进程的上下文数据保存在任务状态段(TSS) 的结构体中

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

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

相关文章

基于LangChain 实现 Advanced RAG-后检索优化(上)-Reranker

摘要 Advanced RAG 的后检索优化,是指在检索环节完成后、最终响应生成前,通过一系列策略与技术对检索结果进行深度处理,旨在显著提升生成内容的相关性与质量。在这些优化手段中,重排序优化(Reranker)作为核…

【云备份】热点管理模块

目录 1.热点管理文件的基本思路 2.热点管理类的设计 3.热点管理类的实现 1.热点管理文件的基本思路 服务器端的热点文件管理是对上传的非热点文件进行压缩存储,节省磁盘空间。 而热点文件的判断在于上传的文件的最后一次访问时间是否在热点判断时间之内。 实…

LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用

文章目录 方法思路:前缀和 哈希表核心思想关键步骤 代码实现复杂度分析示例解析总结 题目描述 给定一个整数数组 nums 和一个整数 k,请统计并返回该数组中和为 k 的子数组的数量。 子数组是数组中连续的非空元素序列。 示例 输入:nums …

Windows配置grpc

Windows配置grpc 方法一1. 使用git下载grph下载速度慢可以使用国内镜像1.1 更新子模块 2. 使用Cmake进行编译2.1 GUI编译2.2 命令行直接编译 3. 使用Visual Studio 生成解决方法 方法二1. 安装 vcpkg3.配置vckg的环境变量2. 使用 vcpkg 安装 gRPC3. 安装 Protobuf4. 配置 CMake…

【算法基础】快速排序算法 - JAVA

一、算法基础 1.1 什么是快速排序 快速排序(Quick Sort)是一种高效的分治排序算法,由英国计算机科学家Tony Hoare于1960年提出。它的核心思想是: 选择一个基准元素(pivot)将数组分成两部分:小…

Linux用户管理命令和用户组管理命令

一、用户管理命令 1.1、adduser 添加新用户 1、基本语法 adduser 用户名 (功能描述:添加新用户) 应用场景1:企业开发,多人协同(也会有多人使用相同的一个低权限用户)。 应用场景2&#x…

记录两个免费开源又好用的后台模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后台集成方案 1.简介 vue-element-plus-admin 是一个基于 element-plus 免费开源的中后台模版。使用了最新的 Vue3,Vite,Typescript等主流技术开发,开箱即用的中后…

Flip PDF Plus Corp7.7.22电子书制作软件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企业级的翻页电子书制作软件,拥有丰富的模板,主题和动画场景,每本书最大页数1000页,每本书的最大大小1GB,即可以帮助企业用户制作好丰富的电子书籍。 …

C语言蓝桥杯真题代码

以下是不同届蓝桥杯C语言真题代码示例,供参考: 第十三届蓝桥杯省赛 C语言大学B组 真题:卡片 题目:小蓝有很多数字卡片,每张卡片上都是数字1-9。他想拼出1到n的数列,每张卡片只能用一次,求最大的…

[Windows] Kazumi番剧采集v1.6.9:支持自定义规则+在线观看+弹幕,跨平台下载

[Windows] Kazumi番剧采集 链接:https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 开发的轻量级番剧采集工具,专为ACG爱好者设计。通过;自定义XPath规则; 实现精准内容抓取,支持多平台(An…

探秘数据结构:构建高效算法的灵魂密码

摘要 数据结构作为计算机科学的基石,其设计与优化直接影响算法效率、资源利用和系统可靠性。本文系统阐述数据结构的基础理论、分类及其核心操作,涵盖数组、链表、栈、队列、树、图、哈希表与堆等经典类型。深入探讨各结构的应用场景与性能对比&#xf…

机器人--架构及设备

机器人的四大组成部分 控制系统 驱控系统 执行系统 电机属于执行系统的设备。 传感系统 传感系统分为内部传感系统和外部传感系统。 内部传感系统(内部传感器): 用于获取机器人内部信息,比如IMU,力传感器等。 外部传感系统(外部传感器):…

人工智能:如何快速筛选出excel中某列存在跳号的单元格位置?

前提: 电脑上必须提前安装好了【office AI】软件工具 方法如下: 1、打开要操作的excel表格,点击上方的【officeAI】,再点击左边的【右侧面板】按钮,就会出现如下右侧的【OfficeAI助手】 2、在OfficeAI助手的聊天框…

Spring MVC入门

介绍了Spring MVC框架的概念、特征及核心功能,通过案例详细介绍了Spring MVC开发所需要的开发环境以及基本的开发步骤。 一、Spring MVC框架概述 Spring MVC是Spring框架的一个模块,是一个基于Java的实现了MVC设计模式的轻量级Web框架。它通过一套注解和…

贪心算法求解边界最大数

贪心算法求解边界最大数(拼多多2504、排列问题) 多多有两个仅由正整数构成的数列 s1 和 s2,多多可以对 s1 进行任意次操作,每次操作可以置换 s1 中任意两个数字的位置。多多想让数列 s1 构成的数字尽可能大,但是不能比…

Ubuntu ZLMediakit的标准配置文件(rtsp->rtmp->hls)

最近在工作中遇到不生成hls资源的问题,后面发现是配置文件有误,特此记录正确的config.ini配置文件,方便查阅。 最终解决方案,通过下面这种格式可以访问到flv视频,具体为什么不太清楚,rtmp格式:rtmp://39.113.48.113:8089/live/1744168516937396175 记录最终解决方案:ht…

# LeetCode 1007 行相等的最少多米诺旋转

LeetCode 1007 行相等的最少多米诺旋转 原题英文:Minimum Domino Rotations For Equal Row 难度:中等 | 标签:数组、贪心 1 题目重述 给定两行长度相同的多米诺骨牌: tops[i] 表示第 i 张骨牌上面的数字;bottoms[…

大数据技术:从趋势到变革的全景探索

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 在数字化时代的浪潮下,大数据已经不再是一个陌生的概念。从日常生活中的社交媒体,到企业决策支持系统,再到公共管理的大数据应用,它正在改变着我们的工作和生活方式。随着技术的进步,传统的数据…

前端八股Day5——XHS某中厂实习前端一面

没写完,睡醒补 CSS盒模型 //出现频率好高,感觉每次写面经都遇到 W3C标准盒模型(content-box):盒子宽高width/heightpaddingbordermargin IE怪异盒模型(border-box):盒子宽高width/heigth(包括padding和border)margin 默认标准切换…

INP指标

什么是INP(Interaction to Next Paint) 参考网站:webVital-INP文档 定义与核心目标 INP 是一项稳定的 Core Web Vitals 指标,通过统计用户访问期间所有符合条件的互动约定时间,评估网页对用户操作的总体响应能力。最…