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

Linux进程调度和进程切换

并行(Parallel)

含义:并行是指多个任务在同一时刻同时执行。

硬件要求:需要多个处理器(如多核CPU)或者多台计算设备来实现,这些执行单元能够真正地同时处理不同的任务。例如,一个具有4个核心的CPU可以同时执行4个不同的任务,每个核心负责一个任务的执行。

执行特点:任务之间真正地同时进行,不存在资源共享带来的相互等待,能够极大地提高计算速度,适用于计算密集型任务。

并发(Concurrent)

含义:并发是指多个任务在宏观上看起来是同时执行的,但在微观上,这些任务是交替执行的。

实现方式:在单处理器(单核CPU)系统中,通过操作系统的调度机制,快速地在多个任务之间切换,使得每个任务都能得到一定的执行时间片,从而给人一种同时执行的感觉。例如,在一个单核CPU的计算机上同时打开浏览器、音乐播放器和文档编辑器,操作系统通过调度使这三个程序交替运行。

应用场景:可以有效地利用系统资源,提高系统的资源利用率和响应速度,适用于I/O密集型任务,因为在I/O操作(如磁盘读写、网络传输)期间,CPU可以切换去执行其他任务。

每一个进程都要有自己的时间片,时间变到了进程就要切换。Linux是基于时间片进行调度轮转的一个进程的时间片到了。不一定跑完可以在任何地方都可以重新被调度和切换。

Linux中的进程调度

目标与原则

目标是在多个进程间合理分配CPU资源,提高系统的整体效率、响应速度和公平性。

遵循一定的原则,如保证系统的实时性需求(对于实时进程)、提高系统吞吐量、满足用户交互体验等。

调度算法

主要采用完全公平调度算法(CFS)。CFS基于虚拟运行时间(vruntime)概念,每个进程都有自己的vruntime,它与进程的实际运行时间、权重(反映优先级)相关。通过比较vruntime来决定进程的调度顺序,vruntime小的进程优先获得CPU。CFS使用红黑树来管理就绪进程,按照vruntime值进行排序,调度时选择红黑树最左端(vruntime最小)的进程运行。

同时也存在其他调度策略用于特殊进程,如实时进程采用的实时调度策略,以确保对时间敏感的任务能及时执行。

调度时机

进程状态改变时,如从运行态变为阻塞态(例如等待I/O操作),此时需要重新调度其他就绪进程运行。

时间片用完,CFS虽然没有传统意义上的固定时间片,但当一个进程运行一段时间后,其vruntime增长,可能不再是最小,就会触发调度让其他进程运行。

有更高优先级的进程进入就绪队列时,会抢占当前正在运行的低优先级进程的CPU资源而被调度运行。

Linux中的进程切换

 

进程调度的本质就是取指令更新PC指令分析指令执行。

保存当前进程上下文

包括保存程序计数器(PC),它指向当前正在执行的指令地址,保存通用寄存器(如EAX、EBX等)的值,这些寄存器存储着进程运行中的临时数据,还有栈指针(SP)等其他相关寄存器的值。这些信息被保存到当前进程的内核栈中,以便后续恢复进程执行时使用。

切换地址空间相关操作

切换页表,因为不同进程有各自独立的虚拟地址空间到物理地址空间的映射。Linux使用页表来管理这种映射关系,进程切换时要将当前页表切换为下一个要运行进程的页表。

恢复新进程上下文

从新进程的内核栈中恢复之前保存的程序计数器、寄存器的值等信息,使新进程可以从上次中断的地方继续执行,从而完成进程的切换操作。进程切换是有开销的,包括保存和恢复上下文、切换页表等操作所花费的时间,如果进程切换过于频繁会影响系统的性能。

相关文章:

Linux进程调度和进程切换

并行(Parallel) 含义:并行是指多个任务在同一时刻同时执行。 硬件要求:需要多个处理器(如多核CPU)或者多台计算设备来实现,这些执行单元能够真正地同时处理不同的任务。例如,一个具…...

机器学习基本上就是特征工程——《特征工程训练营》

作为机器学习流程的一部分,特征工程是对数据进行转化以提高机器学习性能的艺术。 当前有关机器学习的讨论主要以模型为中心。更应该关注以数据为中心的机器学习方法。 本书旨在介绍流行的特征工程技术,讨论何时以及如何运用这些技术的框架。我发现&…...

Android Framework AMS(01)AMS启动及相关初始化1-4

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容分析过多,因此拆成2个章节,本章节是第一章节&…...

基于基于微信小程序的社区订餐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

[单master节点k8s部署]29.Istio流量管理(五)

测试istio熔断管理。 采用httpbin镜像和fortio镜像,其中httpbin作为服务端,fortio是请求端。这两个的配置yaml文件都在istio的samples/httpbin目录下,fortio的配置文件在samples-client目录下。 [rootmaster httpbin]# ls gateway-api ht…...

Something for 24OI

zyj老师希望我给24OI的同学们写一点东西,虽然感觉我也没有什么先进经验,还是尽力写一些主观的感受吧。 如何平衡文化课和竞赛的关系?不要以牺牲文化课的代价学习竞赛。首先,绝大多数的竞赛同学,或早或晚都会在退役后回…...

【React】事件机制

事件机制 react 基于浏览器的事件机制自身实现了一套事件机制,称为合成事件。比如:onclick -> onClick 获取原生事件:e.nativeEvent onClick 并不会将事件代理函数绑定到真实的 DOM节点上,而是将所有的事件绑定到结构的最外层…...

华为OD的职级与薪资

华为 OD 这几年随着招聘行情的日渐严峻,不少 985 高校出来的学生都开始放宽对"外包"的看法,其中华为 OD 以"待遇断层领先"的姿态成为不少求职者(不得已)的外包首选。 既然如此,我们就好好梳理一下…...

【HTML5】html5开篇基础(4)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...

HTTP【网络】

文章目录 HTTPURL(Uniform Resource Lacator) HTTP协议格式HTTP的方法HTTP的状态码HTTP常见的Header HTTP 超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上 URL(Uniform Resource Lacator) 一资源定位符,也就是通常所说的…...

MQ延迟消息:原理、实现与应用

在现代分布式系统中,消息队列(Message Queue,简称MQ)已经成为实现异步通信、解耦服务和削峰填谷的重要工具。延迟消息(Delayed Message)作为MQ的一种高级特性,允许消息在指定的延迟时间后投递到…...

计算机网络—大端序和小端序

大端序和小端序 大端序(Big-endian)和小端序(Little-endian)是指在多字节数据类型(如整数或浮点数)的存储和表示方式上的不同。以下是关于大端序和小端序的详细解释: 一、定义 大端序&#xf…...

《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测

文章目录 一、Harris 角点检测1.基本思想2.检测步骤3.OpenCV实现 二、SIFT特征检测1. SIFT特征检测的基本原理2. SIFT特征检测的特点3. OpenCV 实现 一、Harris 角点检测 OpenCV中的Harris角点检测是一种基于图像灰度值变化的角点提取算法,它通过计算每个像素点的响…...

rtmp协议转websocketflv的去队列积压

websocket server的优点 websocket server的好处:WebSocket 服务器能够实现实时的数据推送,服务器可以主动向客户端发送数据 1 不需要客户端不断轮询。 2 不需要实现httpserver跨域。 在需要修改协议的时候比较灵活,我们发送数据的时候比较…...

Elasticsearch实战应用:构建高效搜索引擎

在大数据时代,如何高效存储和检索海量信息成为了一个重要课题。Elasticsearch作为一个开源的分布式搜索引擎,以其强大的搜索能力和灵活的扩展性,成为了许多企业和开发者的首选。本文将深入探讨Elasticsearch的实战应用,包括基本概…...

Hive数仓操作(四)

一、Hive 创建表案例一(ARRAY数组类型) 1. 准备数据文件 首先,准备一个名为 stu2.txt 的文件,文件内容示例如下: 1001 Alice fish,cat 1002 Bob dog,rabbit 1003 Charlie bird注意: …...

《C++跨平台开发:突破界限,释放无限可能》

在当今的软件开发领域,跨平台开发已成为一种重要趋势。它允许开发者编写一次代码,然后在多个不同的操作系统和硬件平台上运行,极大地提高了开发效率和软件的可扩展性。而 C作为一种强大的编程语言,也具备实现跨平台开发的能力。本…...

速盾:免备案服务器?

速盾是一家提供网络安全服务的公司,其主要产品包括CDN加速、WEB防护、WAF、DDoS防护等。在网站建设过程中,选择一个合适的服务器是非常重要的一步。传统的服务器需要备案,涉及到较多的流程和审批时间,给网站运营带来了一定的麻烦。…...

Electron获取nodejs和chrome版本信息

Electron获取nodejs和chrome版本信息 环境&#xff1a; electron: 30.1.1 nodejs: 20.14.0代码 $ tree . --- index.html --- index.js --- package.jsonindex.html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>H…...

【React】setState 批量更新

setState 批量更新的过程 React 的 setState 调用是异步的。为了性能原因&#xff0c;React 会将多个 setState 调用合并成一次批量更新。具体过程如下&#xff1a; 1&#xff09;React 先将调用的每个 setState 所产生的更新对象存储在一个队列中。 2&#xff09;在所有的同步…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...