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

本文主要是介绍进程优先级(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下 分别,同时进行运行

这篇关于进程优先级(nice值,top指令),独立性,竞争性,进程切换(时间片),抢占与出让,并发并行概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/335415

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

Java并发编程之——BlockingQueue(队列)

一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u