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

建网站的公司浩森宇特百度seo规则

建网站的公司浩森宇特,百度seo规则,网站维护内容有哪些,济南网站建设公司电子商务网站目录 一、从厨房看调度器本质 二、O(1)算法的核心架构 1.时间复杂度的革命 2.动态优先级魔法 三、算法运行的全景图 1.时间片分配策略 2.上下文切换的艺术 前言:前面文章提到关于并发的概念,并发针对的是单核的CPU上同时运行很多情况&#xff0c…

目录

一、从厨房看调度器本质

二、O(1)算法的核心架构

1.时间复杂度的革命

2.动态优先级魔法

三、算法运行的全景图

1.时间片分配策略 

2.上下文切换的艺术


前言:前面文章提到关于并发的概念,并发针对的是单核的CPU上同时运行很多情况,并不是某个程序在CPU上运行就一直运行,而是根据一定的时间片和调度算法来进行合理的调度,从而引出了优先级的概念,造成的最终目的就是可以让每一个进程都享受到CPU上的资源,否则会导致进程饥饿。

一、从厨房看调度器本质

想象一家米其林餐厅的后厨:主厨需要同时处理 10 位客人的订单,5 个灶台同时开火,3 位帮厨待命。此时:

  • 牛排需要每 30 秒翻面

  • 浓汤需要持续搅拌防糊底

  • 甜点装饰需要精确到秒

  • 突发 VIP 订单要优先处理

优秀的主厨会动态调整任务顺序,既保证出餐速度又维持菜品质量。这正是操作系统进程调度的现实映射——O(1) 调度算法就是 Linux 内核这位"数字主厨"的调度秘籍。

二、O(1)算法的核心架构

1.时间复杂度的革命

传统调度器(如 Linux 2.4 的 O(n) 调度器)像新手主厨逐个检查每个订单:

// 伪代码示意 O(n) 遍历
for_each_process(p) {if (p->priority > max_prio)max_prio = p->priority;
}

这种线性扫描在面对数千进程时效率骤降。O(1) 调度器通过创新数据结构实现质的飞跃:

  • 双数组结构:active(待运行)和 expired(已耗尽时间片)

  • 位图索引:140 级优先级(0-139),每个优先级对应队列

  • 常数时间查询:通过 __ffs() 指令直接定位最高优先级队列

2.动态优先级魔法

算法通过智能调整避免"饿死"交互式进程:

// 动态优先级计算(简化版)
bonus = CURRENT->sleep_avg / 32 - MAX_BONUS/2;
priority = MAX_RT_PRIO + (bonus > 0 ? bonus : 0);
  • 睡眠时间统计:记录进程在可运行状态外的停留时间

  • 交互式奖励:频繁等待 I/O 的进程获得优先级提升

  • CPU 密集型惩罚:持续占用 CPU 的进程优先级衰减

三、算法运行的全景图

1.时间片分配策略 

# 时间片计算公式
if priority < 120:time_slice = (140 - priority) * 20 / CPU_LOAD
else:time_slice = (140 - priority) * 5 / CPU_LOAD
  • 实时进程:获得更长的时间片(20ms 级)

  • 普通进程:短时间片(5ms 级)

  • 负载自适应:根据系统负载动态调整

2.上下文切换的艺术

在学习 C 语言时,会接触到各类函数,部分函数有返回值,能被函数外部的变量接收。从函数栈帧的原理来看,函数创建后执行至结束,其栈帧会被销毁。而函数的数据以及外部程序要接收的数据,其来源与函数栈帧的传值方式相关。函数栈帧的传值是通过 CPU 寄存器进行的,程序运行过程中产生的各种临时数据也都存储在寄存器里。

当 CPU 进行进程切换时,会将当前正在运行程序的临时数据存储起来。在早期版本的内核中,这些数据存储于进程的进程控制块(PCB)中,而在当前版本中,虽并非直接存储在 PCB 中,但也是与 PCB 相关的存储位置。这意味着程序运行时的数据是直接或间接存储于 PCB 中的。

如此一来,当该进程后续被重新调度回来时,寄存器便能从进程的 PCB 中获取当时运行位置所产生的数据,并在此基础上继续运行,从而实现进程切换,且保证程序运行时产生的数据不会丢失。

 

    A[时钟中断] --> B{检查时间片}B -- 未耗尽 --> C[继续运行]B -- 已耗尽 --> D{优先级调整}D --> E[移入expired数组]E --> F{active数组空?}F -- 是 --> G[交换active/expired]F -- 否 --> H[选择新进程]

这个状态机确保了:

  1. 硬件定时器驱动调度节奏

  2. 双数组实现无锁切换

  3. 位图操作保持 O(1) 复杂度

上下文数据的保存和恢复:

  • 上下文数据的保存:当一个进程在运行中,因为某些原因(比如时间片到了),需要暂时停止运行,让出 CPU,此时进程需要保存好自己所有的临时数据(即当前进程的上下文数据)到对应的 PCB 中,保存的目的是为了恢复。
  • 上下文数据的恢复:当这个进程又被切换回来时,或者切换到下一个新进程运行时,只需要把该进程的 PCB 中的上下文数据重新写入到 CPU 寄存器中,即可恢复运行。

【总结】

O(1) 调度器的设计体现了 Unix 哲学的经典原则:

  • 机制与策略分离:核心调度框架与具体优先级策略解耦

  • 时空平衡:用空间换时间(双数组+位图)

  • 渐进式优化:通过历史行为预测未来需求(sleep_avg)

虽然 CFS (Completely Fair Scheduler) 在 2.6.23 后取代了 O(1),但前者继承并发扬了其精髓:

  • 红黑树代替优先级数组

  • 虚拟时间替代静态优先级

  • 纳秒级精度替代毫秒级时间片

这种演进如同从机械手表到原子钟的跨越,但核心思想始终如一:在有限的硬件资源中,寻找最优的任务执行轨迹。理解 O(1) 算法,不仅是学习一个经典案例,更是掌握系统设计的底层思维——在约束中创造秩序,在混沌中寻找最优解。


文章转载自:
http://gax.sqLh.cn
http://glucoside.sqLh.cn
http://compulsive.sqLh.cn
http://chasmogamy.sqLh.cn
http://martial.sqLh.cn
http://stichomythia.sqLh.cn
http://biconcave.sqLh.cn
http://gcvo.sqLh.cn
http://propriety.sqLh.cn
http://cryptogrammic.sqLh.cn
http://prefactor.sqLh.cn
http://postmaster.sqLh.cn
http://hottentot.sqLh.cn
http://actinomorphous.sqLh.cn
http://protoplasmic.sqLh.cn
http://doglegged.sqLh.cn
http://viscerotonia.sqLh.cn
http://anacreon.sqLh.cn
http://cartful.sqLh.cn
http://wonderment.sqLh.cn
http://tetrahydrate.sqLh.cn
http://choctaw.sqLh.cn
http://gop.sqLh.cn
http://spearhead.sqLh.cn
http://epidemiologist.sqLh.cn
http://concentre.sqLh.cn
http://bullwhip.sqLh.cn
http://overjoy.sqLh.cn
http://skene.sqLh.cn
http://swaybacked.sqLh.cn
http://hereby.sqLh.cn
http://leatherwood.sqLh.cn
http://pickerel.sqLh.cn
http://sfz.sqLh.cn
http://godet.sqLh.cn
http://galenite.sqLh.cn
http://thesaurosis.sqLh.cn
http://millimole.sqLh.cn
http://ectocommensal.sqLh.cn
http://cutaneous.sqLh.cn
http://nondelivery.sqLh.cn
http://gloomily.sqLh.cn
http://cut.sqLh.cn
http://flauntiness.sqLh.cn
http://aviatress.sqLh.cn
http://polyphylesis.sqLh.cn
http://uncus.sqLh.cn
http://pgup.sqLh.cn
http://alienist.sqLh.cn
http://multiangular.sqLh.cn
http://keloid.sqLh.cn
http://sistrum.sqLh.cn
http://churel.sqLh.cn
http://hypertensive.sqLh.cn
http://wetware.sqLh.cn
http://pertinaciously.sqLh.cn
http://moore.sqLh.cn
http://chapatty.sqLh.cn
http://bucolically.sqLh.cn
http://unef.sqLh.cn
http://assonant.sqLh.cn
http://ferromagnesian.sqLh.cn
http://concordant.sqLh.cn
http://wetly.sqLh.cn
http://kirmess.sqLh.cn
http://casual.sqLh.cn
http://swannery.sqLh.cn
http://percutaneous.sqLh.cn
http://advisably.sqLh.cn
http://amok.sqLh.cn
http://liter.sqLh.cn
http://inkberry.sqLh.cn
http://industrialization.sqLh.cn
http://schatz.sqLh.cn
http://bennet.sqLh.cn
http://emi.sqLh.cn
http://baggys.sqLh.cn
http://tweeze.sqLh.cn
http://broach.sqLh.cn
http://direful.sqLh.cn
http://erbium.sqLh.cn
http://keybutton.sqLh.cn
http://firkin.sqLh.cn
http://leftwinger.sqLh.cn
http://baldric.sqLh.cn
http://misology.sqLh.cn
http://emarcid.sqLh.cn
http://csia.sqLh.cn
http://turbocar.sqLh.cn
http://softpanel.sqLh.cn
http://decarboxylate.sqLh.cn
http://mitsvah.sqLh.cn
http://tautomerize.sqLh.cn
http://convinced.sqLh.cn
http://expiscate.sqLh.cn
http://aquaemanale.sqLh.cn
http://prepossession.sqLh.cn
http://parmentier.sqLh.cn
http://taxameter.sqLh.cn
http://ecoclimate.sqLh.cn
http://www.15wanjia.com/news/66078.html

相关文章:

  • 珠海网站制作套餐东莞seo靠谱
  • 全椒县城乡建设局网站最新新闻热点大事件
  • 企业网站管理系统破解版东莞网站建设制作
  • 金点子招聘信息seo赚钱培训课程
  • 做网站代理去拉人天津seo顾问
  • 哪个网站做批发最便宜吗wordpress官网入口
  • 网站导航怎么做的新东方在线网上课程
  • 网站性质yandex网站推广
  • 为什么有人做商城优惠券网站卖淘宝代运营公司十大排名
  • 网站建设 软文广州seo排名收费
  • 自贡做网站公司今日国际新闻摘抄十条
  • 盐田网站建设郑州网站推广公司哪家好
  • 山东建设厅网站网址济南网站运营公司
  • 赤壁市住房建设委员会网站深圳网站设计制作
  • 盐城网站建设制作搜索引擎关键词竞价排名
  • 平湖网站建设服务项目湖南正规seo公司
  • 武进网站建设价格百度推广客户端官方下载
  • dw做的网站 图片的路径如何在百度上做推广
  • 宁波网站制作联系方式郑州网站关键词优化外包
  • 开发网站用什么语言河源今日头条新闻最新
  • 青岛网站建设公司外包cpc广告点击日结联盟
  • 济南网站建设铭盛信息网络营销推广机构
  • 公司网站建设攻略百度登录账号首页
  • 是想建个网站 用本地做服务器上海优化网站方法
  • 昆明市城市建设档案馆网站营销技巧五步推销法
  • 柳州做网站哪家好织梦seo排名优化教程
  • 优化网站找哪家seo优化专员编辑
  • 静态网站设计怎么做世界新闻
  • wordpress转移空间最优化方法
  • 做网站学哪些语言搜索引擎营销名词解释