【Linux】进程优先级|进程切换

news2024/9/24 13:23:44

目录

进程优先级

1️⃣ 进程优先级

1.什么是进程优先级?

2.进程优先级的类型

3.进程优先级的作用

4.进程优先级的实现

5.进程优先级的重要性

6.查看系统进程

7.修改进程优先级

top命令进行修改

renice命令

8.优先级调度原理​编辑

进程切换


进程优先级

1️⃣ 进程优先级

1.什么是进程优先级?

在操作系统中,进程优先级(Process Priority)是指操作系统对进程进行调度时所赋予的优先级值,用于决定进程何时获得处理器时间。进程优先级是一种实现多任务操作系统中任务调度的重要机制,它允许操作系统根据进程的重要性和紧迫性来分配处理器资源。

2.进程优先级的类型

进程优先级可以是静态的,也可以是动态的。静态优先级通常在进程创建时由用户或操作系统管理员设定,并且不会改变。动态优先级则可以根据进程的行为或系统状态自动调整。

静态优先级:在进程创建时由用户或操作系统管理员设置,通常使用整数值表示,数值越低表示优先级越高

动态优先级:根据进程的运行情况自动调整,例如,一个进程如果长时间等待I/O操作,它的优先级可能会降低

3.进程优先级的作用

优先级调度:操作系统使用进程优先级来决定哪个进程应该首先获得处理器时间。

响应性和效率:通过调整优先级,操作系统可以确保关键任务(如图形用户界面响应、实时系统任务等)能够得到足够的处理器时间。

资源分配:优先级可以帮助操作系统决定如何分配系统资源,如内存、CPU时间等。

4.进程优先级的实现

进程优先级通常通过操作系统的调度器来实现,调度器会根据进程的优先级和其他因素(如进程状态、时间片等)来决定进程的执行顺序。

5.进程优先级的重要性

进程优先级是操作系统多任务管理的关键部分,它允许系统根据不同任务的需求和紧迫性来优化资源分配,从而提高系统的整体性能和响应性。通过合理设置和调整进程优先级,操作系统可以确保系统中的关键任务得到优先处理,同时保持系统的稳定性和效率。

6.查看系统进程

在Linux或Unix系统中,可以使用ps -l命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。PRI代表进程的优先级,NI代表进程的nice值。PRI值越小,进程的优先级越高

7.修改进程优先级

修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,数值越小,优先级越高。可以使用nicerenice命令或通过top命令进行修改。

top命令进行修改

 

renice命令

renice命令使用格式为:renice [nice值] -p [进程pid]

8.优先级调度原理

双140轮转队列 

进程切换

进程切换(Process Switching),也称为上下文切换(Context Switching),是操作系统中的一个基本机制,它允许在单个处理器上快速高效地运行多个进程。进程切换是指操作系统保存当前运行进程的状态(上下文),并恢复另一个进程的状态以使其能够继续执行的过程。

进程切换的过程

保存当前进程的上下文:这包括将当前进程的寄存器值(如程序计数器、栈指针、通用寄存器等)保存到它的进程控制块(PCB)中。

选择另一个进程:操作系统调度器根据某种策略(如轮转调度、优先级调度等)选择下一个要执行的进程。

恢复新进程的上下文:将所选进程的寄存器值从其PCB中恢复到处理器中,以便该进程可以从中断点继续执行。

进程切换的原因

时间片到期:在分时系统中,每个进程被分配一个固定的时间片来执行。当时间片用尽时,操作系统会进行进程切换。

高优先级进程的到来:当一个更高优先级的进程变为就绪状态时,当前运行的进程可能会被切换出去,以便让更高优先级的进程运行。

I/O请求:当前进程发起一个I/O请求并进入阻塞状态时,操作系统会切换到另一个就绪进程。

同步和通信:进程可能因为等待某些同步事件(如信号量、互斥锁)或进程间通信(如消息传递)而被迫进行切换。

进程切换的代价

处理器时间:保存和恢复上下文需要处理器时间。

内存访问:访问进程控制块和执行上下文切换需要内存操作。

性能影响:频繁的进程切换可能导致系统性能下降,尤其是在进程数量众多的情况下。

优化进程切换

快速上下文切换:通过硬件支持来加速上下文切换的过程。

减少切换次数:通过改进调度算法,减少不必要的进程切换。

优先级继承:在某些情况下,为了避免频繁的上下文切换,可以采用优先级继承机制。

进程的切换,最重要的一件事情是:上下文数据的保护和恢复。

竞争与独立

竞争性:由于系统资源(如CPU时间、内存、I/O设备)是有限的,多个进程之间会竞争这些资源。

独立性:每个进程都有自己的进程控制块(PCB),它包含了进程的状态信息,如程序计数器、寄存器值、打开的文件描述符等。这使得进程之间在执行时是独立的,一个进程的崩溃不会影响其他进程。

并行与并发

并行:当系统有多个CPU时,可以同时运行多个进程,每个CPU执行一个进程。这种情况下,进程之间确实是同时运行的。

并发:在单CPU系统中,通过进程切换,多个进程可以在一段时间内轮流运行,给用户一种多个进程同时运行的错觉。并发是并行的一种实现方式,但并行并不一定并发。

进程抢占

◉ 抢占式内核是一种操作系统调度策略,它允许操作系统强制将处理器从一个进程切换到另一个进程。当一个低优先级进程正在运行时,如果有一个高优先级进程准备好运行,操作系统会抢占低优先级进程的CPU时间,切换到高优先级进程。

★ps: 关于进程的切换问题

计算机中的CPU内有大量的寄存器,它保存着正在执行的进程的临时数据。如果进程A正在被执行,CPU内的寄存器里面一定保存的是进程A的临时数据。寄存器中的临时数据,就叫做A的上下文

上下文数据可以丢弃吗?绝对不可以!由于计算机CPU数量小于进程数量,则当进程A暂时被切换下来的时候,进程A需要顺便带走自己的上下文数据。带走暂时保存的目的就是为了下次回来的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行,就如同没有中断过一样。但如果没有保存上下文数据,进程A回来再执行时,就无法判断进程A原先执行到哪里了

注意:CPU内的寄存器只有一份,但是上下文可以有多份,分别对应不同的进程!!



 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1985-2022年全国土地利用分类可视化数据(30M)

1985-2022年全国土地利用分类可视化数据(30M) 1、时间:1989-2022年 2、空间分辨率:30米, 3、地理坐标系:WGS-84 4、土地类型:九种 类型编码含义1:农田;2&#xff1a…

Windows电脑本地安装HFS文件共享服务结合内网穿透搭建低成本NAS

文章目录 前言1.软件下载安装1.1 设置HFS访客1.2 虚拟文件系统 2. 使用cpolar建立一条内网穿透数据隧道2.1 保留隧道2.2 隧道名称2.3 创建二级子域名访问本地hfs 总结 前言 本文主要介绍如何在Windows系统电脑使用HFS并结合cpolar内网穿透工具搭建低成本NAS,并实现…

指针之旅(3)—— 指针 与 数组

目录 1. 数组名的两种意义 2. 指针访问数组(指针也能下标引用) 3. 一维数组传参的本质 和 sizeof在函数中失效的原因 4. 指针数组 4.1 指针数组的概念 4.2 一级指针数组 4.3 一级指针数组模拟实现二维数组 5. 数组、指针 与 字符串 6. 数组指针…

微信小程序实现文件的预览

1&#xff0c;最简单的直接使用<web-view src网络文件地址><web-view>文件如果有在线地址&#xff0c;直接用web&#xff0c;但是要在小程序的管理平台中增加文件地址到业务域名当中 2、使用微信本身自带方法 图片预览 wx.previewImage({urls:[this.data.ossPath…

【数据结构】【java】leetcode刷题记录--链表

简介 链表是一种常见的基础数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据域和指向下一个节点的指针。在Java中&#xff0c;链表通常用于实现动态数据结构&#xff0c;因为它可以根据需要动态地增加或减少节点。 链表简介&#xff1a; 节点结构&#…

如何为 DigitalOcean 静态路由操作员设置故障转移

静态路由操作器的主要目的是提供更大的灵活性&#xff0c;并在 Kubernetes 环境中控制网络流量。它使你能够根据应用程序的需求自定义路由配置&#xff0c;从而优化网络性能。该操作器作为 DaemonSet 部署&#xff0c;因此将在你的 DigitalOcean Managed Kubernetes 集群的每个…

以太坊基金会AMA总结:面对ETH价格疲软,团队的应对策略与展望

2024年9月5日晚&#xff0c;以太坊基金会举行了第12届AMA&#xff08;Ask Me Anything&#xff09;活动。本次活动在Twitter Space上进行&#xff0c;由以太坊联合创始人Vitalik Buterin、基金会成员Justin Drake和Dankrad Feist等核心成员参与&#xff0c;针对社区关心的多个问…

【YashanDB知识库】表数据量不多,lob数据段有大量空间,插入数据报错

问题现象 clob段异常增长&#xff0c;导致磁盘空间满&#xff0c;应用无法使用数据库。 问题风险及影响 lob段空间未复用&#xff0c;lob段空间扩张很大&#xff0c;影响磁盘占用合理分配。 空间不够&#xff0c;插入报错&#xff0c;影响业务。 问题影响的版本 所有版本…

全视通智慧病房系统旧病房改造方案

一、背景介绍 在当今医疗技术日新月异的时代&#xff0c;智慧病房作为医院现代化建设的重要一环&#xff0c;正逐步从概念走向现实&#xff0c;深刻改变着患者的就医体验与医护人员的工作模式。智慧病房的改造背景&#xff0c;根植于医疗需求的日益增长、技术创新的不断推动以及…

自定义事件分发

一、在C中创建可接收事件的接口类EventInterface&#xff0c;继承自UInterface 1、EventInterface.h #pragma once #include "CoreMinimal.h" #include "UObject/Interface.h" #include "EventInterface.generated.h" UINTERFACE(MinimalAPI) c…

页面小组件-搜索栏(二)-未经项目验证,慎重!!!

前言说明 这一版是未经过项目验证的&#xff0c;可能会有地方需要自行调整&#xff0c;如需使用&#xff0c;请慎重、慎重、再慎重&#xff01;&#xff01;&#xff01; 前言追溯 前面分享过的搜索栏组件是一个临时产物&#xff0c;经历了一两个项目之后就被淘汰了。后续在…

Aloudata AIR :国内首个 Data Fabric 逻辑数据平台

AIR 的寓意是“极致轻盈的数据交付”&#xff1a;A - Adaptive 自适应&#xff0c;I - Integration 集成&#xff0c;R - Resilience 弹性 News&#xff1a;Aloudata AIR 发布 作为国内首个 Data Fabric 逻辑数据平台&#xff0c;Aloudata AIR 通过自研的数据虚拟化技术&#…

使用树莓派学习——Linux库编程

树莓派开发——Linux静态动态库 文章目录 树莓派开发——Linux静态动态库一、分文件编程1.1 分文件编程的优点&#xff1a;1.2 分文件编程的步骤&#xff1a; 二、Linux的库2.1 函数库的概念&#xff1a;2.2 静态库和动态库的比较&#xff1a;静态数据库&#xff08;libXXX.a&a…

奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级

阿里云的通义灵码智能编码助手参与中国信通院组织的可信AI智能编码工具首轮评估&#xff0c;最终获得 4 级评级&#xff0c;成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第 2 部分&#xff1a;智能开发能力》为依据&…

C/C++的自由落体运动

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 2.2.3 测试结果 3. 备注 1. 前言 这个题目非常有意思&#xff0c;可以活跃自己的思维&#xff0c;毕竟代码来源于生活&#xff0c;又返回给生活。 2. 正文 2.1 问题 题目描述&#xff1a; …

携手共建云安全未来 |“集美大学服云实习基地”授牌仪式圆满举行

集美大学服云实习基地授牌仪式 9月3日&#xff0c;集美大学服云实习基地授牌仪式在厦门成功举行。集美大学科研处副处长茅剑、计算机工程学院副院长刘晋明&#xff0c;以及安全狗副总裁&CTO陈荣有、副总裁刘春辉共同出席此次的授牌仪式。 01 会上&#xff0c;安全狗副总裁刘…

梨花声音教育退费普通话学习技巧之了解文化背景

在学习普通话的过程中&#xff0c;了解中国的文化背景是不可或缺的一环。语言不仅是交流的工具&#xff0c;更是文化的载体。通过深入了解中国的历史、文化和社会背景&#xff0c;学习者可以更好地理解和掌握普通话&#xff0c;使语言学习变得更加生动有趣。本文将从几个方面详…

监控平台总结之面试常问答案

思路 延伸的面试题总结及答案&#xff1a; 1.说说前端监控平台/监控SDK架构设计和难点亮点&#xff1f; 架构设计 数据采集层: SDK: 在前端集成的 SDK 负责采集数据&#xff0c;包括性能指标、用户行为、错误日志等。 数据收集: 实现高效的数据采集机制&#xff0c;支持实时…

C++_多态详解

多态的概念 概念&#xff1a;需要去完成某个行为时&#xff0c;当 不同的对象去完成 会产生出不同的状态。通俗点说就是 不同类型的对象去做同一个行为&#xff0c;产生的结果不同。 多态的定义及实现 虚函数 定义&#xff1a;即被virtual修饰的类成员函数称为虚函数 虚函…

多门店管理下的高效IT运维策略与实战指南

连锁门店作为直接面向消费者的服务点&#xff0c;是企业与顾客建立联系的关键触点。随着商业竞争的加剧&#xff0c;连锁门店企业纷纷通过扩大实体店面的规模来抢占市场份额。随着门店数量的激增&#xff0c;门店IT运维管理的复杂性和挑战也日益凸显。本文将深入剖析门店IT运维…