进程切换和是Linux2.6内核中进程调度的算法

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

进程切换

进程并发就需要做到进程切换,一个CPU一套寄存器但是需要运行的进程有很多,CPU内是内置的有时间片的,当时间片到之后,上面的进程就会被从CPU上剥离下来,开始调度下一个进程,所以被剥离下来的进程就需要保存CPU中寄存器的内容,然后等到下一次被调度的时候再把内容放上去,接着执行,寄存器上的内容不需要清零,直接进行覆盖就行,因为下一个进程来的时候,这时寄存器的内容是上一个进程的并且已经保存带走了。所以进程在被调度的时候是会进行上下文保护的,不然下一次调度就会不知道从哪里开始。这就是进程切换。

O(1)调度算法

在这里插入图片描述
我们可以看到运行队列有140个位置,每个位置就表示一个优先级,0 ~ 99我们不用考虑,而100 ~ 139是普通优先级,正好对用我们普通用户可以修改的40个优先级。每一个需要运行的进程都会被放在运行队列中,我们会发现其中有两个运行队列,这是怎么回事?
两个运行队列我们分为活跃队列和过期队列,其中void* active 指向的是活跃队列,void* expired指向的是过期队列,CPU只调度活跃队列,这样做有什么好处,因为CPU要保证每个进程较为公平的都能够得到调度,如果只有一个队列的话,如果已经在调度100位置的优先级了,此时如果前面插入了一个优先级高的进程,那CPU就得拐回去调度它,如果加入的优先级高的进程很多的话,会导致优先级低的一直无法导致调度,从而导致进程饥饿问题,所以当一个进程没有别调度完,就去过期队列排队,所以活跃队列的进程一定会越来越少,如果CPU把活跃队列中的所有优先级的进程都调度完了,就进行swap(active,expired)操作,然后持续进行这样的操作,来保证每个进程进行较为公平的调度。

我们看到还有一个bitmap的东西,它其实是一个int的数组,可以表示160个比特位,所以就可以映射每个优先级是否有进程,利用这样的位图可以大大的提高查找非空队列的效率。

nr_active就表示这个整个队列queue总共有多少个运行状态的进程。

那么今天的分享就到这里了,有什么不懂得可以私信博主,或者添加博主的微信,欢迎交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

发票系统对接诺诺平台

诺诺平台判断设备不在线,导致开票失败 代码方面优化:调用接口的时候:是否先调用在线状态检测接口,确认开票设备是在线的状态 ,在调用诺诺平台,不在线直接拦截;例如:这个原理就类似于…

DIYgif表情包怎么做?gif表情包制作方法分享

Gif表情包是我们生活交流中必不可少的一种方式,能够表达自己的心情,也能够调节气氛。平时我们的gif表情包都是从网上下载或是别人发送的,那么我们怎么自己DIYgif表情包呢?这时候,用qq表情在线制作(https://…

在IntelliJ IDEA中集成SSM项目

SSM项目:springMVC为控制器、spring 为事务层、 MyBatis 负责持久 首先看下集成后项目结构: 1、打开IntelliJ IDEA,点击 "File" -> "New" -> "Project"。 点击Finish,此时我们就已经创建了一…

图书信息管理系统

1.程序组成: 源文件:test.cpp,源.cpp 头文件:test.h 2.功能实现: 系统以菜单方式工作,图书信息录入功能,图书信息浏览功能,查询功能删除功能价格排序修改图书信息程序加密 &…

手机更换社保证照片教程来啦,速速查收!

📌线上直接搞定很简单! 没有申领社保卡的姐妹们可以自己申领! 已有社保卡的姐妹可以先挂失然后再申领! 🙌教程 线上更换社保证: 1️⃣打开「掌上12333」,找到电子社保卡 2️⃣点击社保卡申领&am…

关于影视字幕翻译哪个公司比较专业?

现如今,影视剧作为跨文化交流的重要桥梁,正日益受到中国观众的热爱。因此也催生了影视字幕翻译的需求。那么,如何做好影视作品字幕翻译,哪个公司在影视字幕英译中更为专业? 我们知道,字幕翻译是涉外影视作品…

接口测试用例设计 - 实战篇

一.接口测试流程 1.需求讨论 2.需求评审 3.场景设计 4.数据准备 5.执行 二.分析接口文档中哪些元素 1.接口名称 2.接口地址 3.支持格式 4&#xff0…

Spring IOC 源码分析

​ 什么是 IoC IoC (Inversion of control )控制反转。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。 例如:现有类A依赖于类B。传统的开发方式 :往往是在类A中手动通过new关键字…

C++设计模式

目录 一.概念 1.设计模式概念 2.底层思维与抽象思维 (1)底层思维 (2)抽象思维 3.面向对象 4.软件设计复杂性 (1)软件设计复杂的根本原因 (2)解决复杂性的方法 ① 分解 ②…

C++ Webserver从零开始:基础知识(四)——I/O复用

目录 前言 select系统调用 poll系统调用 epoll系统调用 epoll_create epoll_ctl epoll_wait LT和ET模式 EPOLLONESHOT事件 epoll和select/poll的区别 事件集处理方式 实现原理和效率 其他区别 前言 在第三章中我们大概地讲解了什么是I/O复用,即&#xf…

低聚糖市场分析:预计2029年将达到26亿美元

低聚糖又名寡糖( oligosaccharide)或少糖类,是一种新型功能性糖源,低聚糖集营养、保健、食疗于一体,广泛应用于食品、保健品、饮料、医药、饲料添加剂等领域。 在我国由于低聚糖行业的技术飞速进步,收率和质量明显提高&#xff0…

React关于类组件ts使用

类组件中定义了两个接口的类型, 分别约束自身数据state对象 与父组件通过props传递进来的数据。 在父组件使用子组件 并传递参数;

guns项目 Failed to register @ServerEndpoint class 问题

问题发生所在 socket-business-websocket-7.2.4.jar tomcat发布测试的时候报Failed to register ServerEndpoint class ,查询jar报主要是WebSocketServer 类加载有问题,把jar报中该类注掉,重新实现这个类,删除Component注解问题&…

uibot-native-message-plug5.1.2_0.zip

网上下载的5.1.1 不好用,于是自己找了一个测试没有问题,支持360和chrome 该扩展安装后,使用uibot creator 很容易,不需要敲击代码做爬虫类自动化程序。

当心!recover成为”恶魔“--Go中的容错处理进阶

前言: Go语言本身没有try/catch异常机制,因为Go的三位创始人在设计Go语言之出觉得这样写会变得很繁琐。 但因为:Go本身支持函数多返回值,因此在写函数的时候,可以优先考虑容错处理。 接下来,我们来看看在G…

不小心删了u盘里的word文档怎么恢复(含三种恢复方法)

在日常生活和工作中,U盘因其便携性而成为存储和传输数据的重要工具。然而,有时会发生误删重要文件的情况,如不小心删了U盘里的Word文档。面对这种情况,许多用户感到束手无策。本文将为您介绍如何恢复不小心删除的U盘Word文档&…

Docker从入门到精通

系列文章目录 docker常见用法之镜像构建1 docker 系列文章目录一、镜像的分层结构二、容器的用法三、镜像的构建3.1docker commit 构建新镜像三部曲3.1.1运行容器并且修改容器3.1.2提交容器3.1.2删除docker镜像 3.2Dockerfile构建镜像 系列文章目录一、 Dockerfile写法详解1.1…

基于Mcrosemi M2S090T FPGA 的 imx991 SWIR的SLVS解码(一)

目录 一、平台介绍 二、器件的简介 1、imx991 SWIR Image Sensor 2、M2S090T 三、工程 1、imx991寄存器配置 一、平台介绍 工程开发平台:Libero Version:20231.0.6 Release:v2023.1 文本编辑器:Sublime text3 二、器件的简介 1、imx991 SWIR I…

我自己总结记忆的23种设计模式

1, 对23种设计模式,大家的第一个印象就是抽象繁琐,记不住!!不常用?? 其实设计模式是非常有用的,大家只要理解设计模式了,思想上就能有质的飞跃! 但是&#…

RFID服装物流零售管理系统设计解决方案

一、方案概述 本方案是广东航连科技根据服装企业客户的需求量身定制的解决方案,该方案综合了RFID技术、网络技术、计算机技术、数据库技术和无线通信技术,结合服装企业的实际需求以及航连科技的丰富经验和独特技术,提出了以下基于RFID的物流…