技术标签: RTOS uCOS 操作系统 时间片轮转 IT科普文
对于实时操作系统(RTOS)和非实时操作系统,你能分别列举出来多少?
实时操作系统:uCOS/VxWorks/RTLinux
非实时操作系统:Linux/Windows/OSX
我也只能列举出来这么多了。
重点不在这里,重点在于他们之间的区别,详见下图:
在上面的图中右边的任务优先级高于左边的任务,先看实时操作系统的,当优先级更高的任务2就绪的时候,即便任务1正在运行中,也必须立刻交出CPU的使用权,就跟中断一样,先执行任务2,等任务2执行完或者主动挂起(sleep)让出CPU的时候,任务1才能接着运行。
uCOS就是这样的实时操作系统,它是可抢占性的内核。我曾跟很多同事争辩过uCOS高优先级任务就绪而低优先级任务正在执行没有sleep的时候,高优先级任务能否打断低优先级任务而立即得到执行,遗憾的是很多人仍然坚持必须要sleep才能切换任务,每次我都只能无奈的用实验来证明这个本来不应该争辩的东西。
再看看我们的Linux/Windows/OSX这些基于时间片轮转的操作系统遇到这种问题的时候会怎么样呢,毫无疑问它们都是非实时的操作系统,CPU是不可抢占的,从上图可以看到,即便高优先级的任务就绪了,也不能马上中断低优先级任务而得到执行,必须要等到低优先级任务主动挂起(sleep)或者时间片结束才能得到执行。所以我们在使用PC的时候经常会遇到应用程序无响应的问题。即硬件资源被其他任务占用,本任务得不到立即执行。
我们平常娱乐办公用的都是非实时的操作系统,那么什么时候该使用实时操作系统呢?试想一下,一个射出的导弹如果要执行一个调整姿态的任务,这个时候刚好有其他无关紧要的任务在执行,如果是非实时操作系统,那么可能会等一会儿然后弹个窗告诉你应用程序无响应(如果它有窗可弹的话),那完了等弹窗出来导弹都射到外太空去了!毫无疑问这种高优先级任务片刻都不能等的设备就必须上实时操作系统,如果你不想你的导弹射到外太空去的话。
文章浏览阅读6.1k次。#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换#define KeyPort P1sbit LATCH1=P2^2;//定义锁存使能端口 段锁存sbit LATCH2=P2^3;// 位锁存bit Ke
文章浏览阅读118次。2017年,完成石家庄智慧城市云中心建设工作,完成部分部门数据中心(机房)的迁移整合和私有云部署。2019年,基本形成石家庄智慧城市云服务生态体系。到2019年底,石家庄市将建成以基础设施智能化、公共服务便捷化、城市管理精细化、决策支持科学化、产业经济高端化为支撑的智慧城市体系框架,城市信息化整体水平得到显著提升本报讯(记者王峻峰)提升城市信息基础设施...
文章浏览阅读377次。2012到来了,又来到了公司上班,以下是做VC开发的一些软件,希望对大家有帮助,一些是关于软件的一些链接:1. IDE:钟情于VC++6.0,但是也感觉Visual Studio2008和2010的强大,可能迟早得转到VS高版本上来。在安装VC++6.0的时候记得安装sp6补丁和msdn(MSDN_1.5_精简安装版 )2. 辅助:(1)Visual Assist,喜欢它代码自动补全
文章浏览阅读2.1k次。深度学习基础知识总结(不定时更新)目录1. 基础问题2. 防止过拟合有哪些方法3. 激活函数4. 优化方法5. 模型评估方法(针对目标检测)基础问题卷积中图像大小变化公式:imagesize=n×n×c,filters=f×f×c(channels)×number of filters,s(stride)=s,p(padding)=pimage size...
文章浏览阅读872次。转自:https://blog.csdn.net/hansry/article/details/749056731.李群与李代数基础三维旋转矩阵构成特殊正交群SO(3),而变换矩阵构成了特殊欧氏群SE(3):其中特殊正交群SO(3)和特殊欧氏群SE(3),对加法不封闭,而对乘法封闭。则有:群,是一种集合加上一种运算的代数结构,主要满足有:封闭性、结合律、幺元、逆等性质。...
文章浏览阅读497次。下载地址jdk 源码下载 sun包 native C源码下载地址
文章浏览阅读654次。注意事项只能用32bit的版本,64bit版本由于没有对应的libsmi,所以是不支持这个功能的.Wireshark设置正常安装wireshark版本, 2012-2-1本人采用的是稳定的1.6.5版本.安装完成后,打开"Edit"->"Preference"对话框, 点击左侧的"Name Resolution",然后将右侧的"Enable OID resol..._wireshark4 设置mib
文章浏览阅读1.3k次。这里可能存在一个先后的问题:1.先要在Window/show/other中打开Android相关视图,如file Explorer2.然后在启动Android模拟器成功启动。这时会看到android相关视图中出现信息。如果仍然看不到信息。可尝试重启Eclipse,或者更新ADT插件。本人的问题,是重启Eclipse就好了。今天又出现了
文章浏览阅读1.8k次。前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取Python免费学习资料、代码以及交流解答点击即可加入预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃。时间序列预测的需求不仅存在于各类业务场景当中,而且通常需要对未来几年甚至几分钟之后的时间序列进行预测。如果你正要着手进行时间序列预测,那么本文将带你快速掌握一些必不可少的概念。目录什么是时间序列? _python rolling mean
文章浏览阅读3.8k次。u3d中有一个碰撞器这么个组件。我个人认为它是u3d中物理触发这块的最根本的一个东西,非常的重要。下面我来说它里面Is Trigger。1、勾选它的 Is Trigger。它就可以穿插到其它的碰撞器中,这是它相当于一个触发器。相关事件在OnTriggerEnter 、OnMouseEnter 、OnTriggerExit 响应。1、不勾选它的Is Trigger这时的它才是一个
文章浏览阅读7.5k次。客户端是使用Vlc播放器,以下信息均为设备端收到和回应的信息第一步:查询服务器端可用方法(OPTION)1客户端请求(OPTION request):---询问服务器有哪些方法可用"OPTIONS rtsp://192.168.1.122/TestSession RTSP/1.0""CSeq: 2""User-Agent: LibVLC/1.1.9 (LIVE555 S
文章浏览阅读9.4k次,点赞4次,收藏11次。今天查看POSIX的API时候,发现里面有一行int pthread_create(pthread_t * restrict thread,const pthread_attr_t *restrictattr,void *(*start_routine)(void*),void*restrict arg);开始和不解为什么变量前面要加上restrict修饰符呢?restrict是限制