LinuxO(1)调度算法
概念
在Linux中,O(1)调度算法是一种进程调度算法。O(1)表示算法的时间复杂度是常数级别的,与系统中的进程数量无关。
运行队列结构
- 他采用了两个运行队列,一个活动队列和一个过期队列。活动队列中的进程是有资格获取CPU时间片的进程,过期队列中的进程是已经用完时间片的进程。而操作系统始终只会调度活动队列的进程。
- 多个队列又被分为多个优先级数组,例如从0~139。优先级不同,Linux下版本可能有差异,数值越小优先级越高。
- 利用哈系统指针数组140个元素,类型为struct task_struct*,前100个下标不用考虑是为实时进程进行使用的。剩下的40个元素是对于分时进程进行考虑。对于剩下的40个元素利用哈系统将进程优先级相同的。串在一起。通过优先级挂队里相同优先级的进程会被链接在一起。
- 也可以理解为在一个CPU里面有一个运行队列,一个运行队列里面有两张表,一个是活动队列和一个过期队列。
活动队列
- 时间片还没有结束的所有进程都按照优先级放在该队列。
- nr_active:总共有多少运行状态的进程
- queue[140]:一个元素就是一个进程队列相同优先级的进程按照fifo规则进行排队调度,所以数组下标就是优先级。
- 在该结构中选择一个最合适的进程过程是如何?
- 从0号下标开始,遍历queue[140]
- 找到第一个非空队列,该队列必定为优先级最高的队列。
- 拿到选中队列的第一个进程开始运行,调度完成。
- 遍历queue[140]时间复杂度是常数,但还是太低效了。
- bitmap[5]:一共是140个优先级,一共140个进程队列。为了提高查找非空队列的效率,就可以用五个。32个比特位表示队列是否为空,这样便可以大大提高查找效率。
过期队列
- 过期队列和活动队列结构一模一样。
- 过期队列上放置的进程都是时间片耗尽的进程。
- 当活动队列上的进程都被处理完毕之后,对过期队列的进程进行时间片重新计算。
active指针和expired指针
- active永远指向活动队列。
- expired永远指向国旗队列。
- 活动队列上的进程越来越少,过期队列上的进程越来越多,因为进程时间片到期时一直都存在的。在最终只要能够交换活动队列指针和过期队列指针的内容,就相当于又具有一批新的活动进程。
- 进程有三种情况,运行退出。不退出,但时间偏到了。有新的进程产生了。
调度过程
初始状态
系统中有活动队列和过期队列,活动队列包含有资格获取CPU时间片的进程,这些进程按照优先级分布在不同的优先级数组中。优先级从0~139。
选择进程运行
当进行进程调度时,调度器首先查看活动队列中优先级最高数组,在这个优先级最高的数组中选择一个进程来运行。这个选择过程比较简单快速,因为它不需要遍历整个系统的所有行程,只需在特定的优先级数组里选择。
时间片用完
当活动队列中的进程用完自己的时间片之后,他不会立刻回到活动队列的头部重新竞争CPU。因为操作系统采用分时操作系统。分时操作系统是要保持绝对的公平,进程调度绝对公平。而是被移动到过期队列中相应的优先级数组里。
队列交换
当活动队列中所有的进程都玩都用完时间片,也就是活动队列中没有可运行的进程时,活动队列和过期队列进行交换。此时原来的过期队列变为活动队列,而原来的活动队列变为过期队列,新的活动队列中的进程又可以开始竞争CPU资源。这个交换操作的时间复杂度也是o1。
优点
由于采用这种结构,查到下一个要运行的进程的时间复杂度为o一,无论系统中有多少个进程都能快速的做出调度决策,提高了系统的响应速度和整体的性能。并且保证了分时操作系统调度进程绝对的公平。
应用场景
多用户交互环境
在桌面Linux系统中,当多个用户同时登录并且运行多个程序时,如打开多个办公软件,浏览器标签等oe1调度算法能够快速的在这些进程中进行切换,保证每个用户操作都能得到及时响应,提供流畅的交互体验。
服务器环境
由于外部服务器就像运行或ngnx服务器可能同时处理多个客户端请求,oe调度算法可以高效的调度处理这些请求的进程。不管同时存在的请求数量多少都能快速的分配cpu响应性能。
多任务处理
在Linux系统执行多任务时,例如一边进行文件下载,一边编译程序,一边运行后台服务等情况。O1调度算法能够合理分配CPU时间片给各个任务。对应的进程使这些任务都能有条不紊的进行。
相关文章:

LinuxO(1)调度算法
概念 在Linux中,O(1)调度算法是一种进程调度算法。O(1)表示算法的时间复杂度是常数级别的,与系统中的进程数量无关。 运行队列结构 他采用了两个运行队列,一个活动队列和一个过期队列。活动队列中的进程是有资格获取CPU时间片的进程&#x…...

安防监控/视频系统EasyCVR视频汇聚平台如何过滤134段的告警通道?
视频汇聚/集中存储EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为…...

SDKMAN!安装Maven
一、通过SDKMAN!正常安装 查看maven版本 sdk list maven安装maven 3.6.3版本 sdk install maven 3.6.3查看maven 3.6.3安装目录 sdk home maven 3.6.3安装过程中可能会失败,出现tmp临时目录中存在临时文件 # 移除临时文件,不要手动删除,…...

[NeurIPS 2022] STaR: Bootstrapping Reasoning With Reasoning
Contents IntroductionMethodExperimentsReferences Introduction CoT 推理可以有效提升 LLM 推理能力,但 few-shot prompting 无法发挥 CoT 的全部潜力,训练能够生成中间推理步骤 (i.e., rationale) 的 LLM 又需要大量人工标注 rationale,为…...

C++中对象的构造与析构
目录 一、引言 二、构造函数详解 1.构造函数的作用 2.构造函数的调用时机 3.构造函数的分类 三、析构函数详解 1.析构函数的作用 2.析构函数的调用时机 四、实例分析 五、总结 本文将详细讲解C中对象的构造和析构过程,包括构造函数、析构函数的作用及其调用时机…...

算法笔记(九)——栈
文章目录 删除字符串中的所有相邻重复项比较含退格的字符串基本计算机II字符串解码验证栈序列 栈是一种先进后出的数据结构,其操作主要有 进栈、压栈(Push) 出栈(Pop) 常见的使用栈的算法题 中缀转后缀逆波兰表达式求…...

动态SLAM总结一
文章目录 方法分类:OctoMap:(2013)UFOMap:(2020)Removert:(2020)ERASOR:(2021)DynamicFilter:(202…...

HTB:Mongod[WriteUP]
连接至HTB服务器并启动靶机 靶机IP:10.129.99.33 分配IP:10.10.16.12 1.How many TCP ports are open on the machine? 使用nmap对靶机进行全端口TCP脚本、服务扫描: nmap -sC -sV -T4 -p- {TARGET_IP} 可以看到靶机共开放TCP端口2个&…...

DenseNet算法:口腔癌识别
本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 DenseNet算法结构 其基本思路与ResNet一致,但是它建立的是前面所有层和后面层的密集连接,它的另一大特色是通过特征在channel上的连接来实现特征重用。 二 设计理念 三…...

828华为云征文 | 利用FIO工具测试Flexus云服务器X实例存储性能
目录 一、Flexus云服务器X实例概要 1.1 Flexus云服务器X实例摘要 1.2 产品特点 1.3 存储方面性能 1.4 测评服务器规格 二、FIO工具 2.1 安装部署FIO 2.2 主要性能指标概要 三、进行压测 3.1 测试全盘随机读IO延迟 3.2 测试全盘随机写IO延迟 3.3 测试随机读IOPS 3.4…...

Pikachu-File Inclusion- 本地文件包含
前端每次挑选篮球明星,都会通过get请求,传了文件名,把页面展示出来,由于文件名时前端传给后台;并且查看源码,没有对参数做限制; 尝试直接从前端修改filename 参数; filename../../../../../../…...

linux基础 超级笔记
1.Linux系统的组成 Linux系统内核:提供系统最核心的功能,如软硬件和资源调度。 系统及应用程序:文件、任务管理器。 2.Linux发行版 通过修改内核代码自行集成系统程序,即封装。比如Ubuntu和centos这种。不过基础命令是完全相…...

Python——异常处理机制
Python 异常处理机制 Python异常与异常处理机制针对 Traceback 的解读try-except-else-finallyexcept语句except语句的机制在 except 语句中引用当前被处理的 Python 异常 finally语句finally语句执行后才能抛出未被处理的异常finally中执行return会导致异常丢失 raise 语句rai…...

社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例
摘要:本文探讨社群团购中的用户黏性价值,分析其与传统团购网站的区别,并阐述开源小程序多商户AI智能名片商城源码在增强社群团购用户黏性方面可能发挥的作用。 一、引言 在当今的商业环境中,社群团购逐渐成为一种重要的营销模式。…...

基于php的民宿预订管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...

java 从基础到入门 到架构师所需要学习的路线
java是一种广泛使用的编程语言,可以应用于多种平台和应用程序。下面是一个从基础到入门,再到架构师所要掌握的Java学习路线的详细列举: 学习Java基础知识: 理解面向对象编程的概念,如类、对象、继承、多态等。 学习Ja…...

【吊打面试官系列-MySQL面试题】什么叫视图?游标是什么?
大家好,我是锋哥。今天分享关于【什么叫视图?游标是什么?】面试题,希望对大家有帮助; 什么叫视图?游标是什么? 视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增&#…...

项目管理-信息技术发展
1、计算机软硬件 2、计算机网络 1)定义 2)分类:PAN LAN MAN WAN 公用网 专用网 3)网络协议 语法 语义 时许 4)网络标准协议 7层 5)IEEE 802 规范 6)TCP/IP 协议 7) SDN 软件定义网…...

异常处理【C++提升】(基本思想,重要概念,异常处理的函数机制、异常机制,栈解旋......你想要的全都有)
更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: C系列语法知识_Stark、的博客-CSDN博客 座右铭:梦想是一盏明灯,照亮我们前行的路,无论风雨多大,我们都要坚持不懈。 异…...

基于springboot vue 电影推荐系统
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…...

八、特殊类型异常机制
特殊类型&异常机制 数据类型枚举类型匿名类、单例类和伴生对象匿名类单例类伴生对象 委托模式密封类型异常机制异常的使用异常的处理 数据类型 对于那些只需要保存数据的类型,我们常常需要为其重写toString、equals等函数,针对于这种情况下…...

虾皮Shopee Android面试题及参考答案
HTTP 状态码有哪些? HTTP 状态码是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。主要分为五大类: 1xx 信息性状态码:表示服务器正在处理请求,这些状态码是临时的响应,主要用于告诉客户端请求已经被接收,正在处理中。例如,100 Continue 表示客户端应当继续…...

Docker Compose 部署大模型GPU集群:高效分配与管理算力资源
Docker Compose 部署大模型GPU集群:高效分配与管理算力资源 文章目录 Docker Compose 部署大模型GPU集群:高效分配与管理算力资源一 Dockerfile 编写二 Dockerfile 示例三 分配GPU资源1)GPU分配:指定count2)GPU分配&am…...

直立行走机器人技术概述
直立行走机器人技术作为现代机器人领域的重要分支,结合了机械工程、计算机科学、人工智能、传感技术和动态控制等领域的最新研究成果。随着技术的不断发展,直立行走机器人在救灾、医疗、家庭辅助等领域开始发挥重要作用。本文旨在对直立行走机器人的相关…...

【Linux】wsl虚拟机时间和实际时间不符合
本文首发于 ❄️慕雪的寒舍 偶然遇到了这个问题,触发原因是电脑在开启wsl的情况下进入了 休眠 模式,且在无网络情况下几天不使用。 然后开启wsl,发现git log显示最新commit的提交时间是明天,给我吓一跳,然后才发现原来…...

初识算法 · 滑动窗口(1)
目录 前言: 长度最小的子数组 题目解析 算法原理 算法编写 无重复长度的最小字符串 题目解析 算法原理 算法编写 前言: 本文开始,介绍的是滑动窗口算法类型的题目,滑动窗口本质上其实也是双指针,但是呢&#…...

nginx和gateway的关系和区别
在技术选型时,选择 Nginx 和 Spring Cloud Gateway(或简称为 Gateway)主要取决于具体应用场景和技术需求。下面是两者的一些关键差异和适用场景。 一、Nginx 概念 Nginx 是一个高性能的 Web 服务器和反向代理服务器,常被用作静…...

【算法笔记】滑动窗口算法原理深度剖析
【算法笔记】滑动窗口算法原理深度剖析 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】滑动窗口算法原理深度剖析前言一.长度最小的子数组1.1题目1.2思路分析1.3算法流程1.4正确性证明1.5代码实现 二.无重复…...

4S店4S店客户管理系统小程序(lw+演示+源码+运行)
社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非…...

rabbitMq------连接管理模块
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言管理的字段连接内存管理对象 前言 我们的网络通信框架使用的muduo库,而在mudu库中是已经有了连接的概念,但是我们呢还有一个信道的概念…...