进程优先级(nice值,top指令),独立性,竞争性,进程切换(时间片),抢占与出让,并发并行概念

目录

优先级 

引入

为什么会存在优先级

特点

优先级值 

nice值

更改nice值

top指令

独立性 

竞争性

进程切换 

引入

时间片

上下文切换

调度器

抢占与出让

强占

出让

并发和并行 

并发

并行


优先级 

引入

与权限不同的是,权限是能不能做的问题,优先级是什么时候去做

为什么会存在优先级

  • 系统中可以运行多个进程,每个进程都需要使用资源
  • cpu是有限的
  • 所以就存在谁先谁后使用资源的问题,这些进程需要通过某种方式竞争资源

  • 而优先级,则是调度器在调度时的重要参考
  • 调度 -- 决定将 哪一个在运行队列上的进程 放在 cpu 上

特点

优先级值 

进程的调度优先级(Priority),它是用来控制进程在 CPU 调度中的执行优先级的一个值

  • PRI就是优先级值,越小越先被调度
  • 可以看到,图中这两个进程的PRI值都是80
  • 但是,优先级也是可以被调整的,也就是用图上的NI值修改

nice值

  • NI值也就是nice值是一种修正数据(也就是说,优先级是可以被调整的)
  • 在Linux下,进程的优先级是通过所谓的“Nice值”来管理的
  • Nice值是一个用来表示进程相对优先级的整数
  • linux中: 优先级 = PRI值 + nice值
  • nice值是有范围的,-20到19,所以对进程的影响不大
  • 这是os有意控制的,为了使它可以 更均衡的让所有进程在一定时间范围内都能获得资源
  • 也就是雨露均沾
  • 防止某些恶意进程修改自己的nice值,在每次调度时都优先调度它,从而造成不公平事件
更改nice值
top指令

进入top后,按下' r ',输入要改变进程的pid,随后输入nice值

当我更改code这一进程的pid后(改为10了):

独立性 

多进程运行,需要独享各种资源,多进程运行期间互不干扰

所以,Linux中的进程是相互隔离的独立执行单元,有助于确保系统的稳定性和安全性

竞争性

Linux中的进程是竞争执行的,这意味着多个进程在竞争有限的系统资源(如CPU时间、内存、文件句柄等)和争夺执行的机会

进程可以通过提高其优先级(降低Nice值)或增加其权重来提高获得CPU时间的机会

进程切换 

引入

  • 其实,一个进程使用cpu的时间是有限制的
  • 如果直到一个进程被执行完才退出,那么其他进程在这一过程中相当于卡死状态(它在独占cpu)
  • 也很可能会造成cpu直接卡死(如果该进程执行的是死循环,就会让计算机直接无法使用) 
  • 所以有了"时间片"这一概念

时间片

  • 是操作系统中用来管理和分配CPU时间的基本概念
  • 它表示操作系统将CPU时间分割成小段的时间间隔,每个时间间隔被分配给一个进程或线程,以允许多个任务交替执行
  • 每个进程在其分配的时间片内运行,达到时间后就让出CPU,以便其他进程执行
上下文切换
  • 在时间片结束时,操作系统会执行上下文切换
  • 将CPU状态保存到当前进程的上下文中(这样下次再来的时候,可以从之前的逻辑继续向后运行)
  • 然后加载下一个进程的上下文,以便继续执行
调度器
  • 操作系统的调度器负责分配时间片给不同的进程
  • 它使用调度算法来确定下一个应该运行的进程,并在时间片结束后切换到下一个进程

抢占与出让

  • 但实际上,进程执行的过程中,并不会死板的按照时间片执行
  • 如果该进程 没有执行完时间片规定的时间 执行完啦,就可以直接退出啦,cpu就让其他进程运行
强占
  • 当 一个进程的优先级 比 正在使用cpu的进程 , 那么那个优先级低的会被扒拉下来,让高的那个先执行
出让
  • 一个进程也可以自己主动让出cpu资源

 

并发和并行 

并发

 多个进程 一个CPU 下采用 进程切换 的方式,在一段时间之内,让多个进程都得以推进

并行

多个进程 在 多个CPU下 分别,同时进行运行

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

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

相关文章

spring-boot-autoconfigure.jar/META-INF/spring.factories介绍

spring-boot-autoconfigure.jar/META-INF/spring.factories是Spring Boot自动配置的核心文件,它包含了各种自动配置类的注册信息。这个文件是Spring Boot根据应用程序的依赖关系和配置文件中的条件注解,自动加载和配置所需的Bean的依据。 在spring.fact…

前端BOM、DOM

文章目录 BOM操作window对象navigator对象(了解即可)history对象location对象弹出框警告框确认框提示框 计时相关1.过一段时间之后触发(一次)2.每隔三秒时间触发一次 DOM操作HTML DOM树 查找标签直接查找间接查找 节点操作操作 获…

OMV 介绍及安装

# Time: 2023/11/02 #Author: Xiaohong # 运行电脑: Lenovo X201I (Intel(R) Core(TM) i3 CPU M 370 2.40GHz) # 功能: OMV 介绍及安装 导图 若OMV6 安装Extras 插件失败,可以参考 OMV6 安装Extras 插件失败的解决方法

Python Django 之模板继承详解(extends)

文章目录 1 概述1.1 目的1.2 标签:block、extends1.3 目录结构 2 templates 目录2.1 base.html:父页面2.2 login.html:子页面 3 其它代码3.1 settings.py3.2 views.py3.3 urls.py 1 概述 1.1 目的 模板继承 和 类继承 的目的是一样的&#…

力扣:148. 排序链表(Python3)

题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 示例: 示例 1&a…

【m98】接收udp包到变为CopyOnWriteBuffer的rtp包及call模块传递的过程

RtpTransport::OnReadPacket ice和Dtls 传输的创建及1个简单的SFU转发实例 实例生动的再现了这一过程: 对于m98的代码,进行走读,大体了解到类似的过程: \src\pc\rtp_transport.cc 收到的data指针和长度len 直接构造为 rtc::CopyOnWriteBuffer 向下传递:“ rtc::CopyOnWrit…

【深度学习】AUTOMATIC1111 / stable-diffusion-webui docker

代码:https://github.com/AUTOMATIC1111/stable-diffusion-webui/ CUDA 11.8 制作了一个镜像,可以直接开启stable diffusion的web ui 服务。 确定自己的显卡支持CUDA11.8,启动此镜像方式: docker run -it --networkhost --gpu…

vite vue3打包时出现TS类型错误解决最快速解决方案

快速解决看这里或者直接到 解决 packge.json中将build的vue-tsc命令删除 问题描述 在执行 npm build时报错 node_modules/.pnpm/element-plus2.3.4_vue3.3.7/node_modules/element-plus/es/components/tabs/index.d.ts:106:14106 readonly stretch: boolean;~~~~~~~The …

Go语言集成开发环境(IDE):GoLand 2023中文

GoLand 2023是一款由JetBrains开发的现代化、功能丰富的Go语言集成开发环境(IDE)。它提供了智能代码提示和自动完成、强大的内置调试器以及代码重构工具,帮助开发者提高编码效率并确保代码质量。GoLand 2023还支持多种版本控制系统&#xff0…

opencv第一个例子

目的 这是用用QTopencv实现的一个完整的展示图片的例子,包括了项目的配置文件,完整的代码,以用做初次学习opencv用。 代码 工程文件: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET openCv1 TEMPL…

不同目录下的文件读取方式

//文件目录与JsonToJava.class处于同级目录 Reader reader new InputStreamReader(JsonToJava.class.getResourceAsStream("js/Server2.json"), "UTF-8"); //文件目录与JsonToJava.class处于不同级目录,JsonToJava.class的文件目录层级比/js…

在Ubuntu上安装Redis并学习使用get、set和keys命令

目录 安装Redis切换到root用户搜索redis相关软件包安装redis修改配置文件重启服务器使用redis客户端连接服务器 get与set命令keys 安装Redis 我们在Ubuntu20.04上进行Redis的安装 切换到root用户 使用su命令: 在终端中,输入su并按回车键。然后输入roo…

[ABC294Ex] K-Coloring

题目传送门 引 属于一眼题,不看时间限制 8 s 8s 8s 容易被诈骗 解法 简单容斥 大概 式子就是 ∑ ( − 1 ) M ∗ K ∣ S ∣ \sum(-1)^{M}*K^{|S|} ∑(−1)M∗K∣S∣ , M M M 为边集的大小, ∣ S ∣ |S| ∣S∣ 为联通块的数量 那么我们就有 空间复杂度&#…

第16期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

软件模拟IIC的全面笔记(已调通)

[toc] lib_i2c_simulation /** Author: Haiyichen* Date: 2023-09-21 16:16:16* LastEditors: Haiyichen* LastEditTime: 2023-10-31 18:01:10* Description: Personal notes of i2c-simulation*/i2c基础 通讯流程 协议 除了文字解释,有用wavedrom简单画了一些各…

C++设计模式_24_Visitor 访问器

Visitor 访问器也是属于“行为变化”模式。 文章目录 1. 动机( Motivation)2. 代码演示Visitor 访问器3. 模式定义4. 结构(Structure)5. 要点总结6. 其他参考1. 动机( Motivation) 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基…

【Linux】开发工具——vim多模式编辑器的入土设置sudoers白名单

个人主页点击直达:小白不是程序媛 Linux系列专栏:Linux被操作记 目录 前言: 基本概念 vim基本操作 [正常模式]切换至[插入模式] [插入模式]切换至[正常模式] [正常模式]切换至[末行模式] 三种模式的切换关系图 vim命令模式命令集 进…

微信小程序-授权登录(手机号码)

1、WXBizDataCrypt.js-下载地址 2、UNIAPP代码 <template> <view class"work-container"> <view class"login"> <view class"content"> <button class"button_wx&q…

数据结构之栈的实现

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇: Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”…

J2EE项目部署与发布(Linux版本)->jdktomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署

jdk&tomcat安装MySQL安装后端接口部署linux单体项目前端部署 1.jdk&tomcat安装 上传jdk、tomcat安装包 解压两个工具包 #解压tomcat tar -zxvf apache-tomcat-8.5.20.tar.gz #解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置并且测试jdk安装 #配置环境变量 vim /e…