当前位置: 首页 > news >正文

Linux:进程调度

文章目录

  • 进程优先级
  • 进程的一些补充
  • 进程切换

进程优先级

是进程得到CPU资源先后的顺序。

因为目标资源稀缺,所以进程得到CPU要排队。

优先级不是权限,能得到,但是顺序不一样

优先级也是PCB里的一个数字,一般值越低,优先级越高。

当代计算机都是基于时间片的时分操作系统。

必须考虑公平性。

在这里插入图片描述
展现优先级信息

那么系统怎么指定我访问文件时,是拥有者,所属组,还是other呢?

在这里插入图片描述

拿进程和文件的uid比较就可以确定拥有者,所有者,所属组。

在这里插入图片描述

pri是进程优先级
ni是nice值

进程真实优先级是pri+ni

改优先级

top之后+r

输入pid之后可以输入nice值
在这里插入图片描述

注意:每次修改都是基于默认值+修改后的nice值。

nice和renice也可以调整nice值。

优先级的极值问题

nice[-20,19]默认优先级80
所以Linux优先级范围是[60,99],因为要考虑公平性,所以调整范围太大。

进程的一些补充

竞争性: 系统进程数⽬众多,⽽CPU资源只有少量,甚⾄1个,所以进程之间是具有竞争属性的。为
了⾼效完成任务,更合理竞争相关资源,便具有了优先级
• 独⽴性: 多进程运⾏,需要独享各种资源,多进程运⾏期间互不⼲扰
• 并⾏: 多个进程在多个CPU下分别,同时进⾏运⾏,这称之为并⾏
• 并发: 多个进程在⼀个CPU下采⽤进程切换的⽅式,在⼀段时间之内,让多个进程都得以推进,称之为并发

单cpu单核只能一个一个cpu,一个进程
多核可以多个进程,
操作系统服务器有的有多个cpu,两个cpu同时运行就叫并行

我们的电脑起始只执行一个进程,但是cpu切换太快了,可以多个进程来回切换。

进程切换

了解了并发,那么我们如何进行并发呢,这里cpu如何快速切换?

一个进程占有cpu,不会跑完所有代码,只要占用cpu,操作系统会分配一个时间片的东西。比如一个进程跑一毫秒,如果没跑完就到队列里重新排队。

这样一个进程不会一直占用cpu,所以死循环进程不会一直占用系统。

在这里插入图片描述

这里寄存器是保存正在运行进程的临时数据
这一寄存器就是cpu内部的临时空间
寄存器不等于寄存器内部的数据
寄存器是空间不是内容,空间只有一份,内容可以变,有多份。

在这里插入图片描述

这里的方框就是寄存器,存的都是临时数据。
由于时间片的原因,当进程A切走的时候我们要把寄存器的数据拷贝出来。
然后进程到队列的结尾。依次类推。
进程A切回来的时候还要把数据恢复回来,这样在下一个时间片内,进程A就可以从上次位置继续执行了。

那这些数据保存到哪里呢?

可以理解为把这些临时数据保存到task_struck里。

这里有TSS:任务状态段,保存数据
在这里插入图片描述

在这里插入图片描述

系统内存在 struct task_struct * current 指针,实时指向现在运行的进程。

每个cpu都有一个运行队列,runqueque,多个cpu就有多个。

操作系统是分为分时操作系统,基于时间片公平调度
实时操作系统,来了一个进程要立马调度完,这里工业重要领域最多

我们在电脑里基本上分时操作系统最多。

我们在数组里规定优先级的时候前100个是别的操作系统的优先级
后40个是分时操作系统,这里的40个下标正好映射实时操作系统的优先级在这里插入图片描述

这里queque本质是hash表,算法用hash算法

bitmap是无符号整数
在这里插入图片描述

这里5个整数类型,5*32=160,能覆盖所有40位置的优先级0没有内容,1有内容

1要挑队列,2要挑进程,

在这里插入图片描述

这里*active指向活跃的进程
在这里插入图片描述
active队列里执行完后链入expired队列里,
active执行完后,swap(&active,&expired)再执行active 队列,这里有两个runqueque

新进程来了放入expired队列里,就相当于就绪
实时操作系统的内核抢占,立刻放入active队列里。
双cpu时有负载,一个挂50个进程,另一个如果少,查最低的负载cpu,新进程来了放入负载低的cpu内

http://www.lryc.cn/news/617503.html

相关文章:

  • linux下部署 dify,并配置本地ollama大模型
  • 关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • AD8475ARMZ-RL ADI放大器/缓冲器 集成电路IC 半导体芯片
  • AI Coding 概述及学习路线图
  • 【IntelliJ IDEA】修改堆内存
  • window显示驱动开发—多平面覆盖硬件要求
  • A2O MAY确认发行新曲《B.B.B (Bigger Badder Better)》 8月13日强势回归!
  • 【论文阅读】BEVFormer论文解析及Temporal Self-Attention、Spatial Cross-Attention注意力机制详解及代码示例
  • 基于领域事件驱动的微服务架构设计与实践
  • 【10】微网优联——微网优联 嵌入式技术一面,校招,面试问答记录
  • 15. xhr 对象如何发起一个请求
  • SAE J2716多协议网关的硬件架构与实时协议转换机制解析
  • pdf转word教程
  • 轻量级解决方案:如何高效处理Word转PDF?
  • ubuntu20.04交叉编译vlc3.0.21 x64 windows版本
  • C/C++练习面试题
  • WebSocket-java篇
  • 使用frp内网穿透实现远程办公
  • etf期权剩余0天还能交易吗?
  • Rust学习笔记(一)|Rust初体验 猜数游戏
  • 面试题-----RabbitMQ
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • Linux入门DAY21
  • Dify在Windows系统的部署
  • 【运维进阶】LAMPLNMP 最佳实践
  • Nginx学习笔记(一)——Nginx的简介
  • docker部署elasticsearch-8.11.1
  • 【自动化运维神器Ansible】playbook setup模块深度解析:自动收集系统信息与变量应用
  • 实习学习记录