进程优先级(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,一经查实,立即删除!

相关文章

前端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…

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…

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

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

第16期 | GPTSecurity周报

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

【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…

文件夹批量重命名:如何利用上级目录给多个文件夹进行高效重命名

在文件管理中&#xff0c;我们经常需要处理大量的文件和文件夹。其中&#xff0c;文件名过长或混乱的问题经常让我们感到困扰。这不仅影响了我们的工作效率&#xff0c;还可能导致一些错误。为了解决这个问题&#xff0c;我们可以用云炫文件管理器将“上级目录”批量重命名文件…

网络安全中的渗透测试主要有几个方面

渗透测试中主要有软件测试和渗透测试。 1、测试对象不同   软件测试&#xff1a;主要测试的是程序、数据、文档。 渗透测试&#xff1a;对象主要为网络设备、主机操作系统、数据库系统和应用系统。 2、测试内容不同   软件测试&#xff1a;主要工作内容是验证和确认&#x…

如何将word格式的文档转换成markdown格式的文档

如何将word格式的文档转换成markdown格式的文档 前言 A. 介绍Markdown和Word格式文档 什么是Markdown&#xff1f; Markdown是一种轻量级标记语言&#xff0c;旨在简化文本格式化和排版的过程。它以纯文本形式编写&#xff0c;通过使用简单的标记语法&#xff0c;使文档更具…

使用Objective-C和ASIHTTPRequest库进行Douban电影分析

概述 Douban是一个提供图书、音乐、电影等文化内容的社交网站&#xff0c;它的电影频道包含了大量的电影信息和用户评价。本文将介绍如何使用Objective-C语言和ASIHTTPRequest库进行Douban电影分析&#xff0c;包括如何获取电影数据、如何解析JSON格式的数据、如何使用代理IP技…

响应式设计疑难问题全解析!一篇读懂,立即上手

在我们当前的技术环境中&#xff0c;响应式设计已经成为前端开发的重要部分。其目标是让网站能够以最优的方式在任何设备上工作——不论是大屏电脑、笔记本、平板还是智能手机。这就要求网页能够自适应不同设备的屏幕大小。下面就让我们深入浅出地探讨响应式设计的精髓&#xf…

AI:50-基于深度学习的柑橘类水果分类

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

Qt 使用QtXlsx操作Excel表

1.环境搭建 QtXlsx是一个用于读写Microsoft Excel文件&#xff08;.xlsx&#xff09;的Qt库。它提供了一组简单易用的API&#xff0c;可以方便地处理电子表格数据。 Github下载&#xff1a;GitHub - dbzhang800/QtXlsxWriter: .xlsx file reader and writer for Qt5 官方文档…