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

Python学习教程:进程的调度

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

要想多个进程交替运行,操作系统必须对这些进程进行调度,

这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

一、先来先服务调度算法

先来先服务(FCFS)调度算法是一种最简单的调度算法,

该算法既可用于作业调度,也可用于进程调度。

FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。

由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。

二、短作业优先调度算法

短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,

该算法既可用于作业调度,也可用于进程调度。

但其对长作业不利;

不能保证紧迫性作业(进程)被及时处理;

作业的长短只是被估算出来的。

三、时间片轮转法

时间片轮转(Round Robin,RR)法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。

在时间片轮转法中,需要将CPU的处理时间分成固定大小的时间片,

例如:几十毫秒至几百毫秒。如果一个进程在被调度选中之后用完了系统规定的时间片,但又未完成要求的任务,则它自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。

同时,进程调度程序又去调度当前就绪队列中的第一个进程。

显然,轮转法只能用来调度分配一些可以抢占的资源。

这些可以抢占的资源可以随时被剥夺,而且可以将它们再分配给别的进程。

CPU是可抢占资源的一种。

但打印机等资源是不可抢占的。

由于作业调度是对除了CPU之外的所有系统硬件资源的分配,其中包含有不可抢占资源,所以作业调度不使用轮转法。

在轮转法中,时间片长度的选取非常重要。

首先,时间片长度的选择会直接影响到系统的开销和响应时间。

如果时间片长度过短,则调度程序抢占处理机的次数增多。

这将使进程上下文切换次数也大大增加,从而加重系统开销。

反过来,如果时间片长度选择过长,例如,一个时间片能保证就绪队列中所需执行时间最长的进程能执行完毕,则轮转法变成了先来先服务法。

时间片长度的选择是根据系统对响应时间的要求和就绪队列中所允许最大的进程数来确定的。

在轮转法中,加入到就绪队列的进程有3种情况:

  1. 第一种是分给它的时间片用完,但进程还未完成,回到就绪队列的末尾等待下次调度去继续执行。

  2. 第二种情况是分给该进程的时间片并未用完,只是因为请求I/O或由于进程的互斥与同步关系而被阻塞。当阻塞解除之后再回到就绪队列。

  3. 第三种情况就是新创建进程进入就绪队列。

如果对这些进程区别对待,给予不同的优先级和时间片从直观上看,可以进一步改善系统服务质量和效率。

例如:我们可把就绪队列按照进程到达就绪队列的类型和进程被阻塞时的阻塞原因分成不同的就绪队列,每个队列按FCFS原则排列,各队列之间的进程享有不同的优先级,但同一队列内优先级相同。这样,当一个进程在执行完它的时间片之后,或从睡眠中被唤醒以及被创建之后,将进入不同的就绪队列。

四、多级反馈队列

前面介绍的各种用作进程调度的算法都有一定的局限性。

如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将无法使用。

而多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。

在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下所述:

  1. 应设置多个就绪队列,并为各个队列赋予不同的优先级。

    第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。

    该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。

    例如:第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。

  2. 当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。

    当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;

    如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;

    如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。

  3. 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;

    仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。

    如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

相关文章:

Python学习教程:进程的调度

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 要想多个进程交替运行,操作系统必须对这些进程进行调度, 这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。 python更多源码/资料/解答/教程等 …...

ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案 本文是ElasticSearch第三讲,在了解ElaticSearch之后,我们还要了解Elastic背后的生态 即我们常说的ELK;与此同时,还会给你展示ElasticSearch的案例场景&…...

基于Java+SpringBoot+Vue前后端分离农商对接系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

【模方ModelFun】实景三维建模和修模4.0.7最新版安装包以及图文安装教程

模方ModelFun 具有多种功能,旨在帮助用户进行实景三维建模和修模。以下是一些主要功能的简要介绍: 实景三维建模:【模方ModelFun】提供了自动化的实景三维重建功能,可以从实景图像中提取几何形状和纹理信息,生成高质量…...

介绍几个搜索引擎

Google:全球最大的搜索引擎,提供全面的搜索服务,包括网页、图片、视频、新闻、地图等。 Baidu:中国最大的搜索引擎,提供类似于Google的全面搜索服务,同时也有网盘、知道等功能。 Bing:微软公司…...

iPhone 隔空投送使用指南:详细教程

本文介绍了如何在iPhone上使用隔空投送,包括如何在iOS 11到iOS 14的iPhone上启用它、发送文件以及接受或拒绝AirDrop发送给你的文件。对于iOS 7以上的旧款iPhone,提供了另一种方法。 如何打开隔空投送 你可以通过以下两种方式之一启动隔空投送功能:在“设置”应用程序或控…...

百度文心一言GPT免费入口也来了!!!

文心一言入口地址:文心一言能力全面开放 文心一言是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。 文心一言的技…...

线程调度和线程控制

在Java中,线程调度和线程控制是多线程编程中重要的概念,它们用于管理和控制线程的执行。以下是关于线程调度和线程控制的一些重要概念和技术: **1. 线程调度(Thread Scheduling): ** 线程调度是操作系统或Java虚拟机决定哪个线程在何时执行的过程。Java提供了多种线程调度…...

laravel excel导入导出

一、安装第三方 composer require maatwebsite/excel版本2.1和现在版本 有所不一样 二、导入 <?php namespace App\Import; use Maatwebsite\Excel\Concerns\ToCollection;class TestImport implements ToCollection {public function __construct(){}public function c…...

Windows无法删除分区怎么办?

我们知道Windows系统内置的磁盘管理工具是一个很实用的程序&#xff0c;可以帮助我们完成很多磁盘分区相关的基础操作&#xff0c;比如当我们想要删除硬盘上的某一个分区时&#xff0c;先想到的可能会是磁盘管理工具。但是当我们准备在磁盘管理工具中删除某个分区时&#xff0c…...

【请求报错:javax.net.ssl.SSLHandshakeException: No appropriate protocol】

1、问题描述 在请求服务时报错说SSL握手异常协议禁用啥的&#xff0c;而且我的连接数据库的url也加了useSSLfalse javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)2、解决方法 在网上查找了方法…...

elementUI textarea可自适应文本高度的文本域

效果图; 通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整&#xff0c;并且 autosize 还可以设定为一个对象&#xff0c;指定最小行数和最大行数。 <el-inputtype"textarea"autosizeplaceholder"请输入内容"v-model"te…...

WebRTC-Streamer交叉编译

WebRTC-Streamer交叉编译 flyfish 文章目录 WebRTC-Streamer交叉编译零、前言一、提前准备工作1 安装需要的工具2 可选的交叉编译工具3 默认执行python是python34 获取源码5 使用其他版本的方法 二、非交叉编译编译1 在 src目录执行 安装所需的依赖2 执行命令 三、 交叉编译1 …...

将目录下的所有pdf文件都转换为对应名字的png图片

本来想用Foxit来把pdf转换为png&#xff0c;但没想到是收费的功能&#xff0c;所以在参考1处找了一段python代码&#xff0c;稍作修改实现了这个功能。做个记录后续可能有用。 在python3.9.12上运行代码遇到了版本的坑&#xff0c;好几个坑&#xff0c;最终发现只要安装这个特…...

windows主机和Ubuntu虚拟机共享设置

参考文章 Ubuntu Linux 与主机共享文件夹 vim 修改文件出现错误 “ E45: ‘readonly’ option is set (add to override)“ vim退出时报错“E212: Cant open file for writing”的解决办法 VMware 安装后&#xff0c;安装Ubuntu 20.04一路顺利。 1&#xff0c;在VMware设置…...

北京APP外包开发需要注意的问题

开发APP的过程中&#xff0c;由于开发APP需要投入大量的时间、精力和资源&#xff0c;所以在开始前一定要做好充足的准备和规划。您需要注意以下重点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…...

自然语言处理:提取长文本进行文本主要内容(文本意思)概括 (两种方法,但效果都一般)

本文主要针对长文本进行文本提取和中心思想概括&#xff0c;原文档放在了附件里面&#xff1a;<科大讯飞公告> -----------------------------------方法一&#xff1a;jieba分词提取文本&#xff08;句子赋分法&#xff09;------------------------- 1、首先导入相关…...

基于SpringCloudAlibaba实现的NacosConfig

概述 Nacos除了实现了服务的注册发现之外&#xff0c;还将配置中心功能整合在了一起。通过Nacos的配置管理功能&#xff0c;我们可以将整个架构体系内的所有配置都集中在Nacos中存储。这样做的好处主要有以下几点&#xff1a; 分离的多环境配置&#xff0c;可以更灵活的管理权…...

景联文科技:高质量AI数据标注助力大语言模型训练,推动人工智能落地应用

大语言模型在各类LLM新技术的融会贯通下&#xff0c;不断加速Instruction-tuning、RLHF、思维链等新技术在大语言模型中的深度应用&#xff0c;人工智能技术以惊人的速度不断进化。 大语言模型&#xff08;LLM&#xff09;是一种基于深度学习技术和海量文本数据&#xff0c;它们…...

深度学习(前馈神经网络)知识点总结

用于个人知识点回顾&#xff0c;非详细教程 1.梯度下降 前向传播 特征输入—>线性函数—>激活函数—>输出 反向传播 根据损失函数反向传播&#xff0c;计算梯度更新参数 2.激活函数(activate function) 什么是激活函数&#xff1f; 在神经网络前向传播中&#x…...

B站成分检测器:3秒洞察评论区用户真实身份的智能工具

B站成分检测器&#xff1a;3秒洞察评论区用户真实身份的智能工具 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 在B站…...

除了get_response,UVM sequence还有这两种更灵活的响应处理方式(附代码对比)

超越get_response&#xff1a;UVM sequence响应处理的进阶策略与实战解析 在芯片验证领域&#xff0c;UVM框架的sequence-driver交互机制是构建高效验证环境的核心。传统get_response/put_response方式虽然简单直接&#xff0c;但在复杂场景下往往显得笨拙。本文将深入剖析三种…...

AI学术研究技能包:从论文导读到实验设计的全流程自动化助手

1. 项目概述&#xff1a;一个为AI研究助手打造的学术技能包如果你正在用Claude Code、ChatGPT/Codex CLI或者Gemini CLI这类AI编程助手做研究&#xff0c;大概率遇到过这样的场景&#xff1a;想让AI帮你读篇论文&#xff0c;它却只能泛泛而谈&#xff1b;想让AI设计个实验&…...

LuaDec51终极指南:3步快速掌握Lua 5.1字节码反编译

LuaDec51终极指南&#xff1a;3步快速掌握Lua 5.1字节码反编译 【免费下载链接】luadec51 Lua Decompiler for Lua version 5.1 项目地址: https://gitcode.com/gh_mirrors/lu/luadec51 LuaDec51是一个强大的Lua 5.1字节码反编译工具&#xff0c;能够将编译后的Lua字节码…...

颠覆性英雄联盟智能助手:如何用League Akari告别繁琐操作,专注游戏核心

颠覆性英雄联盟智能助手&#xff1a;如何用League Akari告别繁琐操作&#xff0c;专注游戏核心 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...

Midscene.js视觉驱动自动化测试终极教程:跨平台AI测试实战深度解析

Midscene.js视觉驱动自动化测试终极教程&#xff1a;跨平台AI测试实战深度解析 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 还在为多设备、多平台测试的碎片化…...

从命令行到自动化:用xrandr和shell脚本打造你的Linux多屏工作流(含常见错误排查)

从命令行到自动化&#xff1a;用xrandr和shell脚本打造你的Linux多屏工作流&#xff08;含常见错误排查&#xff09; 每天早晨&#xff0c;当我从笔记本单屏切换到办公室的三显示器阵列时&#xff0c;只需按下CtrlAltW&#xff0c;所有显示器就会自动按预设排列亮起——这种流畅…...

本地AI部署实战:模块化架构、环境配置与性能调优指南

1. 项目概述&#xff1a;一个被低估的本地化AI工具 最近在折腾本地AI部署的时候&#xff0c;又翻出了这个叫“bailing”的项目。说实话&#xff0c;第一次在GitHub上看到 wwbin2017/bailing 这个仓库时&#xff0c;我差点就划过去了。名字听起来平平无奇&#xff0c;简介也写…...

光栅的介绍

光栅主要用于分光和衍射。使用时将光栅垂直固定在支架上&#xff0c;确保刻线朝向光源。让光束以一定角度入射到光栅平面&#xff0c;在光栅后方放置光屏。可观察到&#xff1a; 1.中央为直射光斑&#xff08;零级&#xff09; 2.两侧对称分布彩色光谱&#xff08;不同波长的光…...

基于Rust的MCP服务器开发指南:为AI应用构建安全高效的工具扩展

1. 项目概述&#xff1a;一个为AI应用构建的Rust版MCP服务器 如果你最近在折腾AI应用开发&#xff0c;尤其是想让你的AI助手&#xff08;比如Claude Desktop、Cursor等&#xff09;能够“看到”并操作你电脑上的文件、数据库&#xff0c;或者调用各种API&#xff0c;那么你很可…...