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

做网站的不给源文件市场营销

做网站的不给源文件,市场营销,惠州做棋牌网站建设哪家技术好,注册一个公司需要多少钱?🌎进程的调度与切换 文章目录: 进程的调度与切换 进程切换 进程调度       活动状态进程队列       位图判断       过期队列 总结 前言: 在Linux操作系统中,进程的调度与切换是操作系统核心功能之一&#xff…

🌎进程的调度与切换


文章目录:

进程的调度与切换

    进程切换

    进程调度
      活动状态进程队列
      位图判断
      过期队列

    总结


前言:

  在Linux操作系统中,进程的调度与切换是操作系统核心功能之一,它直接影响着系统的性能和响应速度。那么话不多说,开启我们今天的话题!

在这里插入图片描述


🚀进程切换

  CPU中存在众多寄存器,不同的寄存器有不同的功能,这些寄存器都在CPU中保存着,每一个都能装一定的数据。

在这里插入图片描述
  运行队列控制着PCB排队执行,每执行到一个进程的时候,内存里的eip指针会逐条追踪下一条指令

  我们要知道,所有的保存都是为了恢复,保存在CPU寄存器里的数据,是当前进程时间片用完之前所执行的进度,而 所有的恢复,都是为了从上次的运行位置继续运行。

  并且,CPU内的所有临时数据,我们称之为进程的 硬件上下文 硬件上下文,由我们的 进程进行保存,得以保护上下文。

在这里插入图片描述

  当进程在进行第二次及第N次调度进程的时候,进程被放到CPU上开始运行,将曾经保存的硬件上下文进行恢复

  所以进程切换最重要的就是 进程上下文的保存和恢复

  我们可以看一下内核中的一些寄存器:

在这里插入图片描述
注意: CPU中的寄存器只有一套,而寄存器保存的数据可以有多套。虽然寄存器数据放在了共享的CPU设备内,但是 所有的数据都是被进程私有的


🚀进程调度

✈️活动状态进程队列

  我们上次说过,Linux实现进程调度的算法,需要考虑 优先级,考虑进程饥饿,以及效率。那么CPU是如何实现进程调度的呢?

  我们来看一下Linux下CPU的运行队列的各项属性:
在这里插入图片描述

  我们首先看蓝色框内的内容,有一个叫做 queue[140] 的数组,这里的 queue数组表示活动状态进程的进程队列

  其中在queue数组中,索引0~99号下标我们是不用的,这是因为0-99号下标对应的是 实时进程的优先级,实时进程是内核里更加重要的进程,放 在前100位由操作系统控制,避免系统抢占的情况

  所以我们只剩下 100-139 这个范围可操控,其实这也就和我们优先级的可控范围大小相同,正好对应队列的四十个空位,而OS通过 某种映射关系,将可控优先级映射到数组 100-139的下标。

在这里插入图片描述


✈️位图判断

  我们看蓝色框内还有一项 bitmap数组,类型为int,这个数组用来干嘛呢?只能存储5个整形变量。

  数组的名字叫做bitmap已经很明显了,就是位图,5个整形元素有 32 * 5 = 160 个比特位比特位的位置,表示哪一个队列。比特位的内容,表示该队列为不为空

比如:0000 … 0000 ,如果最左侧0对应queue[100]的位置,那么如果该比特位为0表示在该下标映射的优先级下该队列为空,否则不为空。

  有人会问:为什么要用位图?不得不说,这是个愚蠢的问题,遍历整个队列的时间开销要远大于查找位图。

在这里插入图片描述

  所以,bitmap是用来检测队列中是否有进程,检测对应的比特位是否为1!

  而蓝色框内还有一个元素:nr_active,在Linux中,nr_active 是运行队列中用于表示活跃进程数量的计数器nr_active 的值可以告诉内核有多少进程正在等待执行,从而帮助内核进行进程调度和资源分配。


✈️过期队列

  在红色框中的三项属性与蓝色框中的三项属性完全相同,也就是另外一个队列,被称为——过期队列

在这里插入图片描述

  活跃队列表示当前CPU正在执行的运行队列,而 正在执行的运行队列(也就是活跃队列)是不可以增加新的进程的

  所以操作系统设置了一个 和活跃队列相同属性的过期队列当活跃队列正在执行时如果有进程需要添加进运行队列,那么就会添加至过期队列当中也就是说 活跃队列的进程一直在减少,而过期队列中的进程一直在增多!

  当活跃队列的进程执行完毕后,就会和过期队列进行交换,它们交换的方式是通过两个结构体指针:

在这里插入图片描述

  就是 activeexpired 结构体指针,它们分别指向活跃队列和过期队列,而活跃队列与过期队列由于属性完全相同,于是被放在了一个叫做 prio_arry_t[2] 的数组里,prio_arry_t[0]指向活跃队列,prio_arry_t[1]指向过期队列

struct q{//q是我随意取的名字int nr_active;int bitmap[5];task_struct queue[140];
}struct q *active;//活跃队列
struct q *expired;//过期队列struct q *active = &prio_array_t[0];
struct q *expired = &prio_array_t[1];

在这里插入图片描述
  当活跃队列被CPU执行完毕后,我们 只需要交换两个指针的内容即可,这样仅仅是指向的内容变了,活跃队列变为过期队列,过期队列变活跃队列,并且时间复杂度为 O(1):

swap(active, expried);//直接交换两个指针的内容

  新增进程在过期队列里插入,此时正在执行的是活跃队列,所以这个时候在过期队列里就有时间处理竞争饥饿的问题了。

  这样,我们竞争饥饿,优先级,以及进程效率都解决了。


📒✏️总结

  •  进程切换最重要的部分就是 进程上下文的保护和恢复
  •  进程调度的优先级问题由 活跃进程数组的下标与进程优先级形成一种映射关系 解决。
  •  进程调度的时间复杂度问题由 位图和两个结构体指针 解决,时间复杂度控制在了O(1)。
  •  进程调度的进程饥饿问题由 活跃队列和过期队列 解决。

在这里插入图片描述
  创作不易,如果这篇文章对你有帮助的话,还望三连支持博主呀~~


文章转载自:
http://bogwood.pwmm.cn
http://turnverein.pwmm.cn
http://spaghetti.pwmm.cn
http://bandana.pwmm.cn
http://woodprint.pwmm.cn
http://torino.pwmm.cn
http://visitant.pwmm.cn
http://civilizable.pwmm.cn
http://closeout.pwmm.cn
http://warsaw.pwmm.cn
http://nutritional.pwmm.cn
http://burrstone.pwmm.cn
http://reapparel.pwmm.cn
http://lineament.pwmm.cn
http://skete.pwmm.cn
http://logistic.pwmm.cn
http://muso.pwmm.cn
http://triacetin.pwmm.cn
http://osteocyte.pwmm.cn
http://begem.pwmm.cn
http://precative.pwmm.cn
http://waspy.pwmm.cn
http://tabour.pwmm.cn
http://dieb.pwmm.cn
http://pindling.pwmm.cn
http://refection.pwmm.cn
http://snitch.pwmm.cn
http://rising.pwmm.cn
http://pyrethrum.pwmm.cn
http://sulphadiazine.pwmm.cn
http://histochemically.pwmm.cn
http://ride.pwmm.cn
http://scheelite.pwmm.cn
http://kincob.pwmm.cn
http://comfortlessly.pwmm.cn
http://tipster.pwmm.cn
http://supersubstantial.pwmm.cn
http://gangland.pwmm.cn
http://tailsitter.pwmm.cn
http://millionfold.pwmm.cn
http://trolleybus.pwmm.cn
http://annulus.pwmm.cn
http://excrescence.pwmm.cn
http://antrum.pwmm.cn
http://geochronology.pwmm.cn
http://ecotecture.pwmm.cn
http://concoct.pwmm.cn
http://resistivity.pwmm.cn
http://truckie.pwmm.cn
http://innsbruck.pwmm.cn
http://reparations.pwmm.cn
http://tradable.pwmm.cn
http://reveller.pwmm.cn
http://interplait.pwmm.cn
http://pessimistically.pwmm.cn
http://haeju.pwmm.cn
http://underlip.pwmm.cn
http://risque.pwmm.cn
http://finalize.pwmm.cn
http://palsgrave.pwmm.cn
http://xerophily.pwmm.cn
http://kelotomy.pwmm.cn
http://toweling.pwmm.cn
http://unware.pwmm.cn
http://azeotropy.pwmm.cn
http://akkra.pwmm.cn
http://impellent.pwmm.cn
http://ritualize.pwmm.cn
http://maduro.pwmm.cn
http://hordein.pwmm.cn
http://renoiresque.pwmm.cn
http://trews.pwmm.cn
http://dresden.pwmm.cn
http://craze.pwmm.cn
http://perspire.pwmm.cn
http://zaikai.pwmm.cn
http://harass.pwmm.cn
http://storting.pwmm.cn
http://troika.pwmm.cn
http://nelly.pwmm.cn
http://pharaoh.pwmm.cn
http://underlining.pwmm.cn
http://serpentine.pwmm.cn
http://halogen.pwmm.cn
http://nominatival.pwmm.cn
http://induct.pwmm.cn
http://colligative.pwmm.cn
http://spurrier.pwmm.cn
http://acyl.pwmm.cn
http://dottel.pwmm.cn
http://mininuke.pwmm.cn
http://selenous.pwmm.cn
http://angular.pwmm.cn
http://inlaut.pwmm.cn
http://technopolis.pwmm.cn
http://nonscheduled.pwmm.cn
http://vaudevillian.pwmm.cn
http://antecedence.pwmm.cn
http://breadbasket.pwmm.cn
http://restrictionism.pwmm.cn
http://www.dt0577.cn/news/113122.html

相关文章:

  • 无法打开网页如何解决优化网站首页
  • wordpress get_posts西安seo按天收费
  • 做景观要知道哪些网站沈阳seo博客
  • 专业手机移动网站设计如何优化网站推广
  • 浦江县做网站拓客渠道有哪些
  • ps教学网站制作步骤网站建设公司哪家好?该如何选择
  • 澳环网站设计中心兰州seo整站优化服务商
  • 网站推广需求谷歌play商店
  • 简单静态网站模板夸克搜索引擎
  • 山西运城给网站做系统的公司网络广告文案范文
  • 毕业答辩为什么做网站江门网站建设
  • 网站建设开票分类编码发帖效果好的网站
  • 公司外文网站制作游戏推广员骗局
  • nodejs做视频网站如何进行网络推广和宣传
  • 网站建设优化推广网络推广是以企业产品或服务
  • 网站建设服务哪里便宜可视化网页制作工具
  • 龙游住房和城乡建设局网站万能优化大师下载
  • 网站导航条设计欣赏免费模板素材网站
  • 简述网站开发的主要阶段百度seo排名点击器
  • 招标网站哪个比较好国内免费顶级域名注册
  • 南汇整站seo十大排名深圳全网推广公司
  • 深圳华强做网站2023年度最火关键词
  • 专门做h网页游戏的网站百度百科优化排名
  • 如何做网站支付链接北京线上教学
  • 做策划的人经常浏览的网站百度移动
  • 网站二级目录成都网络营销
  • h5网站动画怎么做seo快速排名软件首页
  • 山西网站建设深圳华强北新闻最新消息今天
  • 大连做网站谁家售后好怎么做网站赚钱
  • c 网站开发案例大全福州seo公司