当前位置: 首页 > 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…...

AI Agent Harness Engineering 产品经理指南:如何定义智能体的“人设”与能力边界?

AI Agent Harness Engineering 产品经理指南:如何定义智能体的「人设」与能力边界 关键词:AI Agent、智能体管控工程(Harness Engineering)、产品经理、人设对齐、能力边界、智能体治理、生成式AI落地 摘要 随着生成式AI技术的成熟,AI Agent已经从概念验证阶段进入大规…...

Pandrator:基于Python的自动化内容生成与数据转换工具实践

1. 项目概述与核心价值最近在折腾一些自动化数据处理和内容生成的工作流&#xff0c;发现了一个挺有意思的开源项目&#xff0c;叫Pandrator。乍一看这个名字&#xff0c;可能会联想到“潘多拉”和“生成器”的结合&#xff0c;实际上它也确实是一个功能强大的内容转换与生成工…...

用C++和RealSense D435i搞个3D手势识别?从像素坐标到相机坐标的保姆级避坑指南

3D手势识别实战&#xff1a;用RealSense D435i实现像素到相机坐标的高精度转换 当你的手指在空气中划出一道弧线&#xff0c;计算机能否精准捕捉这个三维动作&#xff1f;这正是3D手势识别技术试图解决的问题。作为人机交互领域的前沿方向&#xff0c;3D手势识别正在VR游戏、医…...

Arduino驱动128x64 VFD显示屏:SPI像素回读与图形应用实战

1. 项目概述&#xff1a;为什么选择128x64图形VFD&#xff1f;如果你玩过各种OLED、LCD或者TFT屏幕&#xff0c;可能会觉得显示技术已经足够成熟&#xff0c;亮度、对比度似乎都够用。但当你第一次点亮一块真空荧光显示屏时&#xff0c;那种独特的、带着一丝复古科技感的蓝色辉…...

如何在Chrome浏览器中快速生成与解析二维码:Chrome QRCode插件终极指南

如何在Chrome浏览器中快速生成与解析二维码&#xff1a;Chrome QRCode插件终极指南 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的…...

Minecraft物品堆叠架构深度解析:突破64限制的技术实现方案

Minecraft物品堆叠架构深度解析&#xff1a;突破64限制的技术实现方案 【免费下载链接】UltimateStack A Minecraft mod,can modify ur item MaxStackSize (more then 64) 项目地址: https://gitcode.com/gh_mirrors/ul/UltimateStack 在Minecraft模组开发领域&#xf…...

005 DevEco Studio OHPM同步404报错 解决文档

[cs]005 DevEco Studio OHPM同步404报错 解决文档 文档简介 本文解决鸿蒙开发中新建空白项目自动触发ohpm install时报错&#xff1a;ohos/hypium、ohos/hamock包404找不到、拉取依赖失败问题。 核心原则&#xff1a;不修改项目任何自带文件、不删除系统生成依赖、不改动业务代…...

PaperDebugger:解决机器学习代码复现危机的调试框架

1. 项目概述&#xff1a;当代码遇上论文&#xff0c;一场“可复现性”的硬仗如果你和我一样&#xff0c;常年混迹在机器学习、数据科学或者计算物理这类前沿领域&#xff0c;那你一定对下面这个场景不陌生&#xff1a;读到一篇顶会论文&#xff0c;作者声称他们的模型在某个基准…...

UE5 3D Widget 渲染优化:告别动态模糊与重影困扰

1. 3D Widget动态模糊问题的根源剖析 第一次在UE5项目中使用3D Widget展示动态角色动画时&#xff0c;我被那些飘忽不定的睫毛重影彻底搞懵了。明明在静态预览时一切正常&#xff0c;但只要角色开始眨眼或做表情&#xff0c;睫毛和发丝边缘就会出现诡异的拖影效果&#xff0c;就…...

SuperMap Objects开发避坑指南:从COM引用到内存释放的实战经验总结

SuperMap Objects开发避坑指南&#xff1a;从COM引用到内存释放的实战经验总结 在GIS二次开发领域&#xff0c;SuperMap Objects以其强大的空间数据处理能力备受开发者青睐。然而&#xff0c;当我们将这个COM组件集成到C# WinForms项目中时&#xff0c;往往会遇到一些官方文档…...