1888_关于多任务调度的一些整理与思考

         全部学习汇总: g_embedded: 嵌入式通用技术学习笔记 (gitee.com)

         让我想来对此做一下总结思考的书其实不是嵌入式或者至少不限于嵌入式,但是我的主业是嵌入式,对于问题的理解点暂时也是在这个领域。后续,这些知识对我自己能够产生作用的地方应该还是嵌入式。姑且把笔记放在这里。

         上面这段话是截取自《UNIX编程艺术》一书的,这种书略微看一点有时候会让我产生对自己的怀疑:我究竟是不是软件工程师?看起来,距离这些老牌黑客或者书中描述的真的软件工程师我还有很大的差距。

         之前做基于RTOS的软件开发的时候就已经了解了cooperative、preemptive两种模式。后者现在是很多RTOS的一个大卖点,而我第一次接触到这种概念还是在ucos这个系统上。对我来说,两者的差异点是在于高优先级的任务就绪之后是否可以中断正在执行的低优先级任务。

         这里的任务,在文中应该就是进程的概念。在这里提到了协同式多任务的缺点:可能缺少周期性时钟中断,或者内存管理单元。如果是在RTOS这样的微内核的角度考虑,可能是说这种任务会缺少一个周期性中断。我觉得他这里的周期性中断应该就是说系统的tick时钟,在这个时钟脉动驱动下可以进行CPU资源的分配。不过,这种设计似乎又跟我接触到的RTOS的设计有所不同,我接触到的RTOS都有一个tick,它们会借助于这个tick来管理很多时间概念。

         想到了这里,其实我多少理解了为什么会有这样的区分度。其实,RTOS,尤其是嵌入式的RTOS在使用场景上跟我们PC或者server所要处理的内容有着比较大的差异。尤其是在很多通信相关的时序上,嵌入式的要求显然是更严苛的。而对应通用计算机来说,计算机处理的事情显示到我们的交互体验上最多是处理快慢的一个差异。由于这样的一个区分度,其实我倒觉得类似于DOS这样的顺序加载器在一定程度上考虑其实或许还是适用于某些嵌入式的控制的。

       UNIX上引入这样的机制会有什么好处呢?其实,这个好处也是很容易考虑清楚的。如果是类似于顺序加载的情况,或者是协同式的任务处理,那么用户在处理多个大型任务的时候或许会觉得有一些任务在一定的时间范围内没有什么处理的进展。这样给用户的体验或许是不好的。而抢占的模型中,有一个同优先级共享时间片分派的设计,这种设计会让用户不再有这种体验上的缺憾。如果是针对优先级本来就有着很大区分度的任务来说,抢占式的处理肯定会有更好的体验效果。因为,感受上来说,高优先级的任务的确是得到了优先的对待。因此,综合看来,这种设计在嵌入式系统以及unix中想要达到的效果基本上是一致的。不过,嵌入式的系统有着自己更加侧重的考虑因素。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu使用Docker部署Redis并实现远程访问本地数据库

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Ub…

以梦为码,CodeArts Snap 缩短我与算法的距离

背景 最近一直在体验华为云的 CodeArts Snap,逐渐掌握了使用方法,代码自动生成的准确程度大大提高了。 自从上次跟着 CodeArts Snap 学习用 Python 编程,逐渐喜欢上了 Python。 我还给 CodeArts Snap 起了一个花名: 最佳智能学…

深入浅出hdfs-hadoop基本介绍

一、Hadoop基本介绍 hadoop最开始是起源于Apache Nutch项目,这个是由Doug Cutting开发的开源网络搜索引擎,这个项目刚开始的目标是为了更好的做搜索引擎,后来Google 发表了三篇未来持续影响大数据领域的三架马车论文: Google Fil…

WEB安全渗透测试-pikachuDVWAsqli-labsupload-labsxss-labs靶场搭建(超详细)

目录 phpstudy下载安装 一,pikachu靶场搭建 1.下载pikachu 2.新建一个名为pikachu的数据库 3.pikachu数据库配置 ​编辑 4.创建网站 ​编辑 5.打开网站 6.初始化安装 二,DVWA靶场搭建 1.下载DVWA 2.创建一个名为dvwa的数据库 3.DVWA数据库配…

操作系统(4)---虚拟机

虚拟机又叫虚拟机管理程序或者虚拟机监控程序(Virtual Machine Monitor/Hypervisor,VMM),使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器 (Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系…

CPU,内存和硬盘之间的关系

计算机三大件:CPU,内存,硬盘。从运算速度来看,CPU>内存>固态硬盘>机械硬盘。 电脑卡顿怎么解决? 1、清理垃圾; 2、释放C盘空间,因为系统需要C盘空间当作虚拟内存; 3、增…

[SwiftUI]Text对字符串中部分字符改变颜色和字体

如图,需要对字符串中部分字符改变颜色和字体。 在 SwiftUI 中合并带有不同样式的文本,应该使用不同的 Text 实例并将它们合并起来。将实例使用 运算符合并起来,每个 Text 实例都保持其自己的样式设置。这种方式可以正常编译并运行&#xff0…

想找一个轻量版的MarkDown编辑器客户端,哪位推荐一下

经常需要即时写一些MarkDown文档,打开网页版的笔记不方便。 对比了几个,已收费的typora感觉还是最好的。 除此之外,原以为最重的VSCode,从打开速度、占内存等情况来说,居然也不相上下。 这样的对比条件下,…

Java Swing桌面项目打包成可执行jar

前言 最近有需求,将Swing项目打包为一个可执行的jar包,遇见了一些问题,参考AI助手,解决了遇到的问题,也有一些亲身实践体会,记录一下。开发环境IntelliJ IDEA,JDK8,用kotlin语言实现…

第七篇【传奇开心果系列】鸿蒙开发技术点案例示例:ArkUI声明式UI编程思想

传奇开心果博文系列 系列博文目录鸿蒙开发技术点案例示例系列 博文目录一、前言二、ArkUI声明式UI编程思想介绍三、以官方示例helloworld解读声明式编程四、以官方示例helloworld解读组件化开发五、以官方示例helloworld解读组件可定制六、用示例解读响应式布局七、以官方hello…

金蝶云星空--写插件不重启IIS热更新简单配置指南

云星空7.5版本,以简单方式配置并测试了热更新的实现方式可行,操作如下(7.5外版本没试过,大家可试下): 1、打开WebSite\App_Data\Common.config,修改appSettings,设置IsEnablePlugIn…

InforSuiteAS中创中间件windows环境部署

版本:InforSuiteAS_StE_V10.0.5.2.1 环境要求:Java环境 DK1.8版本, 内存2GB或以上 , 硬盘空间 10GB或以上, 监视器 图形界面安装需要256色以上,字符界面安装没有色彩要求 ,浏览器 Microsoft …

Github 2024-01-27 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3Jupyter Notebook项目2非开发语言项目2JavaScript项目1Go项目1Rust项目1Shell项目1 Papers We Lo…

LeetCode.42. 接雨水

题目 题目链接 分析 读完本题以及结合题目给出的图我们可以很直观的看到,这道题目是让我们求形成凹槽的面积。 我们可以针对每一个数字形成凹槽的面积进行计算,然后相加数组每一个数字形成凹槽的面积即可。 那么问题来了,怎么知道一个数…

【GPU】GPU CUDA 编程的基本原理是什么?

【GPU】GPU CUDA 编程的基本原理是什么? 作者:董鑫 想学好 CUDA 编程, 第一步就是要理解 GPU 的硬件结构, 说到底, CUDA 的作用就是最大程度压榨出 NVIDIA GPU 的计算资源. 想要从零理解起来, 还有有些难度. 这里希望能够用最简单的方式把一些最基本的内容讲清楚.…

03 Redis之命令(基本命令+Key命令)

Redis 根据命令所操作对象的不同,可以分为三大类:对 Redis 进行基础性操作的命令,对 Key 的操作命令,对 Value 的操作命令。 3.1 Redis 基本命令 首先通过 redis-cli 命令进入到 Redis 命令行客户端,然后再运行下面的…

【Linux 基础】常用基础指令(上)

文章目录 一、 创建新用户并设置密码二、ls指令ls指令基本概念ls指令的简写操作 三、pwd指令四、cd指令五、touch指令六、rm指令七、mkdir指令八、rmdir 指令 一、 创建新用户并设置密码 ls /home —— 查看存在多少用户 whoami —— 查看当前用户名 adduser 用户名 —— 创建新…

【Uni-App】Vuex在vue3版本中的使用与持久化

Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 简而言之就是用来存数据,可以有效减少使用组件传参出现的问题。 基本元素:…

Java变量命名规则

目录 变量完整代码变量的声明变量的赋值变量的使用 变量的内存练习 分析 变量的作用域 变量 变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这…

青少年人工智能实验基地解决方案

1. 方案背景 1.1人工智能创新教育解决方案背景 人工智能已成为引领未来的新兴技术,中国将人工智能列为国家重点发展战略,对人工智能的发展做出了总体部署,全面加速人工智能在研发应用和人才培养的步伐。2021年1月教育部官网公布《关于政协十…