前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux操作系统】进程优先级和进程切换

【Linux操作系统】进程优先级和进程切换

作者头像
MicroFrank
发布2023-01-16 10:47:21
1.6K0
发布2023-01-16 10:47:21
举报
文章被收录于专栏:同步文章1234

文章目录

  • 一.进程优先级
    • 1.三段论谈优先级
    • 2.PRI和NI
  • 二.进程切换
    • 1.进程的四个特性
    • 2.上下文数据保护和恢复

一.进程优先级

1.三段论谈优先级

什么是优先级?它等同于权限吗?

定义:

cpu资源分配的先后顺序,就是指进程的优先权(priority)。

区别:

  • 权限表示能与不能
  • 优先级的前提是能,表示先后顺序

为什么要有优先级?

因为资源有限,进程抢占资源,操作系统得给进程一个先后顺序。

怎么确定优先级?

最终PRI= 80 +nice值

ps:

  1. Linux是给运行中的进程调整优先级,调整策略是修改niceness值
  2. 和成绩排名一样,最终PRI值越小表示优先级越高

2.PRI和NI

总体:PRI=80+NI

其中NI值从[20,-19]

ps:

  1. NI的范围决定了PRI的变化范围[100,61]
  2. NI值的过度设置,会导致进程的调度失衡

第一步: ./pri后, 查看进程的优先级信息

其中ps的意思为process status 进程状态

代码语言:javascript
复制
ps -al
代码语言:javascript
复制
两个单词:
PRI:priority缩写,中文:最终优先级
NI:niceness缩写,中文:进程优先级
PRI=80+NI,其中NI的范围从[20,-19]

第二步: 提权使用top工具来准备修改niceness值

代码语言:javascript
复制
sudo top

第三步:键盘输入r

代码语言:javascript
复制
r (意思为renice)

显示结果:

第四步:输入要调整优先级的进程ID

代码语言:javascript
复制
假如是:17955

显示结果:

第五步:输入调整后的NI值

代码语言:javascript
复制
假如是:-19

第六步:再次查看进程的优先级信息

代码语言:javascript
复制
ps -al

显示结果:

NI值被修改为了-19

最终PRI值被修正为了61

二.进程切换

1.进程的四个特性

代码语言:javascript
复制
竞争性:进程数众多,CPU只有少量,进程之间要抢占CPU资源
独立性:进程之间各自以为独占资源,互不干扰
并发:多个进程在一个CPU上运行,采取进程切换/CPU时间片轮转的方式
并行:多给进程在多个CPU上运行,同时运行

2.上下文数据保护和恢复

CPU内有很多寄存器,但是总归就一套寄存器.

寄存器是各个进程共享的,但是寄存器内的数据是私有的—-属于当前正在运行的进程.

由于大部分电脑都是单核CPU,所以属于并发机制,并发采用的是进程切换/时间片轮转的方式.

那么一个进程大多数情况下并不是在CPU中跑完了才从CPU上拿下来,而是跑完一个时间片的时间就换上另一个进程.

所以进程在一个时间片时间结束时,寄存器内的数据就要被拷贝一份,保留到当前进程或系统,这个过程被称为上下文数据的保护;

直到轮到该进程的下一个时间片时,就把之前保留的上下文数据恢复,CPU通过pc/eip指针的记录继续取指令,分析指令和执行指令.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一.进程优先级
    • 1.三段论谈优先级
      • 2.PRI和NI
      • 二.进程切换
        • 1.进程的四个特性
          • 2.上下文数据保护和恢复
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档