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

不让CPU偷懒

文章资料摘自——《程序员的自我修养》

为了防止cpu执行完该程序后需要等待程序员手动加入下一个程序,才可以继续运行,这里大大浪费了cpu的效率,要知道cpu是十分昂贵的。

多道程序

在计算机发展的早期,CPU使用十分不方便,它一次只能运行一个程序,而且该程序必须允许完毕后才可以执行下一个程序,学过数据结构的朋友都知道一个叫做队列结构的存储方式,当队头数据为出队列时候,后面的数据都必须等待它执行Pop才可以出列,早期cpu就是类似这样的运行程序的方式,我们成为“多道程序”-->这种方式在现在看似原始,但是在当时确实大大的提升了cpu的效率。

用户急需执行的程序必须等I3 I4  I5全部执行完毕后才进入cpu计算运行。

但是这种方式在程序调度上有着重大的漏洞,比如:人机交互时,用户现在就需要执行一个程序,但是将想要执行该程序,就要等待前面所有程序执行完毕后才会执行(不可插队),等到用户急需程序开始运行时,可能都过去10多分钟了,这是多么悲伤的事情。

分时系统

在这多道程序的基础上,我们将cpu执行单个程序从头到尾一次性执行完毕,改为了计算当前程序部分时间后,让出cpu给其他程序进行计算其他程序,以此类推,每个程序都有机会运行一段时间,这个时候这样的系统叫做分时系统,这样的监控程序比多道程序高级也复杂,当用户调用几个系统调用(Yield、GetMessage等)时,监控系统会查看cpu是否在执行其他文件,如果有,发出请求,cpu可能暂停当前执行程序,让cpu先执行其他程序。

 但是这里有个弊端,这里的分时系统,只是协商,如果I3正在执行有个十分耗时间的计算,或者陷入死循环,他就会霸占cpu,使计算死机,无法执行其他程序,整个系统都停止了,一直执行该计算,这是我们不希望看见的,区区一个死循环,导致一台计算机死机,现在来看十分的荒唐,比如在你的IDE上执行while(1); 死机只能重新启动,这样的电脑谁敢买

#include<stdio.h>
//在分时系统下
int main()
{while(1);//cpu疯狂计算该条程序,电脑只能重启。return 0;
}

多任务系统

分时系统也仅能满足当时的交互,当今计算机发展越来越快,绝不能因为一个死循环死机,这个时候,高端领域的佬们研究发明了多任务(Multi-tasking)系统,它完全接管了硬件资源,不再是协商,这是直接命令,所有的程序都以进程(Process)的方式在比操作系统权限更低级的级别,每个进程都有自己的独立空间,使得进程之间有独立的地址空间(大通铺,变成小单间),使得不同的进程相互隔离,而且不同的进程有不同的优先级别(出现高低贵贱,三六九等)。这时操作系统全权接管CPU资源,这时操作系统会根据进程的优先级高低进行先后分配cpu资源,当前面的进程运行一段时间都,直接暂停当前进程,运行下一优先级进程,每个进程都执行一小段时间,这样所有的进程都会使用到cpu资源,出现死循环,进程也霸占不了cpu资源,因为该系统下,操作需要全权控制cpu资源分配,这样的这方式我们称之为:抢占式(Preemptive) ,操作系统可以强制剥夺cpu资源(哪怕正在执行其他进程,甚至进程在死循环),并且分配给它认为目前最急需的进程。

剥夺当前使用cpu资源的进程
将cpu资源给急需cpu资源的进程

 并且如果分配给每个进程的时间都很短的话,出现多个进程之间快速的切换,产生多个进程同时执行的假象。当下许多的操作系统都是采用这样的方式如:Linux、windows NT、UNIX、以及苹果的Mac OS X的流行的操作系统。

相关文章:

不让CPU偷懒

文章资料摘自——《程序员的自我修养》 为了防止cpu执行完该程序后需要等待程序员手动加入下一个程序&#xff0c;才可以继续运行&#xff0c;这里大大浪费了cpu的效率&#xff0c;要知道cpu是十分昂贵的。 多道程序 在计算机发展的早期&#xff0c;CPU使用十分不方便&#x…...

动力节点王鹤SpringBoot3笔记——第七章 视图技术Thymeleaf

目录 第七章 视图技术Thymeleaf 前言 7.1 表达式 7.2 if-for 第七章 视图技术Thymeleaf 前言 Thymeleaf 是一个表现层的模板引擎&#xff0c; 一般被使用在 Web 环境中&#xff0c;它可以处理 HTML, XML、 JS 等文档&#xff0c;简单来说&#xff0c;它可以将 JSP 作…...

从比特保存和信息保存看数字资源长期保存

引用IBM以色列海法实验室的观点&#xff0c;数字资源长期保存包含两个层面含义&#xff0c;即比特保存与信息保存。也就是说&#xff0c;要实现数字资源的长期保存&#xff0c;必须同时做到比特保存和信息保存。 一 ​概念 01 比特保存&#xff0c;也叫物理保存&#xff0c;主…...

兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)

关于漫反射 光打到凹凸不平的平面上&#xff0c;光线会被反射到四面八方&#xff0c;被称为漫反射 关于这种模型&#xff0c;由于光线由于分散&#xff0c;所以进入人眼的光线强度和观察角度没有区别 在A点和B点接收到的光线强度是一样的 在漫反射下&#xff0c;光线强度只和光…...

Python 进阶指南(编程轻松进阶):二、环境配置和命令行

原文&#xff1a;http://inventwithpython.com/beyond/chapter2.html 环境配置是配置你的计算机环境&#xff0c;以便你写代码的过程。这包括安装任何必要的工具&#xff0c;配置它们&#xff0c;以及处理安装过程中的任何问题。没有一键配置这种傻瓜式操作过程&#xff0c;因为…...

求职半年,三月成功拿到阿里offer,分享一波面经...

前言 不论是校招还是社招都避免不了各种⾯试、笔试&#xff0c;如何去准备这些东⻄就显得格外重要。不论是笔试还是⾯试都是有章可循的&#xff0c;我这个“有章可循”说的意思只是说应对技术⾯试是可以提前准备&#xff0c;所谓不打无准备的仗就是这个道理。 以下为大家&…...

餐饮店的运营需要考虑哪些方面

餐饮店的运营需要多方面的考虑和规划&#xff0c;以下是传递宝APP上一些常用的餐饮店运营方法&#xff1a; 1.定位&#xff1a;明确餐饮店的定位和目标客户群体&#xff0c;针对不同的客户需求&#xff0c;提供个性化的服务和产品&#xff0c;比如是附近的上班族&#xff0c;还…...

Multi-modal Alignment using Representation Codebook

Multi-modal Alignment using Representation Codebook 题目Multi-modal Alignment using Representation Codebook译题使用表示代码集的多模态对齐期刊/会议CVPR 摘要&#xff1a;对齐来自不同模态的信号是视觉语言表征学习&#xff08;representation learning&#xff09;的…...

关于vector的emplace_back和push_back的区别

实验代码&#xff1a; class A { public:A(int x) {x x;cout << "construct A" << endl;}A(const A& a) {x a.x;cout << "copy construct A" << endl;}A(const A&& a) {cout << "Move construct A"…...

Vue——表单输入绑定

目录 基本用法​ 文本 多行文本 复选框​ 选择器​ 值绑定​ 复选框 单选按钮 选择器选项 修饰符​ .lazy​ .number​ .trim​ 组件上的 v-model​ 在前端处理表单时&#xff0c;我们常常需要将表单输入框的内容同步给 JavaScript 中相应的变量。手动连接值绑定…...

MySQL性能优化(二)索引

文章目录优化手段准备案例索引的本质索引的数据结构不同存储引擎中索引的实践MyIsam &#xff08;索引没有主次之分、都存放在MYI文件&#xff09;主键索引其他索引InnoDB&#xff08;数据即索引、索引即数据&#xff09;主键索引——聚集索引聚集索引其他索引没有主键的情况&a…...

< 每日闲谈:你真的了解 “ ChatGPT ” 嘛 ? >

< 每日闲谈&#xff1a;你真的了解 “ ChatGPT ” 嘛 &#xff1f; >&#x1f449; 前言&#x1f449; OpenAI的创立&#x1f449; ChatGPT有何过人之处&#xff1f;> 效果演示&#x1f449; OpenAI看家之作 — GPT自然语言模型> GPT发展史> 里程碑-GPT3> 从…...

改善Instagram客户服务的6个技巧

Instagram仍然是全球前四大社交网络&#xff0c;按用户数量排名。它通过其创新的过滤器、内容创建工具、视频和卷轴选项继续增长并推动流量。这是一个平台&#xff0c;世界顶级名人和有影响力的人可以为全球用户提供有趣和令人印象深刻的内容。 但不仅仅是一个娱乐平台&#xf…...

8年经验之谈:4步解决测试与开发人员有争议的bug问题...

“开发认为不是bug&#xff0c;测试如何处理&#xff1f;”很多面试中&#xff0c;测试工程师都会被问到这个问题&#xff0c;不仅仅是面试&#xff0c;工作中测试人员也会遇到这类问题&#xff0c;甚至可能由于某种原因&#xff0c;无论是开发人员还是开发经理就是不愿修改程序…...

Linux日常小技巧shell脚本

在工作中我们常用shell脚本处理一些问题,这里整理了一些工作中常用的简单shell脚本。 定时备份文件 #!/bin/bash backup_dir="/data1/backup" src_dir="/data1/app" date_time=$(date +%Y%m%d_%H%M%S) tar -czvf ${backup_dir}/${date_time}.tar.gz ${sr…...

技术创业者必读:从验证想法到技术产品商业化的全方位解析

导语 | 技术创业之路往往充满着挑战和不确定性&#xff0c;对于初入创业领域的人来说&#xff0c;如何验证自己的创业想法是否有空间、如何选择靠谱的投资人、如何将技术产品商业化等问题都需要认真思考和解决。在「TVP 技术夜未眠」第六期直播中&#xff0c;正马软件 CTO、腾讯…...

Docker Registry 本地镜像发布到私有库

本地镜像发布到私有库流程 是什么1 官方Docker Hub地址&#xff1a;https://hub.docker.com/&#xff0c;中国大陆访问太慢了且准备被阿里云取代的趋势&#xff0c;不太主流。2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便&#xff0c;涉及机密的公司不可能提供镜像给公…...

Pytorch构建ResNet-50V2

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第J2周&#xff1a;ResNet-50V2算法实战与解析 &#x1f356; 作者&#xff1a;K同学啊 一、ResNetV2与ResNet结构对比 改进点 (a)origi…...

【01】PointNet论文解析

PointNet的应用 1.点云图像的分类&#xff08;整片点云是什么物体&#xff09; 2.点云图像的部件分割&#xff08;整片点云所代表的物体能拆分的结构&#xff09; 3.点云图像的语义分割&#xff08;将三维点云环境中不同的物体用不同的颜色区分开&#xff09; 补充 PointN…...

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…...

MySQL 8.0 绿色版安装和配置过程

MySQL作为云计算时代&#xff0c;被广泛使用的一款数据库&#xff0c;他的安装方式有很多种&#xff0c;有yum安装、rpm安装、二进制文件安装&#xff0c;当然也有本文提到的绿色版安装&#xff0c;因绿色版与系统无关&#xff0c;且可快速复制生成&#xff0c;具有较强的优势。…...

Linux 系统中的算法技巧与性能优化

引言​ Linux 系统以其开源、稳定和高度可定制的特性&#xff0c;在服务器端、嵌入式设备以及开发环境中得到了极为广泛的应用。对于开发者而言&#xff0c;不仅要掌握在 Linux 环境下实现各类算法的方法&#xff0c;更要知晓如何利用系统特性对算法进行优化&#xff0c;以提升…...

AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析

一、引言 (一) AI Agent 技术发展背景 &#x1f680; AI Agent 的演进是一场从“遵循指令”到“自主决策”的深刻变革。早期&#xff0c;以规则引擎为核心的系统&#xff08;如关键词匹配的客服机器人&#xff09;只能在预设的流程上运行。然而&#xff0c;大语言模型的崛起为…...

windows10搭建nfs服务器

windows10搭建nfs服务器 Windows10搭建NFS服务 - fuzidage - 博客园...

【AI智能体】Spring AI MCP 从使用到操作实战详解

目录 一、前言 二、MCP 介绍 2.1 什么是MCP 2.2 MCP 核心特点 2.3 MCP 核心价值 2.4 MCP 与Function Calling 区别 三、Spring AI MCP 架构介绍 3.1 整体架构 3.1.1 三层架构实现说明 3.2 服务端与客户端 3.2.1 MCP 服务端 3.2.1 MCP 客户端 3.3 MCP中SSE和STDIO区…...

WINUI——Magewell视频捕捉开发手记

背景 因需要融合视频&#xff0c;并加载患者CT中提取出的气管镜与病变&#xff0c;以便能实时查看气管镜是否在正确位置。 开发环境 硬件&#xff1a;Magewell的USB Capture HDMI Gen 2 IDE&#xff1a;VS2022 FrameWork: .Net6 WINUI Package: MVVMToolKit NLog Ma…...

【vue】Uniapp 打包Android 文件选择上传问题详解~

需求 uniapp兼容android app&#xff0c;pc&#xff0c;h5的文件选择并上传功能。 需要支持拍照和相册选择&#xff0c;以及选择其他类型文件上传~ 实践过程和问题 开始使用uni-file-picker组件 以为很顺利&#xff0c;android模拟器测试…… 忽略了平台兼容性提示~&#…...

MongoDB检查慢查询db.system.profile.find 分析各参数的作用

db.system.profile.find() 是分析 MongoDB 性能的关键工具,其返回的文档包含丰富的性能指标。下面是对各参数的详细解释和优化建议: {"op": "query", // 操作类型(query/update/remove)"ns": "test.users", // 命名…...

Java Fork/Join框架:三大核心组件深度解析

ForkJoinTask、ForkJoinWorkerThread 和 ForkJoinPool 构成了 Java 中 Fork/Join 框架的三个核心组件&#xff0c;它们之间形成了紧密的协作关系&#xff0c;共同提供了高效的并行计算能力。 三者关系概述 ForkJoinPool&#xff1a;执行环境&#xff0c;管理工作线程和任务调…...

04 Deep learning神经网络编程基础 梯度下降 --吴恩达

梯度下降在深度学习的应用 梯度下降是优化神经网络参数的核心算法,通过迭代调整参数最小化损失函数。 核心公式 参数更新规则: θ t + 1 = θ t − η ∇ J ( θ...